10.3.3 渗透测试

渗透测试(pen-testing)最恰当的描述是“与有经验的攻击者的对抗”。还有其他的术语被用于描述这一概念:虎队测试(tiger team testing)、道义黑客入侵(ethical hacking)等。定义中的“有经验”这个词很关键:我们多次发现渗透测试得出的结果与进行测试的人员技能成正比。

我们坚信渗透测试应该加入到每个产品的常规开发过程中,至少在每个主要发行版本中。因为Web应用比传统软件应用更常变化(往往每周都有固定的更新),我们建议对高价值的Web应用至少每年或者半年进行渗透测试审核。

渗透测试需要特殊的人员,这些人确实喜欢对其他人构建的技术产品进行回避、破坏或者篡改。在我们合作过的大部分组织中,很少有人在心理上和实际上很适合进行这种工作。在长时间中保持一个内部渗透测试团队就更加困难,因为在良好的渗透测试技能和管理层在预算过程中认识到的价值之间存在着“认知错误”和经常的不一致。因此,我们建议认真地评估内部人员执行渗透测试的能力,充分考虑由外部服务提供商来进行这项工作。第三方人员的好处是公正,这一好处可以在外部谈判或者市场活动中得到利用。例如,向可能的合作伙伴说明第三方渗透测试的定期进行可能在竞争性的外包方案中展现出差异。

如果你选择雇用第三方渗透测试人员来攻击你的产品,下面是争取最大投资回报时要考虑的关键问题:

·时间表: 理想的情况下,渗透测试在Beta代码可用之后进行,但是在交付日期之前渗透团队应该识别出严重的问题并且留有足够的时间进行重大的修改。是的,这是一条不错的路线。

·联络人: 确保管理人员准备好了向渗透测试人员提供测试信息所必需的产品团队人员。这将需要与测试人员的充分磨合,使他们取得对你的产品必要的了解,以便取得好的结果。

·交付的结果: 渗透测试人员常常在活动结束之后提交一份从未有人看过的文档报告。这个报告在某人的桌上闲置着,直到许多个月之后意外地出现在年度审计中,这时候已经失去了许多重要的修改时机。我们建议让渗透测试人员熟悉你的内部缺陷跟踪系统,并且随着工作的进行直接将问题提交给开发团队。

最后,不管你选择何种安全测试方法,我们都强烈建议所有测试集中在威胁建模中要求优先处理的风险上。这将使你的整个测试工作保持连贯和一致性,不断取得减少严重安全漏洞的成果。