10.1.5 识别和记录威胁

有了应用的图形表现,包括安全边界和入口点,我们现在就可以开始确定应用的所有威胁。威胁建模的最大难题是系统性和全面性,特别是在不断变化的技术和发展中的攻击方法中。没有一种技术能够声称识别复杂软件产品中所有可能的威胁,所以你必须依靠最佳实践来尽可能地接近100%,并利用好的判断力来确定何时达到收益递减点。

图10-4 1层DFD,带有信任边界和入口点

最简单的方法是查看应用DFD,创建威胁树或者威胁列表(更多关于攻击/威胁树的信息参见“参考与延伸阅读”小节)。另一种有用的机制是Microsoft的STRIDE模型:尝试对每个前面记入文档的资产进行欺骗、篡改、抵赖、信息泄露、拒绝服务和权限提升的头脑风暴。如果你在记录资产文档时考虑了机密性、完整性、可用性和审计日志(CIAA)需求,就已经成功了一半:你会注意到,STRIDE和CIAA协作得很好。

考虑所有已知的Web应用威胁也非常有用。内部或者外部安全人员有助于为威胁建模过程带来这种知识。此外,访问和查阅安全邮件列表如Bugtraq,以及安全网站如www.owasp.org也有助于创建威胁列表。Microsoft发布了常见Web应用安全威胁的“小抄本”和漏洞分类(相关链接参见本章结尾处的“参考与延伸阅读”小节)。当然,你所拥有的这本书也是确定常见Web安全威胁的一本相当好的参考书。

提示  在这个时候,不要浪费时间去确定这些威胁是否/如何缓解,那是以后的事情,试图在这个时候缓解威胁只会偏离轨道。

下面是购物车应用的示例威胁列表:

·验证

·暴力凭据猜测

·会话管理

·会话密钥可能容易猜测

·会话密钥不会过期

·没有实施安全Cookie

·攻击者能查看其他用户的购物车

·授权没有正确实施

·用户可能没有从共享PC上注销

·不恰当的输入校验

·SQL注入以绕开验证例程

·留言板可能遭到窃取凭据的跨站脚本(XSS)攻击

·错误信息

·显示冗长的SQL错误信息

·显示冗长的无效用户名/无效密码信息

·验证时详细的错误信息导致用户枚举

·网站没有实施SSL

·可能窃听敏感信息