JavaScript Web 应用程序和服务器易受 ReDoS 攻击
JavaScript Web 应用程序和 Web 服务器容易受到称为正则表达式(regex)拒绝服务(ReDoS)的特定类型的漏洞/攻击。当攻击者将大量复杂的文本发送到基于 JavaScript 的 Web 服务器或应用程序的开放输入时,就会发生这些漏洞。
如果服务器组件或应用程序库不是专门设计用于处理各种边缘情况,则攻击者的输入最终会一次阻止整个应用程序或服务器几秒钟或几分钟,而服务器会分析并模式匹配输入。
各种编程语言和 Web 服务器技术在模式匹配操作和 ReDoS 攻击的性能方面存在类似的问题,由于大多数 JavaScript 服务器的单线程执行模型,每个请求都由同一个线程处理,因此在 JavaScript 的情况下它们被夸大了。
2017 年发布的后续研究显示,Node.js 库和应用程序中发现的漏洞总数中有 5% 是 ReDoS 漏洞。在上周的一次安全会议上,ReDoS 问题由于多年未得到解决,在 JavaScript 社区引起重视。来自德国达姆施塔特技术大学(Technical University in Darmstadt, Germany)的两名学者 Cristian-Alexandru Staicu 和 Michael Pradel 表示,他们在流行的 Node.js 模块中发现了 25 个以前未知的漏洞。
Staicu 和 Pradel 说这些漏洞的主要原因是缺乏对正则表达式匹配性能的关注,因为大多数开发人员似乎都专注于准确性,在代码中留下了大量漏洞,攻击者可以使用 ReDoS 攻击来利用这些漏洞。
两人经过进一步研究,设计出了一种在实际网站上检测这些漏洞而无需实际使用 ReDoS 漏洞利用代码的方法。他们使用这种方法扫描 2,846 个流行的基于 Node.js 的站点,显示 339 个大约 12% 的站点容易受到至少一个 ReDoS 漏洞的攻击。研究小组表示,“ReDoS 对这些网站的可用性构成严重威胁,我们会开发用于检测和缓解 JavaScript 中 ReDoS 漏洞的技术。”
编译自:BleepingComputer
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JDK 11 已进入候选发布阶段,计划9月25日发布正式版
JDK 11 达成了新的里程碑:现已进入候选发布阶段。按照 JDK Release Process(JEP 3),jdk/jdk11 稳定仓库目前对于 P1 错误修复是开放的。此外,JDK 11 将于9月份正式发布。 JDK 11 的发布进度正在按照预期进行 JDK 11 现在已处于候选发布阶段,按照 JDK Release Process(JEP 3),jdk/jdk11稳定仓库对于 P1 错误修复是开放的。 JDK 11 的Rampdown 阶段已经过去,截至6月28日,整体功能特性已冻结,不会再有其他的JEP。稳定仓库jdk/jdk11目前是开放的,可用于 P1-P2 错误修复,并在经过批准后,可根据 JDK Release Process (JEP 3) 进入 late enhancements 阶段。 RDP 1 candidate bugs RDP 2 candidate bugs Bug-Deferral Process Late-Enhancement Request Process 让我们看一下 JDK 11 发布之前需要达到的里程碑: Rampdown— 对进入此阶...
- 下一篇
示例解读 Python 2 和 Python 3 之间的主要差异
每门编程语言在发布更新之后,主要版本之间都会发生很大的变化。 在本文中,Vinodh Kumar 通过示例解释了 Python 2 和 Python 3 之间的一些重大差异,以帮助说明语言的变化。 本教程主要介绍内容: 表达式 Print 选项 Unequal 操作 Range 自动迁移 性能问题 主要的内部事务更改 1、表达式 在 Python 2 中为获得计算表达式,你会键入: X=raw_input("entersomevalues) 但在 Python 3 中,你会键入: X=input("entersomevalues") 因此,无论我们输入什么,值都会分配给 2 和 3 中的变量 x。当在 Python 2 中输入 2*6 时,结果将是 12,这是评估值。 但是,当在 Python 3 中运行相同的程序时,结果是字符串值。 在这种情况下,它看起来像字符串格式的 2*6。 那么,我们如何获得评估表达式呢? 现在,我们必须使用一个名为 eval 的表达式或函数。 当您在输入之前编写 eval 时,它会将表达式转换为计算值。 x=eval(input("entersomevalu...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题