[Warning] Java (JRE/JDK) Schwachstelle kann zur Endlosschleifen (DOS) führen

L. Aaron Kaplan kaplan at cert.at
Wed Feb 9 17:30:24 CET 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



   Sicherheitslücke in Sun/Oracle Java (JRE/JDK) führt zu Endlosschleifen
   und ermöglicht somit einen Denial of Service (DOS) Angriff - CERT.at
   ersucht daher um Beachtung der folgenden Meldung.

Beschreibung

   [1]Oracle warnt vor einer kritischen Sicherheitslücke in Java
   (JRE/JDK), die es Angreifern erlaubt, Java-basierte Programme in eine
   Endlosschleife zu manövrieren.
   Durch Eingabe von "2.2250738585072012e-308" und anschliessendem
   Konvertieren in einen double Wert kann ein Java-basiertes Programm in
   eine Endlosschleife gelangen. Die CPU ist in diesem Fall dann
   vollkommen ausgelastet und das Programm bleibt effektiv aus
   Benutzersicht "stehen".

   Besonders leicht läßt sich dies auf Java-basierten Servern (Tomcat,
   JBoss) erreichen, indem man von einem beliebigen Rechner am Internet
   eine entsprechend präparierte HTTP Anfrage sendet.

   Mittlerweile ist bekannt, dass die Verwundbarkeit mit einigen Varianten
   der Zahl auftritt:
     * 0.00022250738585072012e-304 (Dezimalpunkt)
     * 00000000002.2250738585072012e-308 (führende Nullen)
     * 2.225073858507201200000e-308 (Nullen am Ende)
     * 2.2250738585072012e-00308 (führende Nullen im Exponenten)
     * 2.2250738585072012997800001e-308 (extra Ziffern nach Ziffer #17)

   Es ist nicht ausgeschlossen, daß es nicht noch andere Varianten gibt.

Hintergrund

   Bei der Konvertierung des Zeichestrings "2.2250738585072012e-308" (und
   obiger Varianten) gerlangt Java in eine Endlosschleife und die
   Konvertierung oszilliert zwischen 0x1p-1022 (DBL_MIN) und
   0x0.fffffffffffffp-1022.

   Zum ersten Mal ist das Problem bei PHP bekannt geworden, anschliessend
   [2]entdeckte Konstantin Preißer, dass die Verwundbarkeit auch auf Java
   funktioniert.

Auswirkungen

   Jedes Java-basierte Programm als auch das Java Development Kit (JDK),
   das Double Werte extern einliest (z.B.: Internet User Input) und
   verarbeitet, kann in eine Endlosschleife gelangen (Denial Of Service
   Attacke).

Betroffene Systeme

   Es sind sowohl Java-basierte Server (Tomcat, JBoss) als auch Java
   Desktop Applikationen betroffen.

     * Java SE

     * JDK und JRE 6 Update 23 und vorhergehende Versionen für Windows,
       Solaris und Linux
     * JDK 5.0 Update 27 und vorhergehende Versionen für Solaris 9
     * SDK 1.4.2_29 und vorhergehende Versionen für Solaris 8

     Java for Business
     * JDK und JRE 6 Update 23 und vorhergehende Versionen für Windows,
       Solaris und Linux
     * JDK und JRE 5.0 Update 27 und vorhergehende Versionen für Windows,
       Solaris und Linux
     * JDK und JRE 1.4.2_29 und vorhergehende Versionen für Windows,
       Solaris und Linux

   Die Sicherheitslücke betrifft sowohl 32-bit als auch 64-bit Systeme.

   CERT.at vermutet, daß Java-basierte Smartphones genauso von der
   Sicherheitslücke betroffen sind.

Abhilfe

   Oracle bietet einen [3]Hotfix an. Ein reguläres Update soll laut Oracle
   am 15.Februar erscheinen.

   CERT.at empfiehlt Webserver-Betreibern auch in der Zwischenzeit -
   soferne möglich - mittels Regular Expressions am Webserver nach HTTP
   "Accept-Language .*;q=2.225073858507.*" zu filtern und entsprechende
   HTTP Anfragen an Java-basierte Server (Tomcat, JBoss) zu blockieren.
   Unter Apache geht dies zum Beispiel mit mod_header. Dieser (mod_header)
   Filter mittels Regular Expressions ist allerdings nur als schnelle
   Lösung gegen automatisierte Angriffe zu sehen. Java sollte trotz
   Regular Expression Filtern gepatcht werden.

  mod_header Filter

   [4]Mod_header Dokumentation

   Einschalten von mod_header: LoadModule headers_module
   /usr/lib/apache2/modules/mod_headers.so

   In der VirtualHosts Konfiguration:
(...)
RequestHeader edit Accept-Language 5073858507 5073858508 early
RequestHeader edit Accept-Charset 5073858507 5073858508 early
RequestHeader edit Accept-Encoding 5073858507 5073858508 early
RequestHeader edit Accept 5073858507 5073858508 early
(...)

Hinweis

   Generell empfiehlt CERT.at, wo möglich die "automatisches
   Update"-Features von Software zu nutzen, parallel Firewall-Software
   aktiv und den Virenschutz aktuell zu halten.
     __________________________________________________________________

   Informationsquelle(n):
   Warnung von Oracle
   [5]http://www.oracle.com/technetwork/topics/security/alert-cve-2010-447
   6-305811.html
   Hotfix von Oracle
   [6]http://www.oracle.com/technetwork/java/javase/fpupdater-tool-readme-
   305936.html
   Original-Post von Konstantin Preisser
   [7]http://www.exploringbinary.com/why-volatile-fixes-the-2-225073858507
   2011e-308-bug/comment-page-1/#comment-4645
   Meldung bei Heise
   [8]http://www.heise.de/security/meldung/Oracle-warnt-vor-Java-Schwachst
   elle-1185967.html

References

   1. http://www.oracle.com/technetwork/topics/security/alert-cve-2010-4476-305811.html
   2. http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/
   3. http://www.oracle.com/technetwork/java/javase/fpupdater-tool-readme-305936.html
   4. http://httpd.apache.org/docs/current/mod/mod_headers.html
   5. http://www.oracle.com/technetwork/topics/security/alert-cve-2010-4476-305811.html
   6. http://www.oracle.com/technetwork/java/javase/fpupdater-tool-readme-305936.html
   7. http://www.exploringbinary.com/why-volatile-fixes-the-2-2250738585072011e-308-bug/comment-page-1/#comment-4645
   8. http://www.heise.de/security/meldung/Oracle-warnt-vor-Java-Schwachstelle-1185967.html


- --
L. Aaron Kaplan
http://www.cert.at
kaplan at cert.at
Tel: +43 1 505 64 16 / 78

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (Darwin)

iEYEARECAAYFAk1SwSQACgkQLXqZes2uTbbHQACfcDydBK4+Iz0X1DeU22bM8XV5
q/MAn3uG/cbMkWJ+DzvLzq3iAWJa9msf
=U8od
-----END PGP SIGNATURE-----



More information about the Warning mailing list