![]()
世界各地的关键IT系统仍然充斥着漏洞,而AI工具可能会让利用这些漏洞变得前所未有的容易。但AI也可能成为解决方案的一部分:一项新计划旨在自动将易受攻击的代码转换为专注于安全的Rust语言,这将消除绝大多数已知的软件漏洞。
内存安全漏洞占70%的软件漏洞
AI编程工具的快速发展使得处理那些以前因成本过高或耗时太长而无法承担的软件工程任务变得比以往任何时候都容易。进步研究所智库启动了"重大重构"计划,使用这些工具将用C和C++编写的开源软件转换为Rust。与前两种语言不同,Rust被设计用来防止一类危险的漏洞——内存攻击。
内存安全问题发生在软件以非预期方式访问或操作内存时。这些漏洞在为开发者提供内存处理手动控制的旧语言中很普遍。大多数新语言都包含防护措施来防止此类问题,但这通常以较低性能为代价。因此,C和C++等内存不安全语言仍被广泛使用,内存安全漏洞仍占软件漏洞的约70%。
AI驱动的代码转换革命
Rust于2015年首次发布,旨在在引入内存安全的同时匹配C和C++的性能。这种语言已被渴望加固代码的科技公司快速采用,包括亚马逊、谷歌和微软,但将旧软件转换为Rust是一个费时费力的昂贵过程。
剑桥大学博士生、项目负责人赫比·布拉德利表示,重大重构计划的成功基于AI工具已经改变了等式这一观点。该计划提议建立一个由美国政府资助的"专项研究组织",使用AI驱动的编程工具到2030年将关键开源软件库中的1亿行代码转换为Rust。布拉德利估计,投资1亿美元,该项目可以防止数百次网络攻击,累计损失约20亿美元。
"我非常看好AI改变软件开发方式的能力,这显然包括做一些以前被认为成本或时间禁止的事情的潜力,"布拉德利说。"五年后,如果人们想要任何主要库的Rust版本...他们将能够制作出来。"
布拉德利表示,这种方法如此有吸引力的原因是,它有可能一次性解决大量漏洞,而不必采用逐案处理每个漏洞的常规方法。这对于由少数过度工作的志愿者维护的小型开源库的"长尾"来说可能特别有吸引力。
人工转换与AI自动化的较量
手动将小型C代码库转换为Rust通常需要经验丰富的Rust工程师数千小时的人力投入,而这类工程师供不应求。但布拉德利表示,最新的AI编程工具现在可以在很少监督的情况下可靠地执行少于1000行程序的翻译。在稍加监督的情况下,包含多达5000行的程序也在可及范围内。布拉德利补充说,这些能力也在快速发展。
概述该提案的立场文件表明,一个由不到50名安全工程师、AI研究人员和管理人员组成的团队可以在三到五年的时间内对关键开源库产生相当大的影响。初步努力将集中于识别最重要的安全库,并开发用于验证AI翻译代码安全性和功能性的强大工具。
该项目希望借助现有的创建AI驱动Rust翻译工具的努力,最值得注意的是美国国防高级研究计划局的"将所有C转换为Rust"(TRACTOR)程序。该程序于2024年启动,旨在研究如何将新兴的生成式AI工具与传统代码分析相结合,以自动化Rust翻译。
混合方法的探索与实践
尽管自启动以来AI代码生成有了快速改进,但项目经理丹·沃拉奇认为混合方法仍然可能胜出。他表示,该计划资助的六个团队采取了多种方法,从几乎完全依赖AI到主要构建经典转换工具,只将问题的部分外包给生成模型。
"AI看起来很有前途,但我们也有几十年编写软件来分析其他软件的研究,"他说。"TRACTOR的全部意义在于探索您可能混合和匹配传统计算机科学与现代AI的所有不同方式。"
各团队在12月提交了第一轮结果,该计划的评估团队目前正在分析他们的参赛作品。沃拉奇表示,他们将被评判的两个主要标准是正确性(代码是否做它应该做的事情)和性能,但第三个更主观的衡量标准可能是最重要的。各团队被要求创建"惯用的"Rust代码——遵循最佳实践并以既定方式解决问题的代码。换句话说,"代码看起来像熟练的Rust程序员从头构建的样子吗,"沃拉奇说。
挑战与前景并存的未来
这对于确保生成的代码易于人类工程师维护至关重要,但为Rust项目贡献的开源开发者乔什·特里普莱特表示,这可能具有挑战性。"如果你使用AI翻译的代码,与手动翻译的代码相比,你可能最终得到人类难以维护的代码,"他说。
特里普莱特表示,这可能并不总是问题,他欢迎任何将更多代码转换为Rust的努力。如果项目已经在使用AI帮助维护其代码——这种情况越来越常见——那么使用AI翻译成Rust是完全合理的。但他警告那些尚未定期使用该技术的团队不要为了代码转换而转向它。他还认为对于数千个其他项目依赖的流行开源库需要更加谨慎。
"可能你会想在转换中更加小心,也许使用AI来帮助你,但要非常小心,"他说。"AI在防止做错事方面永远不会有100%强大的万能解决方案,无论是通过幻觉还是不理解任务。"
乔治城大学安全与新兴技术中心高级研究分析师杰西卡·季表示,另一个潜在挑战是,虽然Rust的受欢迎程度在增长,但它仍然有相对较小的开发者基础。"假设AI翻译一切顺利,生成的Rust代码将需要以某种方式维护和监控,"她在给IEEE Spectrum的电子邮件中写道。"那里的Rust专家比C/C++专家少得多,所以代码库上的专家眼睛数量可能会更少。"
然而,季表示,也许最大的障碍将是说服美国政府资助该项目,特别是在设想的规模上。她认为更现实的目标可能是向私营部门寻求概念验证的资金。"我认为现在是推出这样提案的好时机,因为AI公司特别有动机展示其模型的能力,"她说。
布拉德利也在考虑类似的思路。虽然他与美国和英国政府代表进行了讨论,但他也在探索该项目是否更适合作为商业企业,因为大量可以从转换为Rust中受益的易受攻击代码存在于私营公司和关键基础设施提供商中。
Q&A
Q1:重大重构计划是什么?它的目标是什么?
A:重大重构计划是由进步研究所智库启动的一项计划,旨在使用AI工具将用C和C++编写的开源软件自动转换为Rust语言。该计划提议建立一个由美国政府资助的专项研究组织,到2030年将关键开源软件库中的1亿行代码转换为Rust,投资1亿美元预计可防止数百次网络攻击。
Q2:为什么要将C和C++代码转换为Rust?
A:因为内存安全漏洞占所有软件漏洞的约70%,而C和C++等旧语言容易出现内存攻击漏洞。Rust语言在2015年发布,专门设计用来在保持C和C++性能的同时引入内存安全,可以防止这类危险漏洞。虽然亚马逊、谷歌、微软等公司已快速采用Rust,但手动转换过程费时费力且昂贵。
Q3:AI工具在代码转换中能发挥什么作用?
A:最新的AI编程工具现在可以在很少监督的情况下可靠地执行少于1000行程序的翻译,在稍加监督下可处理多达5000行的程序。手动转换小型C代码库通常需要经验丰富的Rust工程师数千小时工作,而AI工具可以大大降低这个成本和时间,使以前因成本过高而无法承担的软件工程任务变得可行。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.