主要内容
新发表的研究表明,人工智能生成的计算机代码充斥着对不存在的第三方库的引用,这为供应链攻击创造了绝佳机会。通过恶意包毒害合法程序,这些攻击可窃取数据、植入后门并实施其他恶意行为。
该研究使用 16 种最广泛使用的大型语言模型生成了 57.6 万个代码样本,发现其中 44 万个包依赖项是“幻觉性的”,即不存在。开源模型的幻觉最多,21%的依赖项链接到不存在的库。依赖项是另一段代码正常运行所需的重要代码组件,节省了开发者重写代码的麻烦,是现代软件供应链的重要组成部分。
这些不存在的依赖项通过加剧所谓的依赖混淆攻击,对软件供应链构成威胁。攻击通过使软件包访问错误的组件依赖项来实现,例如发布恶意包并赋予其与合法包相同的名称但版本号更晚。在某些情况下,依赖该包的软件会选择恶意版本而非合法版本,因为前者似乎更新。
这种攻击形式也称为包混淆,2021 年在一个概念验证漏洞利用中首次被展示,在包括苹果、微软和特斯拉在内的一些全球最大公司的网络上执行了伪造代码。
研究人员运行了 30 次测试,16 次用 Python 编程语言,14 次用 JavaScript,每次生成 19200 个代码样本,共 57.6 万个。在这些样本包含的 223 万个包引用中,440445 个,即 19.7%,指向不存在的包。其中 205474 个有独特的包名称。
包幻觉在供应链攻击中潜在有用的一点是,43%的包幻觉在 10 次查询中重复出现。这表明大多数幻觉不是随机错误,而是可重复的现象,在多次迭代中持续存在,对于试图利用此漏洞的恶意行为者更有价值。