TaintRadar: Semantic-Aware Taint-Style Vulnerability Detection via Augmented Code Property Graphs
TaintRadar 是一种新颖的静态分析方法,它通过为代码属性图(Code Property Graphs)增加关于净化、持久化和对象别名的语义层,来克服现有污点追踪的局限性,从而显著减少误报,并成功检测出 PHP 应用中众多的真实世界及零日漏洞。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,互联网就像一座巨大且繁忙的城市,数以百万计的人(用户)不断地向各种商店和办公室(网站)递交便条、包裹和秘密。大多数时候,这种交换是安全的,但有时,一个狡猾的罪犯会把一封有毒的便条塞进包裹里,希望店主会在不知情的情况下将其大声读出,或者利用它来撬开保险库。在计算机科学领域,这被称为“污点式漏洞”(taint-style vulnerability)。当来自用户的不受信任信息在程序中未经检查地传播,直到到达数据库或屏幕等危险位置并引发混乱时,就会发生这种情况。
为了阻止这些罪犯,安全专家使用一种名为“静态分析”的方法。把这想象成一位超级聪明的侦探,他们在不实际打开每家店门的情况下,阅读这座城市每家店的蓝图。他们追踪每一封便条的路径,以观察在便条到达危险地点之前,是否经过了过滤或“净化”(sanitization,即清洗)。多年来,这些侦探一直使用一种名为“代码属性图”(Code Property Graph, CPG)的工具,它就像一张连接每一行代码的庞大 3D 地图。然而,这篇论文指出,旧地图存在盲点。它们经常漏掉数据是如何存入仓库(数据库)并在稍后被另一家店取出的,或者在数据于复杂的移动盒子(对象)内部移动时感到困惑。由于这些盲点,侦探们要么漏掉了真实的犯罪,要么在面对无害便条时大喊“有罪犯!”,从而导致大量的资源浪费。
TaintRadar 登场了,这是一个旨在修复这些盲点的升级版侦探系统。研发 TaintRadar 的研究人员意识到,要抓住坏人,地图需要的不仅仅是连接代码的线条,它还需要对“意义”的深度理解。他们在标准地图之上叠加了三种全新的“超能力”。首先,它学会了识别不同类型的清洗工作(净化)的具体方式,因此它知道什么时候便条才是真正安全的。其次,它连接了共享同一个仓库的不同商店之间的点,意识到早上掉落的一封脏便条可以在下午被捡起并用于制造麻烦,即使这些商店之间并没有直接交流。第三,它变得聪明起来,能够理解数据如何在复杂的移动盒子内部移动,精确追踪一个秘密在程序内部从一只手传递到另一只手时是如何变化的。
当团队测试 TaintRadar 时,结果令人印象深刻。在一套标准的练习题(SARD 基准测试)中,它抓住了 80% 的漏洞,同时产生的错误远少于之前的工具。但真正的考验在于将其部署到 19 个真实的网站上。TaintRadar 成功发现了以前被报告过的绝大多数已知安全漏洞。更令人兴奋的是,它发现了 29 个全新的、从未见过的安全漏洞(称为“零日漏洞”),分布在六个不同的应用程序中。其中包括 26 例攻击者可以将恶意代码注入数据库的情况,以及 3 例攻击者可以诱骗浏览器显示恶意脚本的情况。研究人员已经将这些新发现报告给了拥有这些网站的公司,以及官方的 CVE(常见漏洞与披露)数据库,该数据库会为它们分配唯一的 ID 编号以便进行修复。
简而言之,TaintRadar 证明了通过教会侦探去理解数据的“故事”——即它是如何被清洗、存储在哪里以及如何在复杂对象中移动的——我们可以构建一个更敏锐、更准确的安全系统。它不仅仅是在看地图上的线条;它理解着城市的节奏,使得数字罪犯很难从缝隙中溜走。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。