安全客 前天 15:20
人工智能可能修复帮助传播了 15 年的漏洞
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

一项研究揭示了人工智能模型在代码生成中延续了十年前的路径遍历漏洞。由于模型在包含不安全代码的公共代码库上训练,导致70%的模型生成了易受攻击的代码。研究人员开发了一种工具来扫描、修复GitHub存储库中的漏洞,但补丁的采纳率较低。文章强调了数据质量对模型输出的影响,并讨论了自我改进模型和人工智能供应商在解决安全问题中的作用。最终,代码安全的选择取决于开发人员,但供应商需发挥关键作用。

🔍 研究发现,大型语言模型(LLM)在生成代码时,会延续十年前存在的路径遍历漏洞。这些漏洞源于开发者在GitHub等平台分享的、存在安全问题的代码片段,这些代码片段被广泛传播,并被LLM的训练数据吸收。

⚠️ 为了评估漏洞的严重性,研究人员要求LLM(包括GPT-3.5、GPT-4等)编写静态文件服务器的代码。结果表明,即使明确要求安全代码,70%的响应仍然包含易受攻击的逻辑。这表明,模型在生成代码时,容易复制训练数据中的不安全模式。

🛠️ 研究团队开发了一个工具,用于扫描GitHub存储库中的路径遍历漏洞,并尝试使用GPT-4生成补丁。该工具验证了40,546个存储库中的1,756个可利用漏洞,并生成了1600个有效补丁。然而,只有63个项目接受了修复,这反映了修复过程的复杂性以及开发者对安全修复的采纳意愿。

💡 研究人员认为,解决此类问题的潜在方案是自我改进的模型,这些模型可以提出假设、实验和推理,而不仅仅是依赖互联网上不受信任的可用数据。同时,人工智能供应商在默认的训练和模型对齐方面可以发挥关键作用,但最终的设计选择取决于开发人员对安全性和性能的权衡。

 人工智能可能会修复一个15岁的错误,它有助于传播
                                                                                           图片来源:Olga Donchuk/Shutterstock

无意中延续了十年的bug的人工智能工具现在也可能有助于消除它。

2010 年,一位开发人员发布了一个小代码片段作为 GitHub Gist,以展示如何在 Node.js 中创建静态文件服务器。它包括一个微妙的路径遍历漏洞,允许攻击者在指定目录之外导航。随着时间的推移,不安全的模式通过Stack Overflow答案,博客文章,大学教程甚至主要公司的生产存储库传播。

多年来,它变得如此嵌入开发者文化,以至于它进入了当今AI模型的训练数据。

“我们并不100%确定2010年的Gist是原始来源,但这是我们可以追踪的最早实例,”莱顿大学博士候选人,分析该问题的出版前论文的主要作者Jafar Akhoundali说。“很可能是代码片段传播,因为它解决了一个常见问题 – 提供静态内容 – 并且可以很容易地用复制粘贴重复使用。

教程和像Stack Overflow这样的平台可能是传播的主要贡献者,因为它们更明显,更受寻求快速解决方案的开发人员的信赖,并设计用于代码重用。Akhoundali说,项目之间的直接复制粘贴频率较低,因为它通常需要更多的上下文和努力从业务逻辑中提取可重复使用的代码。

为了衡量这个漏洞已经变得有多深,Akhoundali和他的团队要求大型语言模型,包括GPT-3.5,GPT-4,Claude,Gemini和Copilot模型为静态文件服务器编写代码。他们测试了一般提示和明确请求安全代码的提示。即使指示优先考虑安全性,70%的响应也包含易受攻击的逻辑。平衡模式下的 GPT-3.5 和 Copilot 无法在任何测试场景中生成安全代码。

“许多LLM都是在GitHub等大型公共代码库上训练的,”Akhoundali说。他说,如果数据包括不安全的模式,模型将不可避免地重现它们。

这是一个“垃圾进来,垃圾出去”的案例,他说。“当数据本身缺乏质量时,我们不能简单地期望模型表现更好……无论是人类还是人工智能,都不是罪魁祸首,”他说。解决此类问题的潜在解决方案是自我改进的模型,这些模型可以提出假设,实验和推理,而不仅仅是依赖互联网上不受信任的可用数据,如人工智能代理。

研究人员没有发现OpenAI,Gemini和Claude等模型提供商之间的漏洞再现有任何显着差异。该团队还建立了一个系统来修复它。它扫描公共GitHub存储库以查找路径遍历漏洞模式,并尝试使用沙盒测试确认可利用性。如果成功,该工具使用 GPT-4 生成补丁。它通过验证易用代码可以在实践中触发来避免误报,这与纯静态分析不同。

设计修补步骤在技术上被证明是具有挑战性的。早期尝试要求模型重写整个文件,从而导致语法错误和意外更改。后来,该团队通过附加行号和请求差异来改进其方法。即便如此,确保补丁正确性需要额外的启发式和程序检查。

“有很多程序,每个程序都需要不同的功能和逻辑。即使我们进行定制的每个程序测试,仍然无法覆盖所有角落案例,这需要维护人员进行最终检查,“Akhoundali说。

从对40,546个存储库的初始扫描中,该工具验证了1,756个是可利用的路径遍历缺陷。它产生了1600个有效的补丁。只有63个项目接受了修复。

Akhoundali将低摄取率归因于几个因素。一些存储库被放弃,其他仓库仅在测试或开发环境中使用代码,在某些情况下,他们无法获得安全通道来到达维护者。

为了避免恶意行为者,该团队隐瞒了全部技术细节。他们尽可能通过私人渠道联系。“我们试图平衡通知社区有关漏洞的好处与潜在攻击者发现此漏洞并利用它的风险,”Akhoundali说。

该团队的研究集中在JavaScript项目中的路径遍历漏洞上,但管道是可扩展的。他说,原则上,该方法可以应用于其他漏洞类甚至其他编程语言。

至于人工智能供应商的角色,Akhoundali认为默认的训练和模型对齐可以有所帮助。但这将是具有挑战性的,他说。大多数时候,安全代码意味着更复杂的代码。所有开发人员都会想要它,还是他们只对功能感兴趣?性能怎么样 – 有时,运行安全代码使其速度慢得多,并且需要多次检查,他说。

终极设计选择取决于开发人员,但供应商起着关键的推动作用。设计选择和优先级因不同的开发人员和公司而异,”他说。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

人工智能 代码安全 漏洞修复 机器学习 GitHub
相关文章