Fatální chyba v implementaci Javy (postižená je Java od Oracle stejně jako OpenJDK) zapříčiní nekonečnou smyčku, pakliže se JVM pokusí přečíst číslo 2.2250738585072012e-308. Škodlivý kód je velmi jednoduché vytvořit:
class runhang {
public static void main(String[] args) {
System.out.println("Test:");
double d = Double.parseDouble("2.2250738585072012e-308");
System.out.println("Value: " + d);
}
}
Tento program se zastaví na druhém řádku, kde se parsuje číslo, a nikdy neskončí. Není to "nic moc". Chyba musí být bleskurychle opravena. Zneužití je možné doslova na všech frontách. Postižené jsou například některé J2EE kontejnery, které je možné "shodit". Například Tomcat parsuje v hlaviččce Accept-Language parametr "q" jako Double. Takže lze prostě poslat něco jako:
$ curl -H "Accept-Language:cs;q=2.2250738585072012e-308" www.server.cz
No nic příjemného. To každopádně. Ale není to žádná tragedie.
Chyba v Javě umožňuje DoS útoky
February 3, 2011