Összefoglaló
Számos sérülékenységet jelentettek a PHP-ban. Egyes sérülékenységek hatása ismeretlen, míg a többit kihasználva támadók érzékeny információkhoz juthatnak, megkerülhetnek bizonyos biztonsági korlátokat,szolgáltatás megtagadást okozhatnak vagy föltörhetik a sebezhető rendszert.
Leírás
Számos sérülékenységet jelentettek a PHP-ban. Egyes sérülékenységek hatása ismeretlen, míg a többit kihasználva támadók érzékeny információkhoz juthatnak, megkerülhetnek bizonyos biztonsági korlátokat,szolgáltatás megtagadást okozhatnak vagy föltörhetik a sebezhető rendszert.
- A “safe_mode” és “open_basedir” védelmi mechanizmusok megkerülhetők a session kiterjesztés alkalmazásával.
- A session kiterjesztés túlcsordulásos hibáit kihasználva számos túlcsordulásos hiba kihasználható.
- Pufffer túlcsordulásos hibák, néhány közülük verem túlcsordulás, vannak a “zip”, “imap”, és “sqlite” (PHP 5) kiterjesztésekben.
- Határhibák a “stream filter”-ekben kihasználhatók puffer túlcsordulás előidézésére.
- Egy egész túlcsordulásos hibát kihasználva az “str_replace()” függvényben, a memória lefoglalásakor, hibát lehet előidézni. Ez tetszőleges kód futtatását teszi lehetővé hosszú, megbízhatatlan forrásból származó stringek feldolgozásakor.
- Numerikus kulcsot tartalmazó, rosszindulató WDDX adatok importálásakor meghívva a “php_set_session_var()” függvényt véletlenszerű memória tartalomfedhető fel.
- A print() függvények egy segéd függvényének hibás 32 bites csonkítását kihasználva megváltoztatható a memória tartalma vagy formátum string hiba okozható 64 bites rendszereken.
- A “mail()”, “ibase_add_user()”, “ibase_delete_user()”, és “ibase_modify_user()” függvények határhibáit ki lehet használni puffer túlcsorduláshoz.
- Az “odbc_result_all()” függvény formátum string hibáját kihasználva tetszőleges kód futtatható, amennyiben a támadó irányítást szerzett az használt adatbázis tábláinak tartalma felett.
- Az “imap_mail_compose()” függvény egy hibáját kihasználva verem túlcsordulás idézhető elő , ami tetszőleges kód futtatását teszi lehetővé, ha a függvényt megbízhatatlan forrásból származó bemenetet használnak egy új MIME üzenet létrehozásához.
- 64 bites rendszereken a “zend_hash_init()” függvény hibáját kihasználva szolgáltatás megtagadás idézhető elő a processzor leterhelésével, a script automatikus leállításáig, megbízhatatlan forrásból származó adat feldolgozásakor előidézett végtelen ciklussal.
- Az “unserialize()” függvény ZVAL struktúrák kezelésekor föllépő hibáját kihasználva megváltoztatható a memória tartalma és tetszőleges kód futtatható.
- A munkamenet sorosítás kezelő “php_binary” határhibáját kihasználva felfedhető a futási időben dinamikusan kezelt memória tartalma.
- A megosztott memóriát kezelő (shmop) függvények erőforrás azonosítóinak ellenőrzésében lévő hibákat kihasználva tetszőleges memória tartalom írható vagy olvasható.
- A PHP 5 “zip” kiterjesztésének határhibáit kihasználva verem túlcsordulás idézhető elő, ha túl hosszú stringet adnak át a “zip:” URL burkolónak. Ez összefügghet a 3. sebezhetőséggel.
- Ha az ext/filter “FILTER_SANITIZE_STRING” szűrőjét a “FILTER_FLAG_STRIP_LOW ” jelzővel használják, megkerülhető a szűrés bizonyos ASCII karakterek nyitó zárójel után helyezésével. Ez pl. cross-site scripting támadást tesz lehetővé.
- Az FDF (ext/fdf) kiterjesztés nem hívja meg jól a bemenet szűrő hookokat. Amennyiben a PHP-t FDF támogatással fordították, ezt ki lehet használni az ext/filter bemenet szűrés megkerülésére application/vnd.fdf formátumban küldött POST adatokkal.
- Az ext/filter “FILTER_VALIDATE_INT” szűrőjében található puffer alulcsordulást kihasználva tetszőleges kód futtatható, de ehhez big-endiant használó rendszerre lehet szükség.
- A PHP 5.2.0 “header()” függvény “white space” (szóköz és vezérlő) karakterek levágásakor jelentkező hibáját kihasználva megváltoztatható a memória tartalma és tetszőleges kód futtatható big-endiant használó rendszereken.
- A session kiterjesztés hash táblázat kezelésének hibáját kihasználva kicserélhető a munkamenet változóinak hash táblázata és tetszőleges kód futtatható.
- A munkamenet adatok deszerializálásakor föllépő hibát kihasználva globális változók (pl. a “_SESSION” tömb) írhatók felü, ha a “register_globals” engedélyezve van.
- A PHP 4 “zip_read_entry()” függvényének egész túlcsordulásos hibáját kihasználva halom túlcsordulás idézhető elő, “-1”-es hossz paraméter küldésével. Sikeres kiaknázás tetszőleges kód futtatását teszi lehetővé.
- A PHP 5 “php_stream_filter_create()” függvény “off-by-one” hibáját kihasználva túlcsordulás okozható pl. egy “php://filter” URL segítségével.
- A “msg_receive()” függvény egy egész túlcsordulásos hibáját kihasználva halom túlcsordulás okozható a “maxsize” paraméterrel. A jelentések szerint a Linuxon futó PHP nem érintett, de pl. a FreeBSD-n futó igen.
- A PHP 5.2.0 Zend Memory Manager egy hibáját jelentették egy hossz méret érték hozzárendelésekor egy előjeles long típusú változóhoz. Ezt kihasnzálva puffer túlcsordulás okozható pl. a PHP HTTP SOAP klienssel.
Egyéb hibákat is jelentettek, amiknek lehetnek biztonsági következményei.
Figyelem: Egyes sérülékenységeket távolról is ki lehet használni.
Megoldás
Frissítsen a legújabb verzióraTámadás típusa
Information disclosure (Információ/adat szivárgás)Input manipulation (Bemenet módosítás)
Unknown (Ismeretlen)
Hatás
Loss of availability (Elérhetőség elvesztése)Loss of confidentiality (Bizalmasság elvesztése)
Loss of integrity (Sértetlenség elvesztése)
Szükséges hozzáférés
Local/Shell (Helyi/shell)Remote/Network (Távoli/hálózat)
Hivatkozások
SECUNIA 24089
Gyártói referencia: www.php.net