News

PHP Fehler für DoS-Angriff

Die Zahl 2.2250738585072011e-308 führt zu einer Endlosschleife. Der im Dezember 2010 festgestellte Fehler kann mit einem Bugfix behoben werden. In der Datei zend_strtod wurde die Zeile 2038 geändert, es wurde “volatile” hinzugefügt. In den PHP-Versionen 5.2.17 und 5.3.5 ist der Bug behoben.

 

Betroffen sind 32 Bit-Server seit PHP-Version 5.2.8 mit Intel CPU die x87 verwendet. Angreifer können den Server somit auf einfachster Weise mit einer DoS-Attacke lahm legen.

 

64 Bit-Systeme verwenden SSE und sind somit nicht betroffen.

 

Bugfix zend_strtod

alt:

Zeile 2038: double aadj, aadj1, adj;

 

neu:

Zeile 2038: volatile double aadj, aadj1, adj;

 

Mit einem Script kann man feststellen ob das System betroffen ist.

<?php
if (PHP_SAPI != 'cli') {
die("Please run this test from CLI!\n");
}
 ini_set('display_errors', 1);
ini_set('output_buffering', 0);
error_reporting(-1);

if (!ini_get('safe_mode')) {
set_time_limit(1);
}
 echo "Testing float behaviour. If this script hangs or terminates with an error "
. "message due to maximum execution time limit being reached, you should "
. "update your PHP installation asap!\n";
 echo "For more information refer to <http://bugs.php.net/53632>.\n";
 $d = (double)"2.2250738585072011e-308";
 echo "Your system seems to be safe.\n";
?>