让开发人员接受安全编码培训难点在哪?
对开发人员进行安全教育是一项艰巨的任务,但这也是行业应该尽早解决的问题。
随着公司迁移到更具灵活的云基础架构,威胁行为者继续将注意力转向应用程序环境,将其作为入侵系统的切入点。
不少于76%的应用程序受到至少一个安全漏洞的困扰,因此优先考虑软件安全很有必要。然而,由于缺乏培训和教育机会,许多开发人员没有做好编写安全代码和构建设计安全的系统的准备。
尽管我们清楚自己处于这个关键时刻,但网络安全技能差距仍然很大。由于始终缺乏工作场所培训来教授员工安全编码原则以及它们如何影响软件开发生命周期,这使情况更加复杂。
与此同时,威胁行为者的能力越来越强,去年对SolarWinds和Colonial Pipeline等公司的高调攻击促使美国总统乔拜登发布了一项全面的网络安全行政命令,重点强调软件安全。
当前学习课程中缺乏安全编码教育是一个原因。此外,由于软件开发中的不断变化和不断发展的工具链,导致学习和实践差距已经扩大。
在涵盖网络安全的大学课程中,许多课程侧重于防止由不良软件安全实践引起的问题,而不是教授攻击者如何因代码不安全而操纵和控制系统。
开发人员需要了解一些基础知识,了解应用程序如何受到诸如SQL注入或命令注入等攻击的威胁。这些具体的概念在学校没有被充分地教授,所以关于安全编码和应用程序安全原则的培训模块有必要成为计算机科学课程的必要条件。
提高在职培训的意义
由于大多数程序员进入工作岗位时没有基础的安全编码知识,因此开发人员在工作场所获得有效的教育机会以跟上安全漏洞和编码最佳实践的变化变得越来越重要。
消息显示,北美超过一半的组织为开发人员提供了一定程度的安全培训,但只有29%的组织要求每年接受一次以上的培训。
虽然许多组织为员工提供初始安全培训或自学模块,但临时的、偶尔进行的培训并不能让开发人员将他们学到的知识付诸实践。最重要的是,现代培训练习通常是通用的、枯燥的,并且与实际的缺陷识别和修复相去甚远,因此很难在现实世界中保留和执行培训内容。
在日常生活中,开发人员编写了一堆代码,然后一周或一个月后,就可能会出现安全问题。有一半的时间,另一个开发人员会修复这个缺陷,这样编写它的人就没有机会修复它了。这意味着最初的开发人员从来不会应用他们学到的东西,因此很快就会忘记这个教训。
开发人员一直在努力学习新的编码技术。所以,缺乏兴趣不是问题,诀窍在于让它变得有意义。创造动手学习的机会,让程序员能够利用和修补真正的代码,获得实时反馈,然后将这些AppSec原则应用到他们编写的代码中。这种即时反馈循环有助于程序员在反映他们工作流程的真实场景中学习和实践应用程序安全性。
管理困境:风险与回报
目前安全教育面临的另一个重大挑战与此完全不同,或许更难以解决。由于软件开发效率不断提高,由此产生更多代码,但开发团队无法承受让编码人员频繁地接受数小时甚至数天的培训。因此,面对产生的大量代码同时也存在更多安全风险。一些企业已开始在编码阶段使用静态代码检测工具来协助开发人员提高所编写代码的安全性。
管理层需要权衡生产损失的风险与具有安全意识的开发人员之间的利益。现在,数据泄露造成的损失高达4.24亿美元,让开发人员掌握预防和修复软件缺陷的知识,比花费几个小时“重新改造”生产力更有价值。
让开发人员成为英雄
网络攻击每39秒发生一次,如果最近的网络攻击和勒索软件事件在表明任何迹象,那说明事情会变得更加严重。是时候为开发人员进行安全编码培训,以便从一开始就为他们提供构建安全软件所需的安全编码知识,让软件更安全。
参读链接:
https://www.darkreading.com/careers-and-people/creating-the-next-generation-of-secure-developers