大多数未打补丁的 Tomcat Web 服务器都容易受到攻击,这是谁的错呢? [关闭]

2023-12-26

大多数 Java JVM 都会受到非常严重的拒绝服务攻击(所有 1.6.0_24 之前的 Oracle/Sun JVM [在撰写本文时尚未推出],而且昨天还没有发布 HotFix,因为例子)。

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

下列:

curl -H 'Accept-Language: en-us;q=2.2250738585072012e-308' http://example.org

崩溃了lot全球 Tomcat 网络服务器的数量。

我的问题很简单:谁对谁错?

显然getLocale()称(非常严重)被窃听Double.parseDouble(...)然后您可以轻松地在 Tomcat 上执行拒绝服务。

是否有错误的实施Double.parseDouble(...)真的有错吗?

对我来说,真正的问题是 HTTP 规范使用浮点数来实现对我来说看起来不太像科学计算的东西。使用浮点数来处理这样的事情似乎很奇怪:很容易证明不同语言的实现会产生不同的结果。

那么到底是谁的错呢?

Java 的极其蹩脚(bug 10 年来就为人所知)的实现Double.parseDouble(...)?

HTTP 规范? (请记住,PHP 也遇到了完全相同的错误)。

我可以理解,如果一种语言发生这种情况,你会责怪语言......但是当两种远程语言发生时拒绝服务由于 HTTP 规范规定对浮点数进行解析,因此两种不同的语言都会发生攻击not科学计算应该敲响警钟。

浮点数应该只用于科学计算。如果您没有浮点数也没有 epsilon,那么您就做错了。


实际上,rfc 2616(HTTP/1.1 规范)说:

HTTP/1.1 应用程序不得在后面生成超过三位的数字 小数点。这些值的用户配置也应该是 以这种方式受到限制。

qvalue    = ( "0" [ "." 0*3DIGIT ] )
          | ( "1" [ "." 0*3("0") ] )

“质量价值观”是一个用词不当,因为这些价值观仅仅代表 所需质量的相对下降。

请注意,这限制了位数并且不允许使用指数。我认为任何实现都完全符合规范,忽略具有超过 3 个小数位的输入,并完全忽略任何具有指数值的内容。事实上 Tomcat 不这样做并不是 HTTP 规范的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大多数未打补丁的 Tomcat Web 服务器都容易受到攻击,这是谁的错呢? [关闭] 的相关文章

随机推荐

  • C# 中的委托问题

    在下面的程序中 DummyMethod 总是打印 5 但是如果我们使用注释代码 我们会得到不同的值 即 1 2 3 4 有人可以解释为什么会发生这种情况吗 delegate int Methodx object obj static int
  • Excel - 从数据透视表中提取列并将其显示在常规表中

    我想从数据透视表中的特定列中提取数据并将其显示在常规 Excel 表中 这可能吗 当数据透视表中有新数据时 它应该自动更新 我之前编写了一些代码将表从属于数据透视表 以便数据透视表尺寸或位置的任何更改都将反映在阴影表的尺寸和位置中 这有效地
  • 检测 X11 根窗口中的修改键释放

    总体目标就像 Windows 的 Alt Tab 所以我将使用这些键进行解释 我想 按 Alt gt 按 Tab gt 弹出窗口出现 gt 按住 Alt 的任何时候按 Tab gt 释放 Alt gt 弹出窗口消失 我无法检测到最终的 Al
  • Delphi EOutOfResources(GDI错误)

    我编写了一个应用程序 其中偶尔会出现 EOutofResources 错误 将 TBitmap32 保存到流时 由 Graphics 单元的 GD IError 方法引发 据我所知 它可能来自 gdi 限制或堆限制 我知道该进程的默认限制为
  • 在executeBatch()之后我需要一个connection.commit()吗?

    我必须检查同事的代码 我偶然发现了这段代码 private void pdate JdbcTemplate jdbcTemplate List
  • Microsoft Visual Studio 2019:无法打开项目文件。无法找到 .NET SDK

    我刚刚升级了我的视觉工作室2019到最新版本16 8 3突然间 我无法加载任何 C 项目 并且所有 NET Core 项目都出现以下错误 无法打开项目文件 无法找到 NET SDK 检查它是否已安装以及指定的版本 global json 如
  • PhoneGap 中可以集成支付网关吗?

    我想在 Android 和 IOS 的 PhoneGap 应用程序中实现支付网关集成 请帮助我执行正确的步骤 PhoneGap PayPal iPhone 插件 Here is link of PayPal Plugin for Phone
  • 从常规文件读取:阻止或返回更少的数据?

    是否有可能read to block 返回的数据少于请求的数据 从常规文件读取时 不包括 请求超过 SSIZE MAX 的数据 读取超出 EOF 的内容 信号中断 read 3 表明 排除上述条件 从常规文件读取时read永远不会返回少于请
  • 以编程方式膨胀 TextView 和 LinearLayout

    这里的问题是 在这两种情况下我没有得到相同的输出视图结果 我想修复情况 1 以获得与情况 2 相同的输出结果 膨胀textview和线性布局 然后以编程方式将textview添加到线性布局 将textview添加到xml中的线性布局中 案例
  • 如何将文本放入边框

    我正在尝试在边框中插入一些文本 但不知道该怎么做 我怎样才能在边框中间放置一些文本 下面是它应该看起来像的屏幕截图 尝试 HTML 图例标签 HTML图例 http www w3schools com tags tag legend asp
  • 如何使用C#获取Excel中当前打开的文档?

    我所需要的只是获取当前打开的 Microsoft Excel 实例中当前打开的文档列表 但我不知道 Excel 术语 不知道这些文档是否称为工作簿 工作表或窗口等 有任何想法吗 找到了 link http support microsoft
  • 如何将多个 xml 文件转换并合并为一个文件

    我希望您能帮助我使用 XSLT 将一些 XML 转换为新的 XML 我有选择多个 XML 并对它们应用 XSLT 的代码 我的问题是 XSLT 我想将这些 shop1 xml shop2xml 转换为 allshops xml 对于知道如何
  • 访问 ruby​​ 块内的厨师资源

    我一直试图在厨师文档和谷歌中找到这个问题的答案 但我一无所获 我还不是一个红宝石爱好者 所以这个问题的答案可能源于我用 为 Chef 准备足够的红宝石 来解决这个问题 这就是我想做的 在我的deploy资源 在before migrate属
  • 为什么我的 javascript 文件无法加载?

    我正在尝试将 JS 文件加载到我的网站中 我已将该文件放入与加载的文件完全相同的文件夹中 但 firebug 没有显示它已加载 并且其效果不可见 为什么会这样呢 这是加载脚本的代码 第一个未加载 第二个已加载 这是脚本本
  • 动态壁纸背景视差效果滚动

    我试图让动态壁纸中的背景在用户更改主屏幕时滚动时表现得像普通壁纸一样 我知道所需的方法是 onOffestsChanged 但我似乎无法让它工作 有人有建议或代码片段来让它工作吗 让您的引擎实现 onOffsetsChanged xOffs
  • Selenium click() - 选择按钮但不单击

    I m using Selenium Python to do something like a Robotic Process Automation However I am facing problems clicking in a b
  • Django 过滤 ModelFormSet 字段选择...与限制 Formset 的查询集不同

    我明白这是可能的覆盖模型表单集 使用 的默认查询集 https docs djangoproject com en dev topics forms modelforms using a custom queryset 这只是限制了为其创建
  • 将 int 文字分配给字节变量时是否需要进行强制转换?

    我读过一本书 有一句话 byte rounds 12 fighters byte 2 它指出 字节原语有一个四字节有符号整数作为其有效值 文字 如果未执行显式转换 则整数为 隐式转换为一个字节 根据Oracle文档 一个字节本质上不应该是一
  • 如何使用 webpack 加载库源映射?

    我正在使用 webpack 构建两个项目 一个是另一个的图书馆 在构建包装器项目时是否可以使用我的库项目中的源映射 我希望能够从我的包装器 UI 调试我的库代码 我的构建工作正常 因为该库是内置的 唯一的问题是源映射 我在浏览器调试器中看到
  • 大多数未打补丁的 Tomcat Web 服务器都容易受到攻击,这是谁的错呢? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi