next up previous index
Következő: 5.9.7.3.3 Symlink attack Fel: 5.9.7.3 Belső támadások elleni Előző: 5.9.7.3.1 Fork bomba   Index

5.9.7.3.2 Buffer overflow (stack overflow)

Ha programozási hiba folytán egy adott buffer méretén 'túlírható', akkor a tömböt tartalmazó függvény visszatérési címe (a stack-en a buffer után vége után tárolódik) átírható. Ennek oka az, hogy a C compilerek fordításkor nem figyelik a tömbhatár-túllépés lehetőségeit, illetve léteznek olyan függvények, melyek a bufferbe írás során nem ellenőrzik annak méretét. Ez nem lenne gond, mert minden ilyen függvénynek létezik biztonságos (a tömbhatárokat ellenőrző) változata, csakhogy könnyű a rosszabb megoldást választani.

Így azokon a rendszereken, ahol a stack futtatható, érdekes dolgokat művelhetünk (pl. a futó program jogaival shell hívható a visszatérési cím egy 'exec(,,/bin/sh''...)'-ra állításával). Ha a program setuid/setgid-es, akkor az kód, amire a visszatérési cím mutat, örökli a futó program jogait, tehát pl. az előbbi esetben egy setuid-es shell-t kaphatunk.

Súlyosabb a helyzet, ha az adott program egy hálózati kiszolgáló, mert bizonyos esetekben a hiba távolról is kihasználható, lehetőséget adva ezzel bárkinek a jogosulatlan hozzáféréshez.

A programozói gondatlanság ellen védelmet nyújt a StackGuard, amely egy GCC (GNU C Compiler) kiterjesztés. Érdemes használni, főként, ha valaki setuid-es programot fejleszt, de ha nem bízunk egy más által fejlesztett programban, az is újrafordítható vele.

Solar Designertől származik egy kernel patch, amely korlátozott mértékben védelmet nyújt a stack futtathatóságát kihasználó támadások ellen, de létezik módszer a megkerülésére.

A legjobb védekezés tehát a setuid/setgid-es programok ellenőrzése, valóban kell-e az nekik. Vannak programok, amelyeknek a korrekt működéshez kell, de néhánynak nem. Ezekről vegyük le. Néhány program futtatása biztonságosabb, ha valamilyen wrapper-t használunk, amely megnehezíti a hibák kihasználását.


next up previous index
Következő: 5.9.7.3.3 Symlink attack Fel: 5.9.7.3 Belső támadások elleni Előző: 5.9.7.3.1 Fork bomba   Index

1999-09-17