
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
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