No Snake Oil: Verifying Python Package Builds
本文介绍了 daleq4py,这是一个利用保持溯源性的 Datalog 规则来规范化 Python 包 wheel 的工具,与 macaron 和 oss-rebuild 等现有工具相比,它将已验证构建等价率从大约 15–19% 显著提高到了 60–78% 以上。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,互联网是一个巨大的、繁忙的城市,你使用的每一个应用程序、网站和 AI 聊天机器人都是通过堆叠成千上万个预制的乐高积木构建而成的。这些积木被称为“软件包”(packages),它们存储在一个名为 PyPI(Python Package Index)的大型公共仓库中。由于 Python 是构建人工智能的首选语言,这个仓库也是数字星球上最繁忙的地方之一。但问题在于:就像在真实的城市中一样,坏人可能会潜入仓库,将一个安全的乐高积木换成一个带有隐藏陷阱的假积木,并将其发送给数百万个构建者。这被称为“供应链攻击”,是安全领域的噩梦。
为了抓捕这些伪造者,安全专家使用了一个聪明的技巧:“重构”(rebuilding)。他们不再盲目信任买到的积木,而是回到原始指令(源代码)那里,尝试在超级安全的隔离实验室中亲自构建这个积木。如果他们制造的新积木看起来与买到的那个完全一样,他们就知道它是安全的。如果看起来不同,它可能就是一个陷阱。然而,在混乱的现实世界中,即使是诚实的构建者也经常会做出看起来略有不同的积木——原因可能是微小且无害的,比如构建积木的时间、堆叠零件的顺序,或者使用的特定工具。这产生了一个令人困惑的问题:如何在不逐一手动检查每一个微小细节的情况下,区分出一个“无害差异”的积木和一个“危险伪造”的积木?
这正是论文《No Snake Oil: Verifying Python Package Builds》所要解决的问题。研究人员利用来自 Oracle 和维多利亚大学(Victoria University of Wellington)的工具,决定通过尝试从零开始重构超过 12,000 个流行的 Python 软件包来测试这种方法。他们想看看他们能多频繁地完美地复制出原始积木,更重要的是,如何判断一个“看起来不同”的积木是否实际上是安全的。
伟大的重构实验
团队使用了两个不同的自动化机器人,分别命名为 Macaron 和 oss-rebuild,来尝试重构这些软件包。可以将这些机器人想象成两个试图根据同一份食谱烘焙出完全相同蛋糕的厨师。他们提出的第一个问题是:“他们甚至能把蛋糕做完吗?”
结果喜忧参半。在他们尝试重构的 10,449 个纯 Python 软件包(排除了包含复杂预编译部分的软件包)中,Macaron 成功烘焙了 68%,而 oss-rebuild 的成功率为 56.5%。机器人的失败主要是因为找不到正确的食谱(源代码)、因缺少原料(依赖项)而感到困惑,或者无法确定该使用哪个版本的烤箱。事实证明,让机器人完美复制人类的构建过程是极其困难的。
“完美匹配”难题
接下来,研究人员提出了最严格的问题:“机器人烘焙出的蛋糕是否与商店里卖的蛋糕在每一粒碎屑上都完全一致?”他们将重构后的蛋糕的数字指纹(哈希值)与原始蛋糕进行了对比。
答案是一个残酷的现实检查:不一致。 Macaron 制作的蛋糕中只有 15.4% 与原件在字节层面完全相同,oss-rebuild 制作的蛋糕中也只有 19.1% 是如此。绝大多数看起来都不一样。如果你遵循一条严格的规则,即“任何不同的东西都是假的”,那么你不得不扔掉 80% 的蛋糕,尽管其中大部分可能只是因为使用了略有不同的烤箱温度或不同品牌的面粉。这会导致严重的“警报疲劳”,即安全专家收到过多的虚假警报,以至于他们不再关注真正的危险。
“可解释等价性”的魔力
这正是论文引入其明星角色的地方:一个名为 daleq4py 的新工具。它并不要求像素级的完美匹配,而是像一位聪明的美食评论家,能够理解即使蛋糕的糖霜涂抹图案不同,或者糖粒的蓝色色调略有差异,其味道依然可以是一样的。
该工具使用一种特殊的规则集(使用一种称为 Datalog 的语言编写)来进行“归一化”(normalize)处理。它会剥离掉那些无害的差异——比如蛋糕烘焙的时间、原料列表的顺序,或者搅拌碗的具体品牌——同时保持核心结构完整。然后,它会对蛋糕的“本质”进行比较。
结果带来了颠覆性的变化。当研究人员使用 daleq4py 来检查那些并非完美匹配的蛋糕时,他们发现:
- 对于 Macaron,60.2% 的“看起来不同的”蛋糕实际上与原件是等价的。
- 对于 oss-rebuild,78.9% 的蛋糕是等价的。
这意味着,通过使用这个智能工具,可以被信任为“安全”的重构包数量从大约 5 个中的 1 个跳跃到了大约 5 个中的 3 或 4 个。
为什么这很重要
这篇论文并不声称已经永久解决了供应链安全问题。它承认仍然存在差距,例如确保机器人首先选择了正确的食谱(当两个机器人达成一致时,它们的正确率为 96.3%)。它还指出,关于什么算作“无害”的规则需要经过人类的仔细检查,以确保没有坏人能通过伪造一个看起来经过“归一化”处理但实际上已被投毒的蛋糕来混入其中。
然而,这项研究证明了我们不需要“把婴儿和洗澡水一起倒掉”。通过接受“不同”并不总是意味着“危险”,并使用像 daleq4py 这样的工具来解释为什么两个看起来不同的软件包实际上是相同的,我们可以大幅减少噪音。这使得安全团队能够停止担心无害的变化,转而将精力集中在少数真正可疑的、可能包含恶意软件的差异上。这标志着从一个“一切皆可疑”的世界向一个“我们知道什么是安全的,并且我们可以证明它”的世界的转变。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。