软件开发中的人工智能与安全性
关键要点
- 新软件需求急剧上升,开发人员越来越依赖人工智能(AI)来提高生产力。
- 超过90%的美国开发人员正在使用AI编码工具,以提高效率、减少重复工作和防止疲劳。
- 在软件开发中,要始终关注安全编码实践,避免盲信AI输出的结果。
- 人类开发人员在识别安全最佳实践和防范攻击方面的视角不可或缺。
在当前不断增长的软件需求背景下,开发人员面临着越来越大的压力,因此,绝大多数开发人员选择使用
来提升自己的工作效率,以便提前完成项目。
研究显示,超过
正在部署AI编码工具。他们提到的一些优势包括提高生产力(53%)、能更多地专注于创造性工作而非重复性任务(51%),以及防止职业倦怠(41%)。AI还将
的时间用于生成和记录代码的时间减少。
这些好处可能会促使更广泛的AI应用。除了减少重复和繁琐工作的时间外,AI也能建议新的代码行并对技术问题提供有效的解答。技术甚至可以提供研究协助,解释可能会阻碍开发人员解决日益增长的挑战的过程。
不过,在软件开发过程中,即使在使用AI工具时,我们也绝不能忽视安全编码实践的重要性。我们不能盲目相信AI的输出,因为其产生错误信息的情况仍然是一个重要问题。辨认安全最佳实践和识别不良编码模式的能力——这种能力可能导致攻击的类型——已成为开发人员必须培养的技能,企业也需在此方面进行投资。我们无法取代关键的“人性视角”,以预见和防范越来越复杂的攻击技术。
缺乏这种视角,导致全球愈来愈多的开发人员创造不安全的软件,这种情况存在着巨大风险。开发人员在使用AI编码助手时所获得的生产力提升对迅速交付代码大有裨益,但缺乏上下文安全意识可能会加剧可利用漏洞的产生。我们在软件开发中将速度视为一种美德,但同时也需要保持安全最佳实践的关注。通过适当的技能培训,
可以实现这一目标。
在最近的一期
中,我提到我们尚未在安全和AI编码方面建立起标准。当前的技术没有经过足够关于不安全代码的训练,无法捕捉到识别各种威胁所需的智能。我们可能在几年后达到这样的水平,但现在并没有,直到那一天到来之前,我们不能盲目信任AI生成的高质量受保护产品。
我们仍然需要具备安全技能的开发人员为组织战略提供支持,同时确保生成受保护的代码,以执行以下任务:
任务 | 任务描述
—|—
修复错误和不一致 | 虽然某些AI工具会标记潜在的漏洞和不一致,但人类仍需对其做出谨慎的监督。检测的准确性仅取决于开发人员的输入和初始提示,开发人员需要理解AI推荐如何在项目的宏观背景下应用。
关注复杂性和全局视野 | AI尚未具备单独处理复杂组件或构思新的创造性DevOps解决方案的能力,开发人员具备理解更广泛目标和潜在结果的技术知识,并需要继续在成功的优先措施中增加安全最佳实践。
实施新语言 | 在处理不熟悉的语言或框架时,AI会减缓开发人员的工作速度,这是一种职业现实,需要时间来建立理解的舒适区。
通过反馈进行合作 | 开发人员表示, [反馈产生积极影响](https://github.blog