这篇文章的一个版本出现在DevOps.com上;它已被重新命名并更新以包括新的信息。
虽然CISO和CIO在软件安全方面承担着令人羡慕的责任,特别是在公司数据泄露的尴尬情况下,他们也获得了一个独特的机会,其相关性越来越强:他们是新的创新者,他们可以通过正确的方法产生巨大的影响力。地球上的每一个组织,无论是公共的还是商业的,都在为在一个迅速数字化的世界中保留(和获得)他们的市场空间而奋斗。客户期望从过去和未来的产品中获得无缝的在线体验,而 "数字优先 "的业务方法正成为强制性的。毕竟,如果这些期望得不到满足,几乎可以肯定会有一个竞争对手准备好扑向这个机会。
那么,这对现代CISO或CIO来说意味着什么?自然,这意味着他们正在雇用开发人员团队,每个人都在创造一行又一行的代码,形成他们的数字产品或服务。网络安全,虽然多年来一直是一个主要的考虑因素,但随着越来越多的商业运作在网上进行,并在攻击者的视线中,网络安全的风险因素越来越大。漏洞的影响是巨大的,但选择放弃数字化并不是一个选项。
富有创造力的CISO和CIO们正处于与他们的AppSec和开发团队一起继续打造我们的数字未来之路的首要位置。他们无疑将塑造企业、政府和公共服务在线的长期创新,但他们承担着平衡快速上市目标、高软件质量和减轻安全风险的重任。
到目前为止,这种平衡是非常难以达到的。这导致了开发团队往往是各自为政,普遍把主要精力放在提供特性和功能上,而没有考虑到他们在快速生产的代码中可能产生的漏洞。应用安全专家们不断地修复同样的错误,而相对简单的后门被打开所带来的漏洞威胁却很大。
如果我们的数据要保持安全,CISO和CIO需要对他们的团队合作方式进行创新,并自上而下打造一种积极的安全文化和共同责任。只要看看 万豪酒店因其2018年的漏洞而面临的灾难性后果就知道了。超过1.23亿美元的GDPR罚款,超过5亿条记录被盗,安全声誉一塌糊涂。这场灾难的发生在很大程度上是不安全的编码实践的直接结果,早在 2014年就在Starwoods服务器上发现了SQL注入漏洞,该公司于2016年被万豪收购。他们随后对该软件的使用显然没有从应用安全的角度进行检查。这给了恶意攻击者多年的时间来访问和获取数据,而其他漏洞,如弱口令,随着时间的推移,留下了更多的漏洞可以利用。
CIO和CISO需要非常仔细地考虑他们自己的软件安全环境的状况。一般开发人员的安全意识如何?AppSec和开发团队的合作情况如何?没有 "神奇的魔杖 "可以解决,但文化、培训和支持是可以努力和改进的。开发团队可以从组织中数据泄露风险的第一线转变为安全的超级英雄,在坏代码进入生产之前就将其阻止。
安全编码健康检查。你的安全编码是否处于生命维持状态?
你自己的开发团队适合在哪里?我创建了这个安全编码清单,以帮助CIO和CISO确定他们的开发团队是否真正有能力成为安全编码的推行者,帮助以更快、更好和更安全的代码进行创新(或者,事实上,你是否需要进行安全项目的检修)。
1.你的C-Suite的其他成员的支持程度如何?他们是否理解传统的网络安全不再是足够的?
在未来的软件中,使用过时的安全措施来确保网络层的安全是根本不够的(而且,让我们面对现实吧,反正很少成功),即使是面对半专业的黑客。在许多一致的报告中, Verizon的 "2017年数据泄露调查报告"指出,今天有惊人的35%的数据泄露是由网络应用程序漏洞引起的。
网络应用安全与网络安全同样重要;忽视这一点,不为应用安全措施的基本保护层做预算和灌输,可能会让你很容易受到侵害。
2.你的左移足够远,而且你做得足够早吗?
目前应用安全的方法是相当重的工具,重点是在软件开发生命周期(SDLC)中从右到左的移动。从定义和设计上看,这承认了这个过程是有缺陷的,并支持检测和反应的结果。安全团队正在寻找和检测已经写好的代码中的漏洞,对修复已提交的代码做出反应,而不是确保它在制作过程中没有漏洞。根据美国国家标准与技术研究所(NIST)的数据, 检测和修复已提交代码中的漏洞比在IDE中编写时防止漏洞的 成本高30倍。这甚至还没有考虑到生产延迟、重复处理和反复补救相同的众所周知的安全问题所花费的时间。
一个真正强大的安全文化坚持从左边开始,在开发者队伍中激励安全推行者,同时给开发团队提供正确的工具和培训,使其成长并以安全编码的心态行事。着重于持续的自我发展,并弯曲他们解决问题的肌肉,使他们能够成为组织的第一道防线,从一开始就防止常见的漏洞发生。
3.你是在努力培养实用的安全技能,还是只是在单向地灌输知识?
绝大多数的安全培训解决方案(在线和CBT)都集中在建立知识,而不是直接与他们的工作相关的实际技能。为了使开发人员能够茁壮成长并参与编写安全代码,他们需要定期获得上下文的实践学习,积极鼓励他们在真实环境中不断培训和发展技能。他们需要通过真实的代码实例来了解最近发现的漏洞,并且能够在他们喜欢的语言和框架中工作。这种学习经验可以有效地帮助他们了解如何在他们在工作过程中积极处理的代码中定位、识别和修复已知的漏洞。
虽然外面有很多知识渊博的老师,也有很多关于修复安全漏洞的信息,但翻阅教科书或观看数小时的视频并不能吸引很多有创造力、能解决问题的开发者的注意力,而且如果不断发生的数据泄露事件能说明问题的话,在防止漏洞进入代码方面仍然基本上没有效果。
4.你是否用实时指标来衡量你的安全编码技能?
确保在开发团队中建立安全第一的思想的一个重要步骤是收集和审查证据。这不应该是一个假设或猜测的游戏:开发人员要么有安全意识,要么没有。
衡量标准试图向开发者和他们的组织证明他们的努力工作得到了回报,他们的个人安全编码技能正在提高。你不能改善你不能衡量的东西。应该有相关的评估,这些评估应该有助于实时确定你的开发团队的进展,以及基准他们的安全编码的优势和劣势,以便持续改进。
很多时候,安全培训变成了组织的 "打勾 "活动,而没有强调确保这种培训的有效性、参与性甚至是保留。
5.你的外包供应商是否使用强大的安全编码技术?
许多组织决定将开发工作外包给第三方机构。无论他们是在国内还是离岸,他们的一般安全编码能力和实践对他们的客户来说都是一个相对神秘的东西。在最好的情况下,一个组织将收到的与安全有关的唯一形式的保证是在合同中要求交付品是 "安全 "的声明。很少有公司采取措施来验证这些开发公司的技能,因此有可能在交付软件时,没有遵循健全的安全编码做法,而是按照简报上的要求进行操作。更糟糕的是,如果采购公司没有意识到应用程序中的任何固有的安全缺陷,它就有可能将有漏洞的软件送入野外。
最常见的情况是,任何漏洞都会被专门的安全专家发现(这些人很难找到,而且成本很高),你将面临上线日期的延迟,以及可能的合同讨论,即谁需要为修复这些安全弱点付费。然而,如果你在前期很聪明,并对将要建立你的下一个应用程序的开发人员的应用安全技能进行评估,你就可以节省很多潜在的延误、挫折和现金。
6.你的开发人员是否知道最常被利用的安全弱点?
超过85%的被利用的网络应用程序漏洞是由10个已知的漏洞 " OWASP Top 10"引起的。至少,你的应用安全培训必须包括这些,以及更多的漏洞类型。你的开发人员所面临的培训挑战必须定期修订和更新,为新的编码框架或新的漏洞类型提供新的挑战。
使用真实世界的安全编码场景的精确培训应该是标准;模糊的一般知识是根本无效的。想知道这些安全编码场景是什么样子的吗?请看我们的 "编码者征服安全"博客系列;每篇文章都有一个可玩的挑战)。)
7.你有内部安全推行者吗?
每一个开发人员密集的组织都应该投资一个安全卫士,这个人将负责在开发团队中维护一个高的安全标准。他们的目的是成为任何有安全问题的人的支持联络点,并成为遵循安全最佳实践的主要推行者。
他们是安全文化拼图中的重要一环;一个优秀的安全卫士可以保持密集培训的势头,确保团队的所有成员都有他们需要的东西,并继续倡导支持。
8.你是否为你的开发人员投资了工具以使安全编码更容易?
如果你的组织是一个实行敏捷开发的组织,或者你确实面临着对公司建立的应用程序的频繁更新,那么将部分安全工作自动化是跟上疯狂的工作节奏和工作量的唯一方法之一。
在SDLC的每个阶段都有一些工具,可以作为顾问、质量把关人或检测工具。此外,有些工具在代码上运行自动测试,一旦软件进入生产阶段,就会模拟黑客的尝试。所有这些都有自己的好处和挑战,但没有一个能提供全面的、100%的保证,即应用程序中不存在安全威胁。你可以采用的首要预防措施是,你越早捕捉到弱点,就越快、越便宜地补救它,对你的业务影响最小。
具有前瞻性的CISO的下一步行动
那么,对照上述检查表,你的组织表现如何?
虽然首席信息官和首席信息官基本上被迫积极建立他们的企业DevOps和DecSecOps能力,但这并不意味着没有时间考虑和实施正确的工具和跨团队培训。安全编码技能将成为创新的武器,而不是阻碍,放弃这些技能可能意味着对公司声誉和数据的绝对破坏。这些技能代表了关键的能力,也是减少漏洞和降低风险的更便宜的长期解决方案。
一个杰出的、创新的CISO有能力自上而下地协调一个健康的安全文化;确保你的员工拥有有效执行安全最佳实践所需的东西。
Pieter Danhieux是一位安全专家,也是 "安全之家 "的联合创始人。 Secure Code Warrior.