技术债务
每个人都知道他们不应该走捷径,尤其是在工作中,而每个人都应该走捷径。 有时并不重要,但是在代码开发方面,确实可以。
任何有经验的程序员都知道,快速而肮脏的方式构建代码很快就会导致问题。 这些问题可能不会造成灾难性的影响,但是每次您要进一步开发代码时,它们都会遭受很小的损失。
这是技术债务背后的基本思想,这个术语是由著名程序员Ward Cunningham首次提出的。 技术债务是一个隐喻,可以解释开发人员和软件团队在采用快捷方式时所承受的长期负担,并且由于考虑到了快速而肮脏的设计选择,它已成为一种流行的方式来思考我们在未来开发中必须付出的额外努力。
“安全债务”是此概念的扩展,在本文中,我们将研究该术语的含义,为什么会产生问题以及您可以对此做些什么。
什么是抵押债务?
为了了解安全债务的工作原理,我们必须考虑软件开发生命周期。 如今,对于开发人员来说,即使是使用新软件,也很少以空白页开头。 至少,大多数程序员将使用从在线存储库复制的开源代码来启动新项目。
然后,他们有两个选择:他们可以深入研究正在使用的代码,并从根本上解决问题,或者可以将多余的代码快速粘贴到顶部以快速解决问题。 ,效率低下。
考虑到当今开发环境的需求,大多数开发人员选择第二条路线,我们不能责怪他们。 问题在于,下一个查看代码的人将不得不花费更多的时间来研究代码的运行方式。
众所周知,时间就是金钱。 因此,每次需要更改软件时,由于以前的开发人员采用了快捷方式,因此使其安全的成本很小。 这是抵押债务。
安全债务如何威胁您的软件
曾经有一段时间,安全债务不是一个大问题,至少在开源社区中不是这样。 十年前,开源组件的使用寿命以年为单位,每个人都可以免费使用。
这意味着旧代码中的安全性问题已得到解决。 如今,开发生命周期的速度越来越快,互联网受到越来越严格的审查,这意味着开发人员不再能够像以前那样信任第三方代码。
这导致使用开源组件的开发人员的安全债务显着增加。 Veracode的最新软件安全状态(SOSS)报告发现,开源软件中的安全问题比内部来源的软件要花费大约一个月的时间才能解决。 内购软件的修复率最高,但是即使是从外部承包商那里购买的软件,也比开放源软件的修复速度快了大约两周。
最终的结果-以及“安全债务”一词很好地抓住了这一点-就是,大多数公司当前在整个软件堆栈中都面临安全漏洞,并且这些漏洞的累积速度比固定漏洞要快。 换句话说,开发人员已经用尽了他们的安全债务信用卡,并且淹没了所产生的债务。 当您考虑到仅在美国,家庭总债务在2019年就达到近14万亿美元时,这尤其令人担忧。
如何避免担保债务
要避免积累安全债务,要求开发人员采用不同于当前行业中普遍采用的安全方法。 零知识云加密,推广在线匿名性的VPN和网络入侵防护软件等行之有效的方法非常有用,但可能还不够。
实际上,在上面对安全债务的定义中,可能有一些开发人员在挠头:我们中有多少人想到下一个可怜的人,他们将不得不检查我们的代码中的安全漏洞?
改变这种思维方式是防止积累安全债务的关键。 开发人员应该花时间彻底检查其软件是否存在安全漏洞 ,这不仅在开发过程中,而且在发行后也是如此。 立即修复所有错误,而不是等待安全漏洞逐渐形成。
如果该指令听起来很熟悉,那就做得很好。 软件开发的连续性方法是通过DevOps进行安全分层的重要组成部分,并且是DevSecOps新兴学科的Struts之一。 与混乱的工程一起 ,这些方法试图将安全性集成到开发,测试和评估流程中,从而防止安全性债务的累积。
就像信用卡一样,避免安全债务失控的关键是首先避免采取捷径的诱惑。 当然,这说起来容易做起来难,但是从最近的数据泄露中获得的主要教训之一是,许多开发人员认为安全的旧系统与最近编写的代码一样充满捷径。
测量两次,切一次
由于默认情况下安全性尚未达到 ,因此我们所有人都必须在未来尝试正确地做事。 采取快速,肮脏的方法可能意味着您必须提早离开办公室,但最终,该决定会再次被您所困扰。
如果您早点完成,那就做得很好:您可以花时间阅读我们有关安全性的最佳文章,并检查您的代码是否像您认为的那样安全。
翻译自: https://opensource.com/article/20/3/remove-security-debt
技术债务