Stack buffer overflow

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Listopad 27 18:14:38 CET 2004


On Fri, 26 Nov 2004, Jirka Kosina wrote:

> Pokud chcete porozumet tomu jak se nastavuje tento randomizovany zasobnik, 
> doporucuji podivat se do zdrojaku kernelu na funkci create_elf_tables().
> Viz fs/binfmt_elf.c:
> 
> 	sp = (void *) (u_platform - (((current->pid+jiffies) % 64) << 7)); 

Tohle afaik neni randomizace kvuli zvyseni bezpecnosti, ale kvuli tomu,
aby se rozprostrelo vytizeni kese, ktera neni nutne vzdycky plne 
asociativni, takze kdyz by vsichni jeli se zasobnikem na stejne adrese, 
tak by nektere cache lines stresovali vic nez jine, takze cast kese
by se mohla zblaznit, zatimco jina cast by lezela ladem.

> * Pro lokalni exploity na kernelech s exec shieldem je daleko pohodlnejsi 
> nez pracne hledat shellcode ve stacku a radeji umistete svuj shellkod do 
> *argv[] nebo do environmentove promenne - jejich adresy se nemeni, protoze 
> 'vypln' se na stack dava az za ne.

Kdyby opravdu slo o bezpecnost, nebyl by problem randomizovat i umisteni
hodnot z argv[] a envp[] (a take zvolit mene predikovatelnou
pseudonahodnou funkci s mnohem vetsim rozsahem hodnot).

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux