上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.6 安全代码审查和渗透测试耦合
“360度审查”一词,是指一种将安全代码审查结果用于计划和执行渗透测试,并将渗透试验结果反过来再用于下一轮安全代码审查的方法。图2-1所示为360度安全代码审查流程。
图2-1 360度安全代码审查流程
从安全代码审查知道代码的内部结构,并使用这些知识制定测试用例和滥用用例作为白盒渗透测试(也称为透明盒和玻璃盒测试)。这种方法可以使渗透测试更有成效,因为测试可以专注在被怀疑的或已知的漏洞上。使用Web应用特定的框架、库和开发语言的知识,渗透测试可专注于识别在这些框架、库和开发语言中已知的安全弱点。
白盒渗透测试也可用于对安全代码审查所发现的漏洞,识别其所带来的实际风险。在安全代码审查过程中发现的漏洞,可能不会在渗透测试期间被利用,这是因为安全代码审查人员不会考虑其保护机制(如输入验证)。在这种情况下,该漏洞的实际风险可能因为无法暴露而较低。然而,添加渗透测试用例依然是有好处的,因为如果未来保护机制发生变化,那么漏洞将会被暴露。
而在白盒渗透测试(基于安全代码审查)中暴露的漏洞肯定是真实的,并且这些漏洞的实际风险应当被仔细分析。攻击者获得目标Web应用程序的源代码并向开发人员提出建议是不现实的。因此,攻击者利用由白盒渗透测试人员所发现的漏洞的风险较低。然而,如果Web应用开发组织机构担心攻击者获得内部信息(前雇员与现雇员或承包商之间勾结)的风险,那么真实世界中的风险可能一样高。
渗透测试的结果可用于安全代码审查的其他目标。除解决这些在测试过程中暴露的特定漏洞以外,在代码中的其他地方寻找同类漏洞是一个很好的实践,即使这些漏洞在测试过程中没有被明显地发现。例如,如果在应用程序的某个地方没有使用输出编码,并且渗透测试利用了这个漏洞,那么很有可能在应用程序的其他地方也没有使用输出编码。