[linux] Stack v C
Lubomir Host
rajo na platon.sk
Úterý Květen 2 21:54:52 CEST 2006
On Tue, May 02, 2006 at 07:56:00PM +0200, Peter Fodrek wrote:
> Zdravim!
>
> Prosim Vas o radu
> Brat dostal uloha pristupovat k premennym v C nie cez ich mena, ale cez ich
> poziciu na stack-u a zmanipulovat stack. (cez int *=0x..... cize cez adresu
> v RAM to viem, ale nejaky manual co by to robil cez stack som nenasiel- okrem
> mne nie velmi vyhovujuceho assembler-u cez pop a push)
Zdravim,
ja by som mal poznamku/otazku z hladiska bezpecnosti a vlastne aj
uzitocnosti takejto ulohy.
Ucel takejto ulohy moze byt jedine pedagogicky. Ziak by mal pochopit,
ako sa ukladaju premenne na stack. Citat premenne takymto pristupom je
sice mozne a zmysluplne, ale zapis nie. Kvoli nasledujucemu
bezpecnostnemu obmedzeniu:
Existuje patch pre linuxove jadro volajuci sa GrSecurity
http://grsecurity.net/features.php . Ten rozdeluje pamatove stranky
mapovane do pamati na 2 skupiny:
- read-only executable - odtial mozno asemblerovsky kod spustat, kedze tieto
pamatove stranky su priamo nacitane z disku (kniznice, ELF binarky)
- read-write non-executable - do tychto pamatovych stranok mozno
zapisovat, ale nemozno z nich asemblerovsky kod spustat. Tieto stranky
su napr. dynamicky alokovane za behu programov
Zaver je taky, ze program, ktory by mal zapisovat do premennych
ulozenych v stacku by nefungoval na serveroch pouzivajucich takto
patchnute jadro a skoncil by s chybu typu SIGSEGV - segmentation fault.
Z hladiska bezpecnosti je jeden z prinosov (okrem inych) zvysenie
bezpecnosti servera proti utokom typu buffer overflow (znamym aj
BUDUCIM), kedy sa cielene prepise navratova adresa z funkcie ulozena
v stacku.
Popis tychto technik je napr. v knihe Linux - bezpecnost a exploity od
M Dobsiceka a R. Ballnera, vydavatelstvo Kopp Ceske Budejovice, 2004.
Ak sa mylim, tak ma opravte.
rajo
--
Lubomir Host 'rajo' <rajo AT platon.sk> ICQ #: 257322664 ,''`.
Platon Group http://platon.sk/ : :' :
Homepage: http://rajo.platon.sk/ `. `'
http://www.gnu.org/philosophy/no-word-attachments.html `-
Další informace o konferenci linux