我几十年来一直在呼吁需要更好地培训我们的程序员掌握安全编码实践,最近在这里和这里都有提及。
至少三分之一的数据泄露事件涉及被利用的软件和固件漏洞,我们今年即将面临超过47,000个独立的公开已知漏洞。每天都有至少130个新漏洞被发现并公开报告,日复一日。这是大量的漏洞利用,也是大量的补丁工作。
直到现在,我一直在说我们需要:
- 更好地培训我们的编码人员掌握安全编码实践
- 编程课程需要教授安全编码实践
- 雇主需要要求程序员具备安全编码技能
好吧,这些都已经是旧闻了。我们不再需要这些了。
我们现在需要的是教会AI如何更安全地编码。
在所有AI带来的生产力提升中,它编写代码的能力(和/或协助开发人员编写代码)无疑是当前AI成熟度水平下最大的生产力发展。几乎每个活着的编码员都在使用AI来编码,如果他们还没有,他们将会使用。生产力提升非常显著。我的编码员朋友说,通过使用AI,他们的生产力至少提高了30%-40%。即使是最初对AI持怀疑态度的程序员朋友也已经转变了看法。编码在很大程度上已经是一个AI驱动的世界,尽管人类仍然需要参与其中。
培训我们的程序员掌握安全编码的时代已经过去。
如果大部分编码工作由AI完成,那么现在是时候强制AI进行安全编码了。而目前它做得并不好。我见过的关于这个问题的每一项研究都显示,AI在安全编码方面比人类程序员更差或同样糟糕。以下是一些例子:
- Schneier on Security
- Veracode
- SC Media
早期,我对AI可能最终成为我们安全漏洞问题的解决方案抱有极大希望。当然,我预计AI生成的代码会有一定水平的安全漏洞,但自动化代码肯定能避免简单的问题,并不断改进以消除剩余的漏洞。我以为在短时间内,软件、服务和固件中的大多数安全漏洞都将成为过去。
天啊,我错了!
事实证明,现有的协助代码开发的AI显然和人类一样糟糕,甚至更糟。我想在某种程度上这是有道理的——垃圾进,垃圾出。一个仅仅在充满错误的人类代码上训练的AI,怎么能期望它产生更少的安全漏洞呢?
但这能有多难呢?拿你的AI代码生成算法,告诉它们不要执行所有已知的常见安全漏洞。告诉它避免使用弱的编程结构,始终执行输入验证,永远不要在编程代码中放置硬编码的凭据,并避免OWASP Top 10中涵盖的任何编码情况。
我意识到这一定比听起来更难,当然,安全编码领域的每个公司和个人都已经在关注这个问题了。我是个后来者。
我承认。我是在对已经了解情况的人说教。但我在这里揭示的是我的新理解。我对此理解得晚了。我在这里承认这一点。在几十年来呼吁人类接受更多安全编码培训之后,我认识到那个时代已经(可能)过去,现在是我们主要集中精力让我们的编码AI跟上步伐的时候了。
这给了我希望。
在几十年来试图教会人类更安全地编码却做得不好或效果不佳之后,是时候将这个任务交给自动化工具了。如果我们能训练我们的AI避免常见的安全漏洞,有一天我们运行中的新CVE漏洞数量可能会开始下降,而不是增加。
由于一些未知的原因,我们未能赋予我们的人类程序员足够的安全编码技能。时代已经改变。技术已经转变。是时候专注于训练AI进行安全编码了。
敏锐的读者会意识到,计算机安全的未来更是如此。我们曾经主要关注人类培训,但随着时间的推移,我们将越来越多地专注于更好地训练人类使用的AI代理。
我们的AI代理正迅速成为我们自身的延伸,只有通过更好地教育我们的AI,我们才能更好地保护自己。