这项研究的重点是原型污染脆弱性,这是一种“新”类型的安全脆弱性,最初是在2018年发现的,尚未深入研究。漏洞利用了JavaScript的原型设计。通过修改本机对象(例如对象)的原型(大多数其他对象)继承属性和方法,取决于特定应用程序的逻辑,可以升级到几乎任何其他Web漏洞。
我们收集了包含真实词原型污染漏洞的JavaScript代码,搜索了诸如GitHub Advisory和其他来源之类的漏洞数据库。为了确保收集的示例实际上是脆弱的,我们为每个脆弱的功能写了一个简单的概念证明。我们运行了针对脆弱应用程序的静态分析工具。在漏洞数据集中,我们选择了一些案例研究,我们对这些案例研究进行了详细分析,以解释导致漏洞的不同代码模式。选择这些案例研究以显示有趣的结果,使我们能够强调每个工具的优势和局限性。
ODGEN/OBJLUPANSYS的新方法基于对象依赖图,该方法基于原型链,成功地模拟对象查找,几乎可以检测所有脆弱性情况。但是,当当前的实验实现会受到某些代码模式时的错误。在分析大包装或某些模式时,它还遭受了严重的性能问题。同样,当针对易受伤害的函数的修补版本执行时,非常容易标记误报。
SEMGREP规则并未涵盖所有案例,例如直接分配,因为包括此案例的差异而没有很高的假阳性率。 SEMGREP引擎仅提供有限的经术内数据流分析,并且正如预期的那样,不能总是检测出分布在不同功能上的漏洞(例如,间接递归调用)。规则标记许多误报在针对精致脆弱功能的修补版本执行时,因为大多数缓解技术甚至都没有考虑。
CodeQL几乎可以识别收集的所有漏洞示例。被认为的查询似乎写得很好,遇到的问题很可能是封闭源引擎的限制。对于错误的帖子,考虑了大多数缓解技术,因此CodeQL查询的性能明显优于其他工具。
论文pdf中的更多细节