应用软件安全代码审查指南(新型网络安全人才培养丛书)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 为什么代码有漏洞

MITRE已在CWE项目中记录了大约800种不同的软件脆弱点。这些脆弱点是每位软件开发人员都可能写入代码中的错误,从而导致安全事故的发生。每个脆弱点都是不明显的,并且大多非常棘手。软件开发人员在学校里没有学习过这些脆弱点,并且大部分软件开发人员在工作培训中也没有涉及这些脆弱点。

近几年,由于技术和方法的飞速发展,这些脆弱点已经变得非常重要。人类的技术发明能力已远远超过了技术保护能力。现在,许多技术没有足够的安全机制来保障软件安全,甚至有的技术根本就没有安全机制。

组织机构有许多原因来说明它们为何花费较少成本来保障软件的安全性,而这些原因最终源于软件市场中的一个基本问题。因为软件本质上是一个黑箱,要明确安全代码和不安全代码之间的差异是非常困难的。没有这种可见性,客户不会为安全代码支付更多的费用,供应商也不会增加成本来编制安全的代码。然而,当信息安全专家全力倡导安全代码审查时,组织机构常常因为以下无须为安全投入更多成本的借口而无法得到响应:

“我知道我们永远不会被黑客攻击,所以我们不需要安全。”

“我们配置防火墙来保护我们的应用程序。”

“我们相信我们的员工不会攻击我们的应用程序。”

在过去的10年中,“OWASP 安全代码审查项目”的项目团队执行了数以千计的应用程序审查,并发现所有应用程序都带有安全漏洞。如果没有对代码进行安全漏洞审查,那么应用程序有安全问题的可能性几乎是100%。

现在,依然有很多组织机构选择忽视代码安全。如果正在做的某个安全决议来源于组织机构的安全风险评估结果,那么决议将得到全力支持。然而,如果安全风险不被识别或理解,组织机构将不会降低安全风险、消除安全漏洞,而这对股东和客户是不负责任的。这就如Donald Rumsfeld所阐述的“神秘解释”那样,这些组织机构应该知晓代码安全的意义和重要性。

Donald Rumsfeld说:“我们知道,有已经被知道的已知事件;有我们知道自己知道的事情。我们也知道有已知的未知事件;这就是说,我们知道有些事情我们是不知道的。但是,仍有未被知道的未知事件(我们也不知道还有哪些不知道)。”