每个人都知道他们不应该偷工减料,尤其是在工作中,但每个人都会这样做。 有时这无关紧要,但当涉及到代码开发时,这绝对重要。
任何有经验的程序员都知道,以快速而草率的方式构建代码很快就会导致后续出现问题。 这些问题可能不是灾难性的,但每次您想进一步开发代码时,都会产生一点小的代价。
这就是技术债务背后的基本思想,这个术语最初由著名程序员 Ward Cunningham 提出。 技术债务是一个比喻,它解释了开发人员和软件团队在偷工减料时所承担的长期负担,并且已经成为一种流行的思考方式,用于思考由于快速而草率的设计选择,我们在未来开发中必须付出的额外努力。
“安全债”是这个概念的延伸,在本文中,我们将了解这个术语的含义、它为什么是一个问题以及您可以做些什么。
什么是安全债?
要了解安全债是如何运作的,我们必须考虑软件开发生命周期。 如今,即使是对于新的软件,开发人员从空白页开始的情况也十分罕见。 至少,大多数程序员都将从在线存储库复制的开源代码开始一个新项目。
然后,他们将调整和更改此代码以制作他们的项目。 当他们这样做时,他们会注意到许多安全漏洞。 诸如建立数据库连接时出错之类的简单事情可能表明系统无法良好地协同工作,并且有人采取了快速而草率的方法。
然后他们有两个选择:他们可以深入研究他们正在使用的代码,并在根本层面上解决问题,或者他们可以快速地在顶部粘贴额外的代码,以快速而低效的方式绕过问题。
鉴于当今开发环境的需求,大多数开发人员选择第二条路线,我们不能责怪他们。 问题在于,下一个查看代码的人将不得不花费更长的时间来弄清楚它是如何运行的。
众所周知,时间就是金钱。 因此,每次需要更改软件时,由于以前的开发人员偷工减料,使其安全都会产生少量成本。 这就是安全债。
安全债如何威胁您的软件
曾经有一段时间,安全债并不是一个大问题,至少在开源社区中不是。 十年前,开源组件的生命周期以年为单位衡量,并且对所有人免费开放。
这意味着遗留代码中的安全问题得到了修复。 如今,开发生命周期的速度加快以及互联网审查日益严格,意味着开发人员不能再像以前那样信任第三方代码。
这导致使用开源组件的开发人员的安全债大大增加。 Veracode 最新的软件安全状况 (SOSS) 报告发现,开源软件中的安全问题比内部采购的软件需要大约一个月的时间才能修复。 内部采购的软件记录了最高的修复率,但即使是从外部承包商采购的软件,其修复速度也比开源软件快大约两周。
最终的结果是——“安全债”这个术语很好地概括了这一点——大多数公司目前在其整个软件堆栈中都面临着安全漏洞,并且这些漏洞的积累速度快于修复速度。 换句话说,开发人员已经刷爆了他们的安全债信用卡,并且淹没在他们所欠的债务中。 当您考虑到仅在 2019 年,美国家庭总债务就达到了近 14 万亿美元时,这尤其令人担忧。
如何避免安全债
避免安全债的累积需要开发人员采取与目前行业普遍采用的安全方法不同的方法。 诸如零知识云加密、用于提升在线匿名性的 VPN 以及网络入侵防御软件等经过验证的方法都很棒,但它们可能也不够。
事实上,可能有一些开发人员在我们上面对安全债的定义期间挠头:我们有多少人会想到下一个不得不检查我们的代码是否存在安全漏洞的可怜人呢?
改变这种思维方式是防止安全债累积的关键。 开发人员应该花时间彻底检查他们的软件是否存在安全漏洞,不仅在开发期间,而且在发布后也要检查。 现在修复任何错误,而不是等待安全漏洞累积。
如果这个指示听起来很熟悉,那么做得好。 软件开发的持续性方法是通过 DevOps 分层安全的关键组成部分,也是新兴的 DevSecOps 学科的支柱之一。 与混沌工程一起,这些方法旨在将安全性集成到开发、测试和评估流程中,从而防止安全债的累积。
就像信用卡一样,避免安全债失控的关键是首先避免采取捷径的诱惑。 当然,说起来容易做起来难,但最近数据泄露事件的主要教训之一是,许多开发人员认为安全的遗留系统与最近编写的代码一样充满了捷径。
三思而后行
由于默认安全尚未到来,我们都必须在未来努力把事情做好。 采取快速而草率的方法可能意味着您可以早点离开办公室,但最终这个决定会反噬您。
如果您无论如何都会提前完成工作,那么做得好:您可以利用这段时间阅读我们关于安全性的最佳文章,并检查您的代码是否像您认为的那样安全。
1 条评论