WAF的意思是Web应用防火墙。在尝试倡导软件实现和开发安全最佳实践的过程中,遇到了一个障碍:我的高级开发经理说我们部署了Web应用防火墙( WAF),可以彻底发现所有开发人员遗漏的Web应用安全漏洞。你能给我一些好的反驳,让他明白我们不能简单地依靠WAF来防止糟糕的编码吗?
您的经理可能已经阅读了PCI数据安全标准(PCI DSS)6.6,它为企业提供了两种保护Web应用程序免受已知攻击的选择。第一种是检查企业开发的所有web应用代码,第二种是在web应用和客户端之间安装Web应用防火墙的。你应该告诉他,规定的补充信息提到“适当部署这两种方法可以提供最好的多层防御”。在现代威胁环境下,我们绝对有必要部署WAF并分配时间和资源来提高软件开发的安全性。
虽然WAF提供了针对已知攻击和一些未知攻击的重要防御,但没有任何一种技术可以“包治百病”。例如,WAF无法帮助企业避免应用程序逻辑错误。但是,对于运行大量动态代码的复杂Web 2.0应用程序,或者底层网络和操作系统层面的漏洞,很容易出错。但也有后续成本。WAF具有广泛的日志记录功能,管理员需要登录分析器才能利用这些日志信息。
这就是安全编码和编码审查发挥重要作用的地方。通过在代码级别解决问题,减少了任何与安全相关的设计和编码缺陷的数量和严重性,并显著提高了整体应用程序的安全性。尽管未来的代码修订仍然需要审查,但使用安全开发实践开发的应用程序不需要像完全依赖防火墙保护的应用程序那样持续维护。
在这种情况下,也许最好的反驳是,微软在推出其安全开发生命周期(SDL)后,显著提高了其产品的安全性。SDL为整个软件行业制定了标准,许多其他公司(包括思科和Adobe)都采用了SDL或建立了基于SDL的安全开发实践。我们可以从很多方面感受到微软的成功,比如产品推出一年后发现的漏洞数量的变化。Windows Vista上线一年后(Vista是第一个使用SDL开发的微软操作系统),不带SDL的Windows XP漏洞减少45%;与没有SDL的SQL Server 2000相比,SQL Server 2005的漏洞减少了91%。
在部署了更好的内部软件开发安全最佳实践之后,企业不需要完全依赖WAF来成功防止针对其应用程序的攻击。从安全角度进行编码,使得应用更加强大,减少了攻击面,提高了抵抗攻击的能力。WAF永远无法阻止每个漏洞被攻击者利用,编码漏洞较少的应用程序对攻击者的吸引力也不再那么大。
如果您的经理仍然不相信,解释安全应用程序开发的必要性的方法是攻击你自己的应用程序。最安全的演示方法是在虚拟实验室中运行应用程序,并使用Metasploit等工具对其进行攻击。当发现漏洞时,概念证明可用于展示攻击者如何构建反向外壳或其他后门来进入应用程序并运行应用程序系统。这将清楚地显示您的应用程序中的漏洞将如何被利用,防火墙根本无法阻止它。
推荐阅读:毋火