PHP sérülékenységek

CH azonosító

CH-381

Felfedezés dátuma

2007.02.09.

Súlyosság

Közepes

Érintett rendszerek

PHP
PHP Group

Érintett verziók

PHP Group PHP 4.4.x, 5.1.x, 5.2.x

Ö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.

  1. A “safe_mode” és “open_basedir” védelmi mechanizmusok megkerülhetők a session kiterjesztés alkalmazásával.
  2. A session kiterjesztés túlcsordulásos hibáit kihasználva számos túlcsordulásos hiba kihasználható.
  3. 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.
  4. Határhibák a “stream filter”-ekben kihasználhatók puffer túlcsordulás előidézésére.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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ó.
  13. 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.
  14. 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ó.
  15. 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.
  16. 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é.
  17. 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.
  18. 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.
  19. 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.
  20. 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ó.
  21. 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.
  22. 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é.
  23. 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.
  24. 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.
  25. 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óra