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