ugrás a tartalomhoz

PHP 4.2.2 - fontos biztonsági javítás!

Granc Róbert · 2002. Júl. 23. (K), 14.33
Közlemény kibocsátva: 2002. július 22.
Érintett szoftverek: PHP 4.2.0 és 4.2.1
Platformok: Mind

A PHP Csoport komoly biztonsági sebezhetőségre bukkant a PHP 4.2.0 és 4.2.1 változatokban, amely eredményeként egy behatoló akár tetszőleges kódot is futtathat a webkiszolgáló jogosultságaival. A sebezhetőséget a webkiszolgáló kompromittálására, illetve bizonyos körülmények között jogosultságok megszerzésére is kihasználhatják illetéktelenek.

A PHP intelligens módon elemzi a HTTP POST lekérések fejléceit. A kód a böngésző által küldött "multipart/form-data" lekérések változóit és fájljait választja szét, ám hiányos a bemeneti ellenőrzése, ez vezet sebezhetőséghez.

A sebezhetőséget bárki kihasználhatja, aki HTTP POST lekéréseket tud küldeni az érintett webkiszolgálónak. Mind helyi, mind távoli felhasználók szerezhetnek így jogosulatlan hozzáférést a kiszolgálón, akár tűzfal mögött is.

A 32 bites IA platformokon (azaz Intel vagy AMD processzorú gépeken) a sebezhetőséget nem lehet kihasználni, ugyanis az architektúra felépítése (a stackek kiosztása) folytán ellenőrizhetetlen, hova kerül az inicializálatlan kódrész. Ennek eredményeként az IA32 platformon az nem fut le, viszont nagy valószínűséggel összeomlasztja a PHP-t, és gyakran a webkiszolgálót is.

A PHP csoport a sebezhetőség elhárítására új PHP verziót tett közre, és nyomatékosan felhívja a PHP 4.2.0 és 4.2.1 változatok használóit, hogy frissítsenek a hibát javító 4.2.2 változatra. Mind a forráskód, mind a windows telepítő, valamint a patchek letölthetőek a php.net oldalról, illetve magyarországi tükörszerverekről, a hu.php.net és a hu2.php.net címekről.

Ha az érintett webkiszolgálón futó PHP alkalmazások nem követelnek HTTP POST adatokat a felhasználóktól, akkor egyszerűen megoldható a POST lekérések letiltása a szerveren. Az Apache kiszolgáló esetében ez például a következő kóddal lehetséges, amelyet a konfigurációs állományban, vagy egy legfelső szintű .htaccess fájlban kell elhelyezni:
<Limit POST>
         Order deny,allow
         Deny from all
      </Limit>

A PHP Csoport megköszöni Stefan Essernek, az e-matters GmbH munkatársának a sebezhetőség felfedezését és a PHP Csoport azonnali értesítését.

A PHP.net bejelentése

Az e-matters eredeti biztonsági tanácsadója