[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


Archivio: Novembre 2004 ml@sikurezza.org
Soggetto: Re: [ml] overflow
Mittente: Gigi Sullivan
Data: Tue,  2 Nov 2004 10:54:42 +0100 (CET)
Woa!

On Mon, Sep 27, 2004 at 04:39:10PM +0200, Walter Valenti wrote:
> Quando si verifica un buffer overflow (su x86 !!) viene sovrascritto, parte
> dello stack ed registri vari tra cui,per esempio il Program Counter.
> Questo provochera' dal parte del kernel un SIGENV, ovvero il classico
> segmentation fault.

   Se il buffer overflow accade sullo stack, generalmente si mira a
   sovrascrivere l'indirizzo di ritorno li` salvato [1]. I registri non sono
   sovrascritti nel senso letterale del termine nel momento in cui si "rovina"
   lo stack; piuttosto possono venire modificati da istruzioni che accettano
   registri come operandi e che operano sullo stack (push/pop tipicamente, ma
   anche ret, che recupera il valore che c'e` al top dello stack, lo assegna
   al registro EIP e aggiusta lo stack pointer). 

   Se e` possibile sovrascrivere l'indirizzo di ritorno, allora si ha il pieno
   controllo dell'Instruction Pointer (registro eip: e` il program counter, ma
   viene chiamato cosi` su x86) in modo tale da farlo puntare in una zona di
   memoria contenente "codice arbitrario" (shellcode, egg, ... iniettato
   dall'attaccate) [2].

> Quando invece si riesce ad utilizzare l'overflow per scalare dei privilegi
> (tipicamente root) cosa avviene ??
> Il Program Counter viene fatto puntare a quelche "£shell code" all'inteno di
> stessa "pagina" di memoria o cosa ????

   La tecnica usata per eseguire il "codice arbitario" con i privilegi di root 
   o altro utente, non cambia. Se il processo vulnerabile ad attacchi di
   buffer overflow "gira" con i permessi di root, allora anche lo shellcode
   eseguito girera` con tali permessi.

   Consiglio il datato ma sempre ottimo, IMHO, articolo by aleph1 "Smashing
   the Stack for Fun and Profit", Phrack 49-14, reperibile da
   http://www.phrack.org/phrack/49/P49-14

   Condite abbondantemente con IMHO :)

> Grazie
> 
> 	Walter

bye,
GG sullivan
   

[1]   e` una generalizzazione; in realta` e` sufficiente sovrascrivere parte del
      Saved Frame Pointer (se presente) per poter sovvertire il flusso
      d'esecuzione del programma "vulnerabile", come mostrato da 
      klog in "Frame Pointer Overwriting", Phrack 55-8, reperibile da
      http://www.phrack.org/phrack/55/P55-08

[2]   discorso semplicistico; non e` detto che il codice sia stato iniettato
      dall'attaccante, ne` tantomeno che si trovi sullo stack ... ma va bene
      per capire il problema.

-- 
Lorenzo Cavallaro `Gigi Sullivan' <sullivan@xxxxxxxxxxxxx>

Until I loved, life had no beauty;
I did not know I lived until I had loved. (Theodor Korner)

See the reality in your eyes, when the hate makes you blind. (A.H.X)




[ Home | Liste | F.A.Q. | Risorse | Cerca... ]

www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005