WAF在广大互联网公司被广泛使用,作为对抗黑产攻击的第一道防线,几乎全天候地保护着大家Web业务的安全。如图11-1所示,WAF的基本原理是,作为一道墙接受用户对Web服务器的请求,然后转发给后端真实的Web服务器,并将应答内容返回给用户。整个过程中,WAF针对请求和应答内容,按照既定的拦截规则进行过滤。WAF安全能力的强弱,主要取决于所谓的既定规则的检测能力。黑客在入侵WAF保护的网站时,经常要面对的就是绕过问题,通常黑客会基于经验综合使用常见的绕过方式,不断针对WAF的拦截情况进行调整。是否可以使用强化学习,模拟黑客的这一绕过思路,自动化地发现现有WAF的绕过方式,从而不断提升WAF的防护能力呢?本章将以XSS为例,介绍如何使用强化学习自动化地绕过基于规则的WAF。本章所有的代码都在GitHub的code/gym-waf文件夹下。
图11-1 WAF基本原理图