Denial of Service: Floating-Point-Bug auch in Java
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(ö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.
Laut einem Kommentar von Preißer auf Exploitbinary.com(öffnet im neuen Fenster) 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.
- Anzeige Hier geht es zum Handbuch für Softwareentwickler bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.


