Denial of Service
Floating-Point-Bug auch in Java
Durch einen Fehler beim Konvertieren einer Gleitkommazahl kann ein Denial of Service in Java ausgelöst werden. Der Floating-Point-Bug war zuvor auch in PHP möglich.

Durch die fehlerhafte Verarbeitung der 64-Bit-Gleitkommazahl 2.2250738585072012e-308 ist es in Java möglich, einen Denial of Service (DoS) zu provozieren. Der Fehler ist von dem Studenten Konstantin Preißer entdeckt worden. Schuld daran ist die Konvertierung der Gleitkommazahl. Betroffen sind auch die 64-Bit-Varianten.
Vorher war bekanntgeworden, dass PHP von dem Floating-Point Bug betroffen ist. Hier konnte die Gleitkommazahl ebenfalls einen Denial of Service auslösen, was jedoch zügig gepatcht wurde. Das Problem geht auf einen bekannten Fehler in Intels x87-Design 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.
Laut einem Kommentar von Preißer auf Exploitbinary.com hatte er den Fehler schon vor drei Wochen an Oracle gemeldet, der Konzern hatte aber nicht darauf reagiert.
Rekonstruieren lässt sich der Fehler sowohl im Compiler des aktuellen JDK als auch in Java-Programmen. Durch das Konvertieren der Gleitkommazahl mit Double.parseDouble trete in der Java-Klasse FloatingDecimal.java eine Endlosschleife auf, schreibt Preißler. Ein Patch von Oracle steht bislang aus.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Danke für die Hinweise. Im Eifer... Wir haben die Fehler korrigiert.