[Security] Schwerer PHP-Fehler

Huschi

Moderator
Staff member
Lediglich kurz nach der Einstellung des Versionszweigs 5.2 ist ein wesentlicher neuer Fehler aufgetaucht:

Die Überführung der Zeichenkette "2.2250738585072011e-308" (u.ä.) in eine Gleitkommazahl (Dezimalzahl) lässt auf 32-Bit-Systeme das PHP-Script in einer Endlosschleife mit hoher CPU-Auslastung enden.
64-Bit-Systeme sind von diesem Fehler nicht betroffen. Der Fehler erscheint sowohl im aktuellen PHP 5.2.x inkl. 5.2.16 und 5.3.x. Die kommende Version 5.3.5 enthält den Fehler nicht mehr.
Für die 5.2-Version wurde lediglich nur noch ein Patch bereit gestellt. ich gehe davon aus, dass die Distributoren die Patches relativ schnell aufnehmen werden.

Betroffen ist nicht nur die interne PHP-Entwicklung, sondern auch die Verarbeitung von externen Parametern. Überall wo Zahlen übergeben werden sollen, erfolgt diese Umwandlung. Bei einem einfachen Währungsumrechner, in einem Shop-System, etc. Als mögliche Angriffspunkte kommen also viele Arten von Anwendungen in Frage, die einfach mit einem falschen Parameter gefüttert, den gesamten Server gefährden.

Quelle: http://www.heise.de/newsticker/meldung/DoS-Angriff-mit-Gleitkommazahl-1163658.html
 

Thorsten

SSF Facilitymanagement
Staff member
Mit dem folgenden Script kann getestet werden, ob eure eingesetzte PHP Version betroffen ist:
PHP:
<?php
/*
  +----------------------------------------------------------------------+
  | PHP Version 5                                                        |
  +----------------------------------------------------------------------+
  | Copyright (c) 2011 The PHP Group                                     |
  +----------------------------------------------------------------------+
  | This source file is subject to version 3.01 of the PHP license,      |
  | that is bundled with this package in the file LICENSE, and is        |
  | available through the world-wide-web at the following url:           |
  | http://www.php.net/license/3_01.txt                                  |
  | If you did not receive a copy of the PHP license and are unable to   |
  | obtain it through the world-wide-web, please send a note to          |
  | license@php.net so we can mail you a copy immediately.               |
  +----------------------------------------------------------------------+
  | Author: Johannes Schlueter <johannes@php.net>                        |
  +----------------------------------------------------------------------+
*/

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";
?>

mfG
Thorsten
 
Top