新的 ODGen 工具在 Node.js 库 PlatoBlockchain 数据智能中发现了 180 个零日漏洞。 垂直搜索。 人工智能。

新的 ODGen 工具在 Node.js 库中发现 180 个零日

约翰霍普金斯大学的研究人员最近使用他们专门为此目的开发的新代码分析工具 ODGen,在数千个 Node.js 库中发现了令人震惊的 180 个零日漏洞。

其中 XNUMX 个缺陷已获得通用漏洞和暴露 (CVE) 标识符。 其中包括命令注入缺陷、路径遍历漏洞、任意代码执行问题和跨站点脚本漏洞——其中一些存在于广泛使用的应用程序中。

在本月早些时候的 Usenix 安全研讨会上发布的一篇论文中,约翰霍普金斯大学的研究人员(Song Li、Mingqing Kang、Jianwei Hou 和 Yinzhi Cao)将 ODGen 描述为当前代码分析和所谓的基于图形查询的更好替代方案查找 Node.js 漏洞的方法。

事实证明,基于程序分析的方法对于帮助检测单个漏洞类型(例如 JavaScript 中的代码注入缺陷)非常有用。 但研究人员表示,它们无法轻松扩展以检测 Node.js 平台中可能存在的所有类型的漏洞。 同样,基于图形的代码分析方法(首先将代码表示为图形,然后查询特定的编码错误)在 C++ 和 PHP 等环境中效果很好。 然而,他们指出,由于编程语言广泛使用动态功能,基于图的方法在挖掘 JavaScript 漏洞方面效率不高。

查找 JavaScript 漏洞的“新颖”方法

因此,研究人员开发了他们所描述的 一种“新颖”且更好的方法,称为对象依赖图(ODG) 可用于检测 Node.js 漏洞。 他们表示,他们实施了 ODGen 来为 Node.js 程序生成“ODG”来检测漏洞。

曹是约翰·霍普金斯大学计算机科学助理教授,也是该研究报告的合著者,他使用几个类比来描述一般的基于图的代码分析以及他们提出的客观依赖图。 “如果我们将漏洞视为一种特殊模式——例如,一个绿色节点与一个红色节点连接,然后是一个黑色节点——基于图的代码分析工具首先将程序转换为具有许多节点和边的图,”曹说。 “然后该工具会在图表中查找此类模式来定位漏洞。”

研究人员提出的对象依赖图通过将 JavaScript 对象表示为节点并添加特定于编程语言的功能(包括对象之间的依赖关系),然后查询错误来改进这种方法。 曹描述了该方法如何在一把米中使用谷物:如果所有谷物在煮之前看起来都一样,但煮后呈现两种不同的色调——一种代表好谷物,另一种代表坏谷物——那么就更容易发现和剔除坏谷物。 曹说,“抽象解释有点像将大米(即程序)转化为不同颜色物体的煮沸过程”,因此更容易发现错误。

各种错误

为了看看他们的方法是否有效,研究人员首先针对节点包管理器 (npm) 存储库上 Node.js 包中先前报告的 330 个漏洞样本测试了 ODGen。 测试显示扫描仪正确识别了 302 个漏洞中的 330 个。 受到相对较高准确率的鼓舞,研究人员对 npm 中的约 300,000 个 Java 包运行 ODGen。 扫描仪报告了这些软件包中总共 2,964 个潜在漏洞。 研究人员检查了其中 264 个漏洞——平均每周下载量超过 1,000 次——并确认 180 个漏洞为合法漏洞。 其中 122 个位于应用程序级别,15 个位于由其他应用程序或代码导入的包中,其余 XNUMX 个位于间接包中。

ODGen 检测到的多个(80 个)已确认漏洞是命令注入流,允许攻击者通过易受攻击的应用程序在操作系统级别执行任意代码。 三十个是路径遍历缺陷; 24 起启用代码篡改,19 起涉及一种称为原型污染的特定类型的命令注入攻击。

时间戳记:

更多来自 暗读