PHP 5.4.3 i PHP 5.3.13 wydane z problemami

W ostatnich dniach pojawiło się małe zamieszanie przy okazji aktualizacji PHP. 3 maja wypuszczono wersje 5.4.2 i 5.3.12, poprawiające niewykrytą od 8 lat lukę w bezpieczeństwie, obecną w PHP pracującym w trybie CGI. Jak się jednak szybko okazało, nie rozwiązało to problemu i niektóre systemy nadal pozostały na nią podatne. Najnowsze wersje 5.4.3 oraz 5.3.13 mają już rozwiązywać ten problem całkowicie.

Na czym polega błąd CVE-2012-182 zgłoszony przez De Eindbazen’a? Jeśli PHP działa w trybie CGI (np. Apache mod_cgid), możliwe jest przekazywanie dodatkowych parametrów wykonania skryptu. Niestety, z powodu błędnego przetwarzania parametrów w URL, które nie zawierają znaku „=”, umożliwia to potencjalnemu intruzowi wykonanie wielu niebezpiecznych czynności. Jedną z nich może być na przykład wyświetlenie kodu przetwarzanego skryptu, czego można dokonać, używając parametru -s w następujący sposób:


http://localhost/index.php?-s

Parametr w postaci ?-s&=1 jest jednak całkowicie bezpieczny.

Po wydaniu poprawki 5.4.2 i 5.3.12, która miała rozwiązać problem okazało się, że część systemów bazujących na PHP w konfiguracji CGI jest nadal podatna na niebezpieczeństwo. Opublikowane 8 maja wersje PHP 5.4.3 i 5.3.13 powinny ostatecznie rozwiązywać ten problem.

Ci, którzy nie mogą dokonać aktualizacji, powinni do zabezpieczenia się wykorzystać odpowiednie reguły mod_rewrite Apache. Jak podano na php.net, można skorzystać z następującego rozwiązania:

RewriteCond %{QUERY_STRING} ^[^=]*$
RewriteCond %{QUERY_STRING} %2d|\- [NC]
RewriteRule .? - [F,L]

Należy jednak uważać, gdyż powyższe reguły mogą zablokować część poprawnych Urli (np. ?top-40). Z tego względu należy je przetestować i dopasować do swoich potrzeb.

Wersja PHP 5.4.3 dodatkowo rozwiązuje problem z przepełnianiem bufora w apache_request_headers() (CVE-2012-2329). PHP 5.3 nie jest podatne na ten błąd.

Dodaj komentarz