Feature Engineering Is the Bottleneck: An Explainability Study of ML-Based Security-Relevant Method Detection
本文通过 WEAVE 工具和基于 SHAP 的可解释性研究表明,用于检测安全相关方法的机器学习模型在面对未见代码时表现不佳,其原因并非模型选择不当,而是因为它们依赖于标识符和签名等不稳定的表面特征,从而指出特征工程才是实现鲁棒检测的真正瓶颈。
原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
在现代软件那广阔而复杂的景观中,安全分析师扮演着守护者的角色,不断扫描代码以寻找可能导致攻击者窃取数据或夺取控制权的隐藏弱点。为了实现这一目标,他们依赖自动化工具来追踪不受信任的信息(如用户输入)如何在程序中流动。这些工具需要一张精确的地形图:一份特定函数的清单,这些函数作为数据的起点、数据可能造成危害的危险终点,以及中和数据的清洗站。这些关键函数被称为安全相关方法。多年来,研究人员一直试图通过机器学习教计算机自动寻找这些方法,希望用智能、自更新的系统取代缓慢且易出错的人工列表。尽管这些计算机程序在受控的训练环境中表现出了令人印象深刻的结果,但面对现实世界的代码时,它们往往会跌跤,无法识别出它们本应发现的那些危险。
一个研究团队致力于理解为什么存在这种差距。他们开发了一个名为 WEAVE 的新工具,它作为一个严谨的测试场,用于测试这些安全检测算法。WEAVE 不仅仅是检查模型是否得到了正确答案,它还使用了一种称为可解释人工智能的技术来观察模型内部的决策过程。它要求模型展示其推导过程,揭示当模型判定一个函数具有危险性时,它究竟在观察代码的哪些部分。研究人员测试了目前最先进的三种方法,向它们喂入了一个新组装的、包含超过一万个 Java 函数的海量集合进行学习。随后,他们要求这些模型对新的、未见过的代码进行分类,并密切观察它们的推理逻辑是否保持一致。
调查揭示了一个令人惊讶且不安的事实。这些模型并没有学习代码的深层结构逻辑,例如一个函数实际在做什么或它如何操纵数据。相反,它们学会了几乎完全依赖于表层线索,特别是函数的名称以及它们所使用的变量名称。在训练过程中,模型发现了与安全风险相关的名称模式。然而,当研究人员向它们展示名称不同或语境发生变化的新代码时,模型的推理能力便崩溃了。那些模型曾认为能指向危险的特征,突然开始指向远离危险的方向,或者其重要性发生了剧烈偏移。在几乎所有案例中,模型改变了它们对什么重要的看法,并不是因为它们学到了新知识,而是因为它们所依赖的特定捷径在新的环境中不再存在了。
该研究还测试了仅仅选择更强大的计算机算法是否能解决问题。研究人员使用自动化系统搜索了数千种不同的模型配置,以寻找最优配置。虽然这些新模型在标准测试中的表现略有提升,但它们仍患有完全相同的缺陷。它们依然忽略代码的实际行为,并继续依赖于脆弱的、基于名称的捷径。这一发现排除了失败是由模型选择不当导致的观点;问题不在于系统的“大脑”,而在于赋予它观察代码的“眼睛”。研究人员得出结论,瓶颈不在于机器学习的智能水平,而在于用于描述代码的特征工程。只要这些系统接收到的描述仍然侧重于名称和表面细节,它们就会保持脆弱,无法泛化到软件开发中杂乱多样且真实的现实情况中。
这一发现的影响超出了单纯改进算法的范畴。它表明,要使这些工具真正可靠,必须教会它们观察代码的实质而非其标签。研究人员发现,描述代码实际行为的部分(例如函数内部的操作序列)几乎未被模型使用。这是一个关键的盲点,因为恶意函数可以轻易地通过更改名称来躲避仅读取标签的检测器,而其危险行为却保持不变。这项研究强调,目前教授计算机关于安全知识的方法与任务的本质从根本上是不匹配的。要构建能够真正保护软件的工具,重点必须从寻找更好的分类名称的方法,转向开发理解程序本身实际逻辑与流转的方法。如果不进行这种转变,即使是最先进的机器学习模型,在面对“重命名变量”这一简单伎俩时,也将依然显得不堪一击。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。