Modo bajo ataque en OpenWAF Verify
El modo bajo ataque pone el reto de navegador delante de toda la zona mientras sufre una avalancha en la capa de aplicación o una oleada de scraping. Toda navegación de navegador sin un __waf_pass válido recibe la página de prueba de trabajo («Comprobando tu navegador antes de acceder a www.example.com»), también en los nombres api.*, y cualquier otra petición sin pase recibe 403 con {"error":"challenge_required",…} y OpenWAF-Mitigated: challenge, nunca la página HTML. Por defecto el reto es un bit más difícil que el habitual del nombre, y también puedes acortar la duración del pase.
Se lo saltan las rutas de exempt_paths (webhooks, notificaciones de pago), las reglas allow de IP y de ASN, las excepciones del WAF con rule_id 0 y los rastreadores verificados, así que los buscadores siguen indexando; una petición que solo dice ser un rastreador recibe el reto. hosts lo limita a algunos nombres de la zona. Fija until y el plano de control lo desactiva a esa hora como una versión nueva de la zona, que queda en el historial y en la auditoría.
Actívalo desde el resumen de la zona o Seguridad → Verificación (1 h, 6 h, 24 h o hasta desactivarlo), con openwaf-cloud ctl zones under-attack example.com on --for 6h --reason "…", con challenge.under_attack en PATCH /v1/orgs/{org}/zones/{zone}/edge o con la nueva herramienta MCP under_attack. Sus retos aparecen bajo el disparador under_attack en la analítica de Verificación.
El modo bajo ataque pide un clic
Con una conexión rápida, la prueba de trabajo del modo bajo ataque terminaba antes de que el visitante lo notara, y un script capaz de calcular SHA-256 pasaba igual. La página del reto añade ahora un paso interactivo: cuando la prueba de trabajo está resuelta, muestra un botón «Soy humano» («I am human» en inglés), con el foco y anunciado a los lectores de pantalla, con la marca y el color de acento de la zona. Solo cuenta un evento de entrada de confianza del navegador (un clic, un toque, o Intro o Espacio): un clic sintetizado por un script de la página, como element.click(), falla, y un clic que llega demasiado pronto se rechaza con interaction-required, lo que frena los reenvíos instantáneos. Los navegadores que declaran estar automatizados reciben el mismo botón, sin huella digital adicional. Los pases, su duración y su ámbito no cambian.
El paso es fricción para los scripts, no una prueba de que haya una persona: la automatización que inyecta entrada a través del navegador o del sistema operativo (por ejemplo Playwright o Puppeteer sobre el protocolo DevTools) genera eventos de confianza y puede pasar. Lo que consigue es que cada pase nuevo cueste una interacción real.
Viene activado. Pon challenge.under_attack.interactive a false para usar solo la prueba de trabajo: Pedir clic (Soy humano) en la tarjeta del modo bajo ataque del panel, "interactive": false en PATCH /v1/orgs/{org}/zones/{zone}/edge, openwaf-cloud ctl zones under-attack example.com on --interactive=false o interactive en la herramienta MCP under_attack. Las resoluciones con clic se cuentan como interactivas en la analítica de Verificación.