随着生成式人工智能(Gen-AI)的发展,网络安全领域也一直在寻求如何将Gen-AI应用到DevSecOps之上。很多安全研究人员已经在广泛使用Gen-AI技术,而且也能够体验到显著的生产力提升和工作满意度增长。但随着Gen-AI已经成为安全研究人员获取快速解决方案的新一代技术栈,风险也在逐渐提升。
毫无疑问的是,Gen-AI并不会完全取代DevSecOps,Gen-AI确实可能成为DevSecOps的福音,但这把双刃剑一旦使用不当,也有可能会成为DevSecOps的噩梦。
在这篇文章中,我们将深入讨论生成式人工智能(Gen-AI)与DevSecOps可能擦出哪些"火花",并从多个方面分析Gen-AI会给DevSecOps带来哪些影响。
Gen-AI概况
Gen-AI有望帮助编写安全代码、改进代码分析、创建测试、编写文档并协助完成许多其他DevSecOps功能。但该技术仍处于起步阶段,早期结果好坏参半。
乐观的看法是,通过在干净安全的代码库上训练人工智能模型,告诉它最佳的实践方式,并让它了解组织的内部政策和框架,那么它的所有代码初始起点从一开始就是安全的。除此之外,Gen-AI还可用于查找现有代码中的安全问题、进行调试、生成测试、编写文档以及与DevSecOps相关的许多其他任务。但令人沮丧的是,Gen-AI可能会生成不安全的代码,从而带来更多的安全问题。
根据调查,大多数开发人员目前都已经在日常工作中使用Gen-AI了。CoderPad于1月份发布的一项针对13000多名开发人员的调查发现,67%的技术专业人士表示他们已经将人工智能作为工作的一部分,其中ChatGPT是首选工具,其次是GitHubCopilot(一种生成式人工智能开发工具)和Bard。近59%的人表示他们会将其用于代码辅助,超过一半的人表示他们会将其用于学习和参考,约45%的人表示他们会将其直接用于代码生成。
在Shutterstock公司(一家提供高分辨率免版税图像、图片、矢量、音乐和视频剪辑的公司)中,GitHub Copilot的使用对公司软件工程师的日常工作产生了积极影响,该公司的首席技术官Sejal Amin说道:"经过仅仅八小时的学习,90%的开发人员表示开发人员体验有所改善,我们收到的一些早期反馈是,大多数开发人员的工作效率都有所提高。"
但还他补充说到:"Gen-AI的功能是有限的。也许有一天,生成式人工智能可以从开发过程的初始阶段就被用来构建安全性,但根据我们的经验,目前没有任何工具能够生成具有安全性、性能、稳定性和一定规模的生产级代码,所有这些都是我们需要考虑的与我们业务相关的因素。"
Gen-AI可以提高代码生产率
SlashData在对17000名开发人员进行调查后发现,80%的程序员认为Gen-AI将提高他们的工作效率和生产力,这个数字对于一项新技术来说,是一个了不起的成就,这也表明Gen-AI有望为刚入行的开发人员提供非常有效的帮助。对于编程经验不足一年的开发人员,有80%的人表示Gen-AI将帮助他们使用以前无法使用的工具,而拥有超过16年经验的开发人员中只有60%的人认同这一点。
Forrester分析师Janet Worthington也表示,Gen-AI将对计算机从业人员的生产力产生巨大影响。她表示:"借助Gen-AI和软件开发技术,我们预计自动化测试用例的生产力将提高15%到20%。在编码方面,我们预计生产力将提高50%。同时,人们能够生成的代码量还在飙升,而我们才刚刚开始。"
需要注意的是,相关的工具还在不断改进。最初,很多人可能只是在Chat GPT上发送一些的简单问题,现在已经演变成可以集成到软件开发流程中的编程"助手"。根据LinearB今年1月发布的一项针对首席技术官和技术工程师的调查,87%的组织计划今年投资基于 Gen-AI的编码工具。
但是,这些代码真的有用吗?那可不一定!
根据GitClear在今年1月份发布的一份对1.53亿行代码的评估,代码流失率(即推送到仓库但在两周内被恢复、删除或更新的代码百分比)随着Gen-AI编码助手的兴起而不断增加。该公司预计今年的代码流失率将达到7%,是Gen-AI出现之前的两倍。
这并不是Gen-AI在生产力方面的唯一问题。每年,Google Cloud都会调查数万名开发人员,以发布年度DevOps报告,而今年的人工智能则是一个主要的话题。受访者表示,人工智能在编写和优化代码以及分析安全性方面已经显示出价值,可以帮助他们学习新技能、识别错误、编写测试和创建文档等。但还有调查数据显示,人工智能对团队绩效和软件交付绩效的影响是中性甚至是负面的。
利用Gen-AI实现代码安全
在编写安全代码方面,Gen-AI更是喜忧参半。许多人希望通过从公共代码库中吸收最佳编码实践(可能通过组织自己的政策和框架进行增强),这样一来人工智能生成的代码从一开始就更加安全,从而避免人类开发人员常犯的错误。
比如说,当开发人员开始编写一段新代码时,Gen-AI可以提供智能化建议,或直接生成代码,这不仅简化了编码过程,而且还最大限度地减少了DevSecOps团队主动监控和解决安全问题的需求。
Gen-AI掌握上下文信息的能力可以开启软件开发的新时代,并提高代码质量和效率。Netskope首席信息安全官James Robinson认为:"尽管存在潜在的缺陷,但利用Copilots等生成式人工智能工具最终将使开发人员能够编写出缺陷和漏洞更少的代码。让Gen-AI自动使用安全实践和机制有助于打造更安全的编码环境。其好处包括改进代码结构、增强代码解释和简化测试流程,最终减轻DevSecOps团队的测试负担。"
很多开发人员认为,我们现在已经可以迈出这一步了。根据代码安全平台Snyk在去年11月发布的一份报告,76%的技术和安全专家认为人工智能代码比人类代码更安全。
但至少在今天,这种安全感可能只是一种错觉,而且是一种危险的错觉。根据斯坦福大学去年12月最新更新的一份研究论文,使用人工智能编码助手的开发人员编写的代码"安全性明显较低",但他们也更有可能认为自己编写的代码比不使用人工智能写代码的开发人员更安全。此外,研究人员表示,人工智能编码工具有时会建议使用某些不安全的库,而开发人员会在没有阅读组件文档的情况下接受这些建议。
同样的,在Snyk自己的调查中,92%的受访者也认同人工智能可能有时会产生不安全的代码建议,五分之一的受访者表示它"经常"会产生安全问题。然而,尽管Gen-AI的使用加快了代码生产速度,但只有10%的受访者表示他们已经实现了大部分安全检查和扫描的自动化,80%的受访者表示他们组织中的开发人员甚至会选择完全绕过人工智能提供的安全策略。
实际上,尽管采用了Gen-AI编码工具,但超过一半的组织并未改变其软件安全流程。在那些做出改变的组织中,最常见的变化是更频繁地进行代码审核,其次是实施安全自动化。
Forrester的Worthington表示:"所有这些人工智能生成的代码仍需接受安全测试。更重要的是,组织需要确保他们拥有适当的工具并集成这些工具来检查所有新代码以及检查库和容器映像。正是由于Gen-AI的出现,才导致我们对DevSecOps工具的需求越来越大。"
Worthington补充道:"Gen-AI可以帮助DevSecOps团队编写文档,而且Gen-AI特别擅长创建文档和总结信息。
别忘了,生成文本可是 ChatGPT最早的使用场景。
Google的DevOps现状报告显示,由于技术文档的改进,人工智能对组织绩效的影响提高了1.5倍。除此之外,根据CoderPad 的调查,文档和API支持是Gen-AI的第四大最受欢迎用例,超过四分之一的技术专业人士选择将其用于此目的。
反过来,它同样也能帮助开发人员更快地梳理文档。卡耐基梅隆大学运筹学教授Ben Moseley表示:"当我编写大量代码时,我花了很多时间在查阅文档上,如果我能快速找到这些信息,那真的会帮到我。"
利用Gen-AI实现产品测试和质量保证
Gen-AI有潜力帮助DevSecOps团队发现传统测试工具遗漏的漏洞和安全问题,而且Gen-AI还可以解释问题并提出修复建议,它甚至还可以帮助开发人员生成测试用例。
Moseley认为:"有些安全漏洞可能会隐藏的很深,传统工具无法发现和识别这些漏洞。对于那些具有挑战性的事情,你仍然需要人工去寻找它们,而且还得是专家才找得到。但Gen-AI却能够轻松帮我们完成这个任务。"
根据CoderPad的调查,大约13%的技术专业人士已经开始使用Gen-AI进行安全测试和质量保证。Insight首席数据官兼数据和AI产品组合总监Carm Taglienti认为:"我们很快就会看到采用在漏洞数据库上定制训练的Gen-AI系统。"
对于企业来说,一个更大的问题是如何实现Gen-AI功能的自动化,以及在多大程度上让人类参与其中。比如说,如果人工智能用于在流程早期阶段检测代码漏洞。第一阶段是让Gen-AI生成一份关于它所看到内容的报告,然后我们可以回过头来进行更改和修复。然后,通过监控工具的数据,组织可以开始对某些类别的更正建立信任,并开始转向完全自动化。
同样,对于编写测试用例,人工智能也需要人类来指导这一过程。Taglienti表示,Gen-AI还有可能用于审查整个生产环境的安全。
内部Gen-AI策略迫在眉睫
Omdia的企业安全管理首席分析师Curtis Franklin表示,很多大型企业的专业开发人员正在积极使用Gen-AI,而独立开发人员、安全顾问和小型团队也是如此。Franklin认为:"大公司已经制定了如何使用Gen-AI的正式政策。对于任何经过Gen-AI的代码在投入生产之前必须如何检查、修改和测试,都有真正的内部指导方针。但小公司没有这种正式的质量保证框架,因为他们负担不起这种开销。"
DevSecOps从业人员该如何应对
尽管Gen-AI带来了前所未有的开发速度提升,但DevSecOps专家仍需要积极应对由此产生的安全威胁,并在保证速度的同时,构建一套既高效又安全的开发运维体系:
1、建立适应性策略:确保安全流程能迅速适应并融入基于AI驱动的开发环境,同时保持对生成代码的质量控制和安全性审核。
2、强化培训与意识:教育开发者关于正确使用生成式AI工具的重要性,包括避免泄露敏感信息、理解输出结果可能存在的潜在错误,并提倡审慎审查AI生成的代码。
3、集成自动化验证:在CI/CD流程中增加针对AI生成代码的自动化测试、静态分析和动态扫描,以减少误报和漏报的可能性。
4、制定相关规范与政策:更新组织的安全标准和指导方针,明确规定AI辅助编程的实践要求,以及何时何地可以安全地应用这些技术。
5、跨团队协作与沟通:加强DevOps、安全团队及AI团队之间的沟通协作,共同解决因快速生成代码带来的新安全隐患,并设计出更稳健的安全防护机制。
6、持续监控与改进:随着生成式AI技术的发展,不断评估其对软件质量和安全的影响,并据此调整DevSecOps的最佳实践。
总结
从长远来看,随着Gen-AI代码生成器的改进,它们确实有可能提高整体软件安全性。问题是,我们将到达一个危险的拐点,当Gen-AI引擎和模型达到能够持续生成相当不错的代码的程度时,开发团队将面临压力,因为有些人会认为"相当不错"就就足够了。而正是因为如此,漏洞才更有可能在未被发现和修复的情况下影响产品安全。这就是危险区域。
只要开发人员和管理人员保持适当的怀疑和谨慎,那么Gen-AI就会成为一种有效工具。当谨慎程度下降时,就会变得危险。
参考资料
https://arxiv.org/abs/2211.03622
https://cloud.google.com/devops/state-of-devops/
Measuring Impact: The Gen AI Code Report