然而,这些相同的接触点通常也是黑客和其他恶意用户用来窃取信息、发动攻击和引发其他犯罪活动(如欺诈和勒索软件)的途径。
尽管大多数企业在增加网络安全方面的投入,而且像 DevSecOps 这样的策略正在将安全性转移到那些作为企业命脉的开发者身上,但成功的攻击仍然很普遍。开发者了解安全的重要性,并且非常希望部署安全和高质量的代码,但软件漏洞仍在继续被利用。
为什么软件漏洞持续存在?
2021 年 12 月,全球安全编码公司Secure Code Warrior联合埃文斯数据公司(Evans Data Corp)合作开展了“2022 年开发者驱动的安全状况调查”,对全球 1,200 名开发者进行了调查,以了解安全编码实践方面的技能、认知和行为,以及它们在软件开发生命周期 (SDLC) 中的影响和感知相关性。
调查发现,对于什么是安全代码缺乏明确的定义或理解。而事实证明,开发者认为的安全代码与实际的安全代码之间存在很大差异。
编写高质量的代码是开发社区的首要任务,这并不奇怪。但当被问及安全代码时,只有 29% 的人表示优先考虑编写没有漏洞的代码。相反,开发者将不太安全和不太可靠的做法与开发安全代码联系起来。例如,审查现有代码 (37%) 和依赖外部源代码库获取安全代码 (37%) 是开发者与安全编码相关联的首要选择。重用已经被认为是安全的代码 (32%) 是另一个受欢迎的选择。编写无漏洞的代码排在第 6 位,而只有 29% 的人表示这是创建安全代码的最佳方式。
缺乏时间和缺乏统一的管理方法被认为是创建安全代码的最大障碍。对现有代码的依赖是增加软件附带可利用漏洞的风险因素之一。解决构成安全代码的这种脱节问题对于开发者创建同样安全的高质量代码是必要的。
企业能做些什么来解决这个问题?
调查中最重要的信息之一是,开发者社区里都是在意自己所做工作的专业人士。作为一个团队,编写高质量的代码对于他们来说非常重要。问题在于,许多情况下他们工作的企业没有找到开发安全代码所需的最佳方法,也没有投入足够的资源进行培训或使他们的开发者能够实现这些目标。
事实上,大多数开发者表示,他们的企业甚至没有明确定义什么是安全代码。而最令人担忧的例子之一是,28% 的受访者表示,一旦应用或程序部署到生产环境中或向公众开放,如果没有出现漏洞,他们的企业则认为代码是安全的。
这可能不言而喻,但在当今复杂的威胁环境中,仅仅希望获得好的结果而不实际努力,可能会发生意料之中的后果:出现更多的安全漏洞。
值得庆幸的是,在这种情况下,至少开始解决问题然后朝着安全代码的目标努力是相对容易的。第一步也可以说是最重要的一步,是企业定义他们认为安全的代码。超出该定义的所有内容都将被视为不安全。
安全编码应该被定义为熟练的开发者从 SDLC 开始编写没有漏洞的代码的实践。只有定义了这种做法,开发者社区才能朝着这个目标努力。
实现安全代码的目标
一旦确定了安全代码的定义,企业就应准备好支持这些工作以及以实现安全代码为目标的开发者。这种支持至关重要。如果没有它,企业内部安全代码的定义虽然很重要,但也不过是一只纸老虎。安全编码实践必须得到管理层的认可,并给予适当的考虑、授权和预算才能成功。
这可能需要为开发者制定新的基准测试目标,传统上他们是根据编码速度来衡量的。事实上,调查中有37% 的开发者表示,他们的代码中会留下已知漏洞,因为紧迫的期限导致没有时间修复它们或者从一开始就正确地编码。
首先,这可能意味着需要增加最后期限让开发者有更多的时间正确编码,在编码过程中的时间支出会在后期弥补回来,因为对程序修订、补丁和部署后的需求会相对减少。而且,消除一个可能存在的漏洞可以节省数百小时甚至数百万的收入损失、罚款以及处理成本。
开发者还需要相关的实践培训,尤其是与他们可能遇到的特定漏洞相关的培训,并帮助他们学习如何识别和修复代码漏洞。鉴于 36% 的受访者表示他们希望从代码中删除漏洞,但没有相应的技能或知识,这一点尤其正确。