Apple Facebook Google Microsoft badania bezpieczeństwo patronat DI prawa autorskie serwisy społecznościowe smartfony

Wystarczy do zmiennej przypisać wartość 2.2250738585072011e-308, a możemy stać się świadkami przeciążenia systemu. Problem dotyczy PHP 5.2 i 5.3.

O błędzie występującym przy przetwarzaniu liczb zmiennoprzecinkowych można przeczytać m.in. na stronie Exploring Binary (zapisanie wskazanej liczby w inny sposób, np. 0.22250738585072011e-307 albo 22.250738585072011e-309, powoduje ten sam problem). Jak w serwisie Niebezpiecznik.pl wyjaśnia Piotr Konieczny:

Za DoS w PHP odpowiedzialna jest funkcja zend_strod() konwertująca liczby zmiennoprzecinkowe. Wprowadza ona systemy Linux, Windows i FreeBSD w nieskończoną pętlę. Na atak podatne są architektury wykorzystujące koprocesor FPU z zestawem instrukcji x87 (o ile PHP nie skompilowano z flagami: -mfpmath=sse lub -ffloat-store, bo tak naprawdę całemu złu winny jest bug w gcc).

>> Czytaj więcej w Niebezpieczniku: Poważny błąd w PHP, setki serwisów podatnych na ataki DoS

Wysłanie feralnej liczby jako parametru w wywołaniu GET może skutkować zawieszeniem wielu popularnych aplikacji napisanych w PHP, np. forum phpBB. Jak słusznie zauważył jeden z naszych Czytelników, systemy 64-bitowe (które zamiast koprocesora x87 używają zestawu instrukcji SSE) nie są podatne na omawiany błąd.

Problem został wyeliminowany w świeżo udostępnionych wersjach PHP 5.2.17 i 5.3.5, które można pobrać ze strony php.net.

>> Czytaj także: PHP a bezpieczeństwo – poradnik początkującego programisty


Aktualności | Porady | Gościnnie | Katalog
Bukmacherzy | Sprawdź auto | Praca


Artykuł może w treści zawierać linki partnerów biznesowych
i afiliacyjne, dzięki którym serwis dostarcza darmowe treści.

              *