这篇文章的一个版本出现在 技术报告.它已被更新并在此转发。
为了创造一个安全团队和开发人员目标一致的环境,这是一场艰苦的战斗,但也是必不可少的。我们还有很长的路要走,但那些阻碍协同作用的障碍已经变得非常明显,而协同作用是打开软件安全共同责任的大门所必需的。聪明的公司希望发展他们的战略,以避免这些陷阱,找到一个富有成效的前进方式,并使用DevSecOps来充分发挥其人力的潜力。
我没有预料到的是,对于什么是安全编码行为的看法是有争议的。根据与埃文斯数据公司合作的全新研究,这种情绪被白纸黑字地揭示出来。2022年开发者驱动的安全状况调查深入研究了1200名活跃开发者的关键见解和经验,阐明了他们在安全领域的态度和挑战。
其中一个重要的发现是,只有14%的开发者在编码时将安全作为优先事项。虽然这表明有巨大的改进空间,但它证实了我们已经知道的情况:在开发人员的世界里,功能建设是王道,他们仍然没有能力使安全成为他们的DNA的一部分。然而,如果再加上开发人员对安全编码的定义的数据,这就值得关注了。
这些看法是由开发人员在工作中的经验驱动的,这也说明了许多组织的环境,即开发人员根本不是打击常见漏洞的焦点。他们的能力是至关重要的,但与此同时,我们必须尽快在 "安全编码 "的范围上达成一致,以及我们应该从一个有安全技能的开发人员那里得到什么。
我们需要在开发者的世界里消除安全的神秘感。
在最好的情况下,网络安全是一个多面的、不容易操作的野兽,虽然安全编码只是整体景观的一部分,但它是系统中一个复杂的齿轮,需要专家的关注。
调查显示,对于普通开发者来说,安全代码工作的概念是相当孤立的,他们的范围往往局限于一个单一的类别,而不是对基本原理和其他方面的整体看法。开发人员表示,他们依赖使用现有的(或预先批准的)代码,而不是编写没有漏洞的新代码的做法。虽然关于第三方组件的安全意识(尤其是补丁,Log4Shell的失败就是一个很好的例子。自12月以来,30%的实例仍未打补丁)是非常重要的,测试现有的代码也是如此,但仅仅这些并不能满足安全编码能力的功能水平。
代码级别的漏洞是由学习了不良编码模式的开发人员引入的,而在他们的关键绩效指标中不强调编写安全代码(再加上缺乏安全文化)只会强化这种可接受的标准。
安全领导可以在提高初始意识和确定最紧迫的知识差距领域方面发挥很大的作用,首先确保向开发团队展示安全编码所需的完整画面。测试和扫描预先批准的代码是一个功能,但减少漏洞需要在积极使用的语言和框架中进行良好的、安全的、编码模式的实践培训。
在开发人员的技能提升中,背景是至关重要的,当涉及到企业的安全目标时,他们需要被带入旅程。
许多组织需要升级他们的安全计划。
随着软件驱动技术的爆炸,为过去十年网络安全事件的快速增长让路,我们都在争分夺秒地跟上威胁者昼夜不停地在有价值的系统中发掘漏洞。
DevSecOps方法论建立在这样一个理念上:每个人都要分担安全责任--包括开发人员--而且从SDLC的一开始,它就是一个主要考虑因素。问题是,特别是在大公司,他们可能离实施DevSecOps作为一个标准还很远。2017年,项目管理协会的一项研究表明,51%的组织仍然在使用瀑布式的软件开发。这项研究现在已经是五年前的事了,但要知道大型企业的变化是多么的渐进,不太可能出现向最新的安全导向方法学的急剧转变。这些传统的流程可能会给安全专家带来一场艰苦的战斗,他们试图用全面的战略来覆盖所有的基础,以防止网络威胁,而将开发人员和他们的需求改造成这种景观是一个挑战。
然而,我们不能把这作为借口。企业中的安全专家可以在提升的策略中利用开发人员;他们只需要熟悉他们的需求,并将他们视为防御性游戏的一部分。他们需要全面的培训,任何对安全的责任都需要在他们的技术栈和工作流程方面加以实施。
安全编码="太难 "的篮子?
Evans Data的研究发现,有86%的开发者认为安全编码的实践具有挑战性,92%的开发者经理也承认,他们的团队需要更多的安全框架培训。令人担忧的是,48%的受访者承认,他们故意在代码中留下漏洞。
这描绘了一个非常令人担忧的画面。看来,一般来说,开发人员没有得到频繁、充分的培训,也没有得到足够的机会来了解良好的安全实践和卫生。从字里行间可以看出,问题的关键在于:开发人员在工作中根本没有优先考虑安全问题。这一点,以及他们所接受的培训并没有建立起他们的信心或实际技能,也没有帮助他们理解他们决定发送有漏洞的代码的影响。
Colonial Pipeline勒索软件攻击是过去一年中最具破坏性的供应链安全事件之一,引发了人们对美国东海岸一半的天然气供应将被无限期切断的恐惧。值得庆幸的是,他们很快就恢复了运行,但社会上并没有出现重大的忧虑。这是一个残酷的时刻,公众面临着网络事件严重影响物理世界的一个元素的前景,而这些元素不一定被认为是软件驱动的,也不一定有网络攻击的风险。而所有这些混乱都是由两个未修补的旧漏洞造成的,其中一个是阴险的、但广为人知的SQL注入。如果开发人员知道当他们选择发送有漏洞的代码时,真正的风险是什么,他们很快就会发现,没有任何情况下,这是一个可以接受的商业风险。
功能性的 "P-P-T "不是由开发商决定的。
如果没有经过仔细考虑的战略,著名的 "金三角"--人员、流程和工具是无法实现的,如果不考虑开发人员的需求和挑战,他们就无法融入一个有效的安全流程。
要提升开发者驱动的安全,需要一个相当大的文化转变,而这要从教育途径开始,让工程师和安全团队都更加清晰。