不安全代码的隐性成本:不仅仅是数据泄露

142 阅读4分钟

当发生重大数据泄露事件时,人们很容易将注意力集中在所泄露的用户数据所造成的巨大声誉和经济损失上。然而,除了漏洞本身,不安全的代码还有另一个潜在的成本,这些漏洞和安全问题所产生的技术债务不断增加,并一直积累。

通过从一开始就进行更安全的设计和使用安全的代码,可以使组织保持长期稳定的安全开发速率。

当攻击发生时:计算有形成本

当网络攻击者发现组织代码中的漏洞,能够通过漏洞访问数据库中的敏感信息,甚至泄露相关数据,企业不得不处理数据泄露及其后果,并面临一系列的费用:

泄露调查:要了解泄露的全部范围,需要对存储系统、网络、应用程序代码等进行彻底的取证调查。根据复杂性的不同,这些评估可能会产生高额费用,具体取决于业务的规模。

恢复和补救:随着审计代码、推出安全补丁、跨环境重置用户凭证,并通知受丢失数据影响的各方,成本会继续攀升。

法律和法规费用:根据丢失的数据和运营地点,企业可能面临巨额违规罚款。优步2018年的数据泄露花费1.48亿美元的和解金。

失去客户业务:最具破坏性的是客户永久丧失的信任,以及安全事件后的收入损失。许多有安全意识的客户会在被入侵后离开公司。这种客户流失和负面品牌影响会造成相当大的业务损失。

考虑到范围,很明显为什么数据泄露主导了关于不安全代码成本的讨论。经济损失和客户影响是直接而巨大的。但即使在漏洞攻击之前,易受攻击且负债累累的代码就会积极地对开发人员不利,并更微妙地拖累工程生产力。

不安全代码所造成的影响中,数据泄露占有很大比例,进而产生经济损失和声誉影响。即使未出现漏洞利用,易受攻击的代码和技术债务也会降低开发效率。

技术债务的持续影响

不安全的代码最终会产生技术债务,这也就是将来将其提升到生产级标准所需的额外工作成本。随着这些债务增加,进度压力、过时的库、不充分的测试等,为以后解决这些问题的成本也越来越高。

在无意识中,组织在处理代码缺陷的下游影响时花费了大量时间和资源:

功能开发速度慢:工程周期不断陷入技术债务的 “利息支付” 中。这直接拖累了速度,因为团队在处理遗留问题的同时要保持开发速度。

云计算费用更高:低效代码带来的技术债务也体现在更高的云费用上。底层基础设施的次优使用意味着需要为超额容量付费。

更多 bug 和可靠性问题:不安全的代码自然是质量较低。因此,应用程序需要应对更多影响最终用户的缺陷、性能问题和稳定性问题。

延迟或错过的收入机会:管理不安全代码所需的资金、时间和精力会主动占用工程本来可以推动的业务驱动计划。

缩小差距需要从内部进行变革

考虑到不断膨胀的直接和间接成本,不安全的代码在多个方面构成了安全威胁。开发者可以采取积极的步骤来纠正日常工作:

  1. 采用安全开发流程

在升级到生产环境之前,将安全审查作为 SDLC 的强制性阶段。将轻量级扫描工具作为现有自动化测试的一部分,静态测试、开源分析等以便在更容易修复时及早发现漏洞。

开发人员进行定期的安全开发培训,以了解最新的威胁和缓解技术。

在关键路径上执行更严格的延迟生产渗透测试来发现问题。

  1. 进行持续的技能培训

将安全编码基础知识作为组织成员的必修学习,每年更新知识。

回顾 OWASP 开发人员面临的 10 大风险以及可以直接实施的预防技术。

转变组织流程需要付出很多努力。组织越早调整工作流程来发现代码安全问题,未来为技术债务所花费的时间和精力就越少。随着时间的推移,持续的应用安全实践可以成为组织的永久能力。尽管无法完全消除风险,但有助于避免发生灾难性安全问题。

参读链接:

www.cio.com/article/349…