PHP: Rechenaufgabe legt Server lahm (Update)

Durch die fehlerhafte Verarbeitung der 64-Bit-Gleitkommazahl 2.2250738585072011e-308 ist es in der Scriptsprache PHP möglich, einen Denial of Service – kurz DoS – zu provozieren. Der Fehler wurde von Rick Regan(öffnet im neuen Fenster) entdeckt. Schuld ist eine rechnerische Annäherung an die Gleitkommazahl. Bei einem Angriff muss die Zahl lediglich als numerischer Wert übergeben werden.
Laut Nutzerkommentaren sind die PHP-Versionen 5.3.3-6, 5.3.2-1 und 5.3.1 betroffen. Ein Update steht noch nicht zur Verfügung. Bislang bleibt vermutlich nur die Möglichkeit, den Fehler selbst zu umgehen: Dazu muss PHP laut Anwenderberichten(öffnet im neuen Fenster) mit dem Parameter -mfpmath=sse oder mit -ffloat-store neu kompiliert werden. Der Fehler ist bereits im Bug-Tracker von PHP(öffnet im neuen Fenster) vermerkt.
Nachtrag vom 4. Januar 2011, 20:05 Uhr
Laut PHP-Entwickler Rasmus Lerdorf(öffnet im neuen Fenster) geht das Problem auf einen alten Designfehler(öffnet im neuen Fenster) in Intels x87-Design(öffnet im neuen Fenster) zurück. Demnach tritt das Problem bei Prozessoren mit einer x87 FPU (Floating Point Unit) auf, wenn nicht explizit die Verwendung von SSE oder Float-Store erzwungen wird.
Nachtrag vom 5. Januar 2011, 08:10 Uhr
Nach Angaben des PHP-Entwicklers Scott MacVicar wurde der Bug mittlerweile im SVN-Repository von PHP beseitigt. Aktuelle PHP-Snapshots stehen unter snaps.php.net(öffnet im neuen Fenster) zum Download bereit.



