2008年6月24日星期二

[Tips]WAF(Web Application Firewall) and Code Review

by axis
2008-06-25
http://www.ph4nt0m.org

最近对于这两种方法的争论挺多的。

实际上,在我思想中,企业搞web安全,这是两个主攻方向了。(PCI标准也这么要求)

我习惯上把WAF归纳为过滤层,就是在应用的架构中有这么一个 filter-tier, 他起的作用是过滤和净化危险输入。在架构中的位置可以是多样化的:单独的硬件、apache mod、应用里面捕获输入;

WAF如果开启阻断功能的话,就可以起到虚拟补丁的功能。在这个意义上来说,可以减小程序员的工作量。

而WAF的最大阻力则是:
1. 误报
2. 对性能的影响
3. 稳定性

而AppSec这些公司推的WAF都属于硬件产品。包括mod-security等,他们都自己有一套漏洞规则,然后卖给甲方。这也是他们产品难推的原 因,尽管你吹的天花乱坠,但实际上敢开启block模式的估计不会有多少,实际上jeremiah grossman自己也承认了,并引用了一段话

“When you know nothing, permit-all is the only option. When you know something, default-permit is what you can and should do. When you know everything, default-deny becomes possible, and only then.”


要了解所有的东西,就要从一开始就上WAF,对于很多半路出家搞安全的网站来说,这显然是很难接受的。

所以真正要实现好的WAF,只能是自己开发,自己部署,通过“学习模式”,来消除误报。而且自己的东西,是可控的,至少从心理上来说是可控的。

WAF的模式是有一定的作用,但不是万能的,也没厂商吹嘘的那么玄乎。这玩意治标不治本,无法带给你的网站安全; 只有有人不断专业维护的WAF,才能从一定程度上说可以带给你安全。这就是我一直在强调的: 安全是一个持续的过程。

与WAF对应的另外一个方向是code review。 code review也有很多方向,不是随便从网上抄个规范来就行的。 同样的,code security review可以做为sdl中的一个核心过程,在软件工程中发扬光大。 每个企业都需要找到自己代码的特色,从而定制出符合自己特色的代码规范,和代码漏洞扫描工具。 这些思想也是我在 《安全幻想曲2008》中曾经强调过的,可惜从CB的反馈看来,真正能看懂我那篇paper背后意思的人的恐怕不多。

code review 是一个治本的过程,也需要长期坚持。不过review code的成本会比较大,有人力也有时间的投入,还有更多的沟通成本。code review的方向 应该是尽可能降低对个人经验的依赖,这就需要有优秀的规范和规则。

在应用安全里, WAF和code review应该是相辅相成的。但是我看现在不少厂商为了牟利,鼓吹WAF的优越性,让WAF走上了歪路,企业冤枉钱花了,却只是一个花架子的安全,一戳就破。如何正确应用,才是甲方安全人员需要思考的问题。

先瞎扯这么多,这两个话题可以讲很深,以后再慢慢一一侃来。

没有评论: