PHP 5.3.12 i PHP 5.4.2

PHP 5.3.12 i PHP 5.4.2

    przez -
    1 239
    PHP
    Wydano PHP 5.3.12 i PHP 5.4.2, obiektowy i skryptowy język programowania zaprojektowany do generowania stron internetowych w czasie rzeczywistym. PHP jest najczęściej stosowany do tworzenia skryptów po stronie serwera www, ale może być również używany do przetwarzania danych z poziomu wiersza poleceń, a nawet do pisania programów pracujących w trybie graficznym.

    Kilka dni temu odkryto dość poważną lukę w serwerach wykorzystujących mod_cgi (Apache+mod_php i nginx+php-fpm nie są podatne na to), która najpewniej istniała prawie 8 lat, ale dopiero teraz komuś udało się to wykorzystać. Część systemów wspiera metodę na dostarczanie tablicy stringów do skryptu CGI. Jest to głównie używane w przypadku zapytań korzystających z indeksu. Jest to identyfikowane poprzez żądanie HTTP: GET i HEAD, razem z ciągiem wyszukiwania adresu URL, nie zawierającego żadnych niekodowanych znaków “=”.

    Zatem żądania, które nie posiadają “=” w ciągu zapytania, są traktowane inaczej od tych, które są w niektórych implementacjach CGI. Dla PHP oznacza to, że żądanie zawierające ?-s, może zrzucić kod źródłowy strony, natomiast żądanie ?-S & = 1 jest już w porządku.

    Duża liczba stron posiada uruchomionego PHPa, jako moduł poprzez mod_php lub php-fm pod nginx. Instalacje te nie są narażone na wspomnianą wyżej lukę. Aby sprawdzić, czy nasza strona posiada owy problem, wystarczy na końcu swojego adresu URL dopisać to wyrażenie: ?-s. Jeżeli zobaczymy nasz kod źródłowy, tzn że jesteśmy podatni na atak.

    Sposobów na zabezpieczenie się jest kilka. Jednym z nich jest aktualizacja PHP do najnowszych wersji, ponieważ sporo stron jest uruchomionych na starych wersjach, co stwarza również inne zagrożenia. Drugim sposobem jest dodanie wyjątku dla Apache z mod_rewrite:

    RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
    RewriteRule ^(.*) $1? [L]