AWS WAF: etiquetas dinámicas explicadas (2026)
AWS lanzó en mayo de 2026 la interpolación dinámica de etiquetas en AWS WAF, una función que te permite insertar automáticamente el valor de una etiqueta WAF dentro de encabezados de solicitud y respuesta personalizados. Con una sola regla podés propagar contexto de seguridad (IP del cliente, fingerprint TLS, ID de la solicitud) directamente hacia tu aplicación de origen, sin necesidad de mantener listas separadas ni reglas duplicadas.
En 30 segundos
- AWS WAF ahora soporta interpolación dinámica de etiquetas: podés usar
${namespace:label-name}en headers y body de respuesta personalizada para inyectar valores en tiempo real. - Hay cuatro etiquetas sintéticas gratuitas disponibles desde el lanzamiento: dirección IP del cliente, WAF Request ID, fingerprint JA3 y fingerprint JA4.
- La función resuelve múltiples labels que coincidan en un namespace separándolas con coma, sin que vos tengas que escribir lógica adicional.
- Casos de uso principales: forzar MFA por reputación de IP, autenticación adaptativa con fingerprints TLS, y agregar IDs de referencia en páginas de bloqueo para reducir falsos positivos.
- Disponible en todas las regiones de AWS sin costo adicional más allá de las reglas WAF existentes.
Qué es la interpolación dinámica en AWS WAF
La interpolación dinámica de etiquetas en AWS WAF es la capacidad de referenciar el valor de una etiqueta WAF dentro de una cadena de texto que se inserta como header de solicitud, header de respuesta o cuerpo de respuesta personalizado. En términos concretos: en vez de crear veinte reglas separadas que matcheen veinte valores distintos y hagan cada una su propia acción, escribís una sola regla que usa la sintaxis ${namespace:label-name} y el WAF resuelve el valor en tiempo de ejecución.
Antes de este lanzamiento, si querías pasarle a tu aplicación de origen el fingerprint JA3 de un cliente sospechoso, tenías que crear una regla por cada valor posible de fingerprint, o armar una Lambda@Edge que hiciera ese trabajo. Ninguna de las dos opciones era elegante (por decirlo suave).
Según el anuncio oficial de AWS de mayo de 2026, la función está disponible en todas las regiones donde opera WAF, sin configuración previa y sin costo adicional por usarla.
Sintaxis ${namespace:} y cómo funciona
La sintaxis es ${namespace:label-name}, donde namespace es el prefijo del grupo de etiquetas y label-name es el nombre específico dentro de ese namespace. Podés usarla en tres lugares: headers de solicitud personalizados (los que WAF agrega antes de forwarding al origin), headers de respuesta personalizada, y el cuerpo de las respuestas personalizadas de bloqueo.
Lo interesante es que si múltiples etiquetas dentro del mismo namespace coinciden con una solicitud, WAF las concatena separadas por coma en el valor del header. No tenés que manejar ese caso especialmente, viene resuelto de fábrica.
Ejemplo concreto: si configurás un header personalizado x-amzn-waf-ip-reputation con el valor ${awswaf:clientip}, cada request que llegue a tu origen va a llevar la IP real del cliente tal como la ve el WAF, incluso si hay proxies o load balancers en el medio. Tu aplicación ya no necesita parsear el X-Forwarded-For y adivinar cuál IP es la correcta. Para más detalles técnicos, mirá integrar WAF en tus pipelines.
Para etiquetas de tus reglas custom o de AWS Managed Rules, el namespace refleja el nombre de la regla. Si una regla del grupo AWSManagedRulesCommonRuleSet agrega la etiqueta awswaf:managed:aws:core-rule-set:sqli_body, podés referenciarla como ${awswaf:managed:aws:core-rule-set:sqli_body} en tus acciones personalizadas.
Etiquetas sintéticas disponibles
AWS incluyó cuatro etiquetas sintéticas built-in desde el día uno. Son gratuitas y no requieren ninguna regla adicional para generarlas.
| Etiqueta sintética | Qué contiene | Cuándo usarla |
|---|---|---|
${awswaf:clientip} | Dirección IP real del cliente tal como la ve WAF | Logging, geoblocking, rate limiting por IP |
${awswaf:requestid} | ID único de la solicitud generado por WAF | Correlación de logs, IDs en páginas de error |
${awswaf:ja3fingerprint} | Hash JA3 de la negociación TLS del cliente | Detectar bots, autenticación adaptativa |
${awswaf:ja4fingerprint} | Hash JA4 (versión mejorada de JA3) | Identificación más precisa de clientes TLS |

JA3 y JA4 merecen una explicación rápida porque no todo el mundo los conoce. Son hashes generados a partir de los parámetros de la negociación TLS del cliente: qué versión de TLS ofrece, qué cipher suites, qué extensiones. Dos clientes con el mismo navegador y versión van a generar el mismo hash. Un bot que simula ser Chrome pero tiene una implementación TLS diferente va a generar un hash distinto al Chrome real.
¿Y por qué JA4 además de JA3? JA4 es más robusto frente a técnicas de evasión donde los atacantes reordenan los cipher suites para mutar el hash JA3. JA4 normaliza el orden antes de hashear.
Casos de uso: autenticación adaptativa y detección
Ponele que tenés una aplicación con login y querés forzar MFA solo para usuarios que provienen de IPs con mala reputación según AWS Managed Rules. Antes necesitabas lógica en tu backend para consultar alguna API de reputación en tiempo real. Ahora, WAF puede agregar un header x-waf-ip-risk: high basado en las etiquetas que las reglas de reputación ya pushean, y tu aplicación simplemente lee ese header y decide si pide el segundo factor.
El flujo queda así: solicitud llega a WAF, las reglas de IP Reputation agregan etiquetas según lo que detecten, WAF no bloquea la solicitud pero sí inserta los headers con los valores de esas etiquetas, tu aplicación los lee y adapta el comportamiento. Sin llamadas extras, sin latencia adicional. Ya lo cubrimos antes en adaptar protección a diferentes regiones.
Con fingerprints TLS el caso de uso es parecido pero más fino. Si un cliente asegura usar un móvil iOS pero el fingerprint JA3 indica que es un scraper Python conocido, tu aplicación puede detectar la inconsistencia y pedir verificación adicional. Esto se llama autenticación adaptativa basada en señales de riesgo, y hasta el lanzamiento de mayo de 2026 requería soluciones de terceros carísimas para implementarlo.
Otro caso que se agradece: las páginas de bloqueo. Si bloqueás a un usuario legítimo por falso positivo (cosa que pasa, admitámoslo), podés incluir el ${awswaf:requestid} en la página de error. El usuario llama a soporte, da ese ID, y el equipo puede correlacionar exactamente qué regla disparó el bloqueo. Sin ese ID, investigar un falso positivo reportado horas después es un ejercicio de fe.
Configuración paso a paso
Hay tres lugares donde podés configurar la interpolación: en las acciones de tus reglas, en las Custom Request Transformations de la Web ACL, o en las respuestas personalizadas de bloqueo. Acá el flujo más común: agregar un header a todas las solicitudes que lleguen al origin.
Desde la consola de AWS WAF, vas a tu Web ACL y en la sección de “Custom Request Headers” agregás un nuevo header. El nombre debe ser algo que tu aplicación reconozca, como x-waf-client-ip o x-waf-tls-fingerprint. En el valor, en vez de un string fijo, ponés la sintaxis de interpolación: ${awswaf:clientip}.
Eso sí: hay una regla de seguridad importante que no debés ignorar. Si un cliente malintencionado envía un header x-waf-client-ip en su solicitud antes de que llegue a WAF, podría intentar inyectar valores falsos. La solución es configurar WAF para que bloquee cualquier solicitud que ya traiga headers con el prefijo x-amzn-waf- (el prefijo estándar de AWS) o el prefijo que vos uses para tus headers WAF.
Para respuestas personalizadas de bloqueo, editás la acción Block de una regla, elegís “Custom Response” y en el body podés usar las variables. Ejemplo: Tu solicitud fue bloqueada. ID de referencia: ${awswaf:requestid}. AWS recomienda usar ese ID para que tus usuarios puedan reportar falsos positivos con un identificador concreto, según la documentación oficial de respuestas personalizadas.
Ejemplos prácticos de implementación
Header con IP y fingerprint TLS al origin
En JSON de CloudFormation o Terraform, la configuración de headers custom en la Web ACL tiene esta pinta: En validar comportamiento de reglas profundizamos sobre esto.
{
"CustomRequestHandling": {
"InsertHeaders": [
{
"Name": "x-waf-client-ip",
"Value": "${awswaf:clientip}"
},
{
"Name": "x-waf-ja4",
"Value": "${awswaf:ja4fingerprint}"
}
]
}
}Ese bloque va dentro de la acción Allow o Count de tus reglas. Para acciones a nivel de Web ACL (que aplican a todo el tráfico que pasa), se configura en la sección de Default Action.
Página de bloqueo con ID de referencia
Para el cuerpo de respuesta personalizado cuando bloqueás:
{
"Action": {
"Block": {
"CustomResponse": {
"ResponseCode": 403,
"CustomResponseBodyKey": "block-page",
"ResponseHeaders": [
{
"Name": "x-waf-request-id",
"Value": "${awswaf:requestid}"
}
]
}
}
}
}Y el cuerpo HTML del mensaje puede incluir la variable directamente: “Solicitud bloqueada por política de seguridad. ID de referencia: ${awswaf:requestid}. Contactá a soporte con este código.” Ese ID es único por solicitud, lo que hace el debugging mucho menos tedioso.
Mejores prácticas y consideraciones de seguridad
Bloqueá los headers que simulen ser de WAF. Cualquier solicitud que traiga un header que empiece con el prefijo que usás para tus headers WAF debería ser rechazada antes de que llegue al origin. Si no lo hacés, un atacante puede inyectar valores falsos que tu aplicación interpreta como señales de WAF.
Validá en tu aplicación lo que recibís. El header llega firmado por WAF, pero tu aplicación debería verificar que los valores tengan el formato esperado (una IP válida, un hash hexadecimal de 32 caracteres para JA3, etc.) antes de tomar decisiones de seguridad basadas en ellos.
Auditá qué etiquetas estás forwardeando. Si propagás etiquetas de AWS Managed Rules al origin, estás exponiendo información sobre qué patrones detectó WAF en esa solicitud. En la mayoría de los casos está perfecto, pero en arquitecturas donde el tráfico interno no es confiable, conviene ser selectivo.
La función, según el anuncio de AWS, está disponible de manera global sin costo adicional. Solo pagás las reglas WAF que tengas activas, que es lo de siempre. Si tenés un proveedor de hosting como donweb.com que te gestiona la infraestructura cloud, vale la pena revisar si su integración con WAF ya expone esta configuración desde el panel o si tenés que hacerlo vía consola de AWS directamente.
Errores comunes al implementar etiquetas dinámicas en AWS WAF
Error 1: No proteger los headers contra inyección del cliente. Si tu aplicación lee x-waf-client-ip y un atacante envía ese header antes de llegar a WAF, y WAF no está configurado para borrarlo o bloquearlo, el atacante puede hacerse pasar por cualquier IP. La corrección: agregá una regla que bloquee solicitudes que ya traigan tus headers WAF custom, o configurá WAF para que sobreescriba siempre el header independientemente de lo que traiga el cliente. Sobre eso hablamos en protección consistente en multi-cloud.
Error 2: Usar el namespace incorrecto al referenciar etiquetas de Managed Rules. El namespace de una etiqueta de AWS Managed Rules no es el mismo que el nombre del rule group. Por ejemplo, para AWSManagedRulesCommonRuleSet, las etiquetas empiezan con awswaf:managed:aws:core-rule-set:. Si ponés ${awswaf:AWSManagedRulesCommonRuleSet:sqli_body} no va a resolver nada, va a quedar como string literal. Chequeá el namespace exacto en la documentación de etiquetas WAF.
Error 3: Asumir que la interpolación funciona en todos los tipos de acciones. La interpolación dinámica de etiquetas funciona en Custom Request Headers, Custom Response Headers y Custom Response Body. No funciona en otros contextos como condiciones de match o en reglas de rate limiting. Si intentás usarla ahí, WAF la trata como string literal o la ignora.
Preguntas Frecuentes
¿Qué es la interpolación dinámica en AWS WAF?
Es la capacidad de referenciar el valor de una etiqueta WAF dentro de un header de solicitud, header de respuesta o cuerpo de respuesta personalizado usando la sintaxis ${namespace:label-name}. WAF resuelve el valor en tiempo de ejecución para cada solicitud y lo inserta automáticamente en el lugar configurado. Disponible desde mayo de 2026 en todas las regiones de AWS.
¿Cómo configuro etiquetas dinámicas en mis reglas?
En la consola de AWS WAF, editás tu Web ACL y vas a la sección de acciones personalizadas (Custom Request Headers o Custom Response). En el campo de valor del header, en vez de un string fijo escribís la variable entre llaves con signo de pesos: ${awswaf:clientip} para la IP del cliente, por ejemplo. Para etiquetas de tus reglas custom, el namespace es el nombre de tu regla según la convención de AWS WAF.
¿Cuál es la diferencia entre el namespace estático y el dinámico?
Antes de esta función, los valores de los headers custom eran strings fijos: ponías “high-risk” y eso llegaba al origin siempre igual. Con la interpolación dinámica, el valor se resuelve para cada solicitud basándose en las etiquetas que esa solicitud generó al pasar por las reglas WAF. El resultado puede ser diferente para cada request, porque refleja el estado real de evaluación de esa solicitud específica.
¿Cómo implemento autenticación adaptativa con AWS WAF?
Configurás WAF para insertar el fingerprint JA3 o JA4 del cliente en un header (${awswaf:ja4fingerprint}) y la reputación de IP en otro. Tu aplicación lee esos headers en el endpoint de login y decide: si el fingerprint no coincide con el histórico del usuario o la reputación de IP es baja, pedís MFA. Si todo está dentro de lo esperado, el login sigue normal. No necesitás llamadas a APIs externas porque WAF ya hizo la evaluación.
¿Tiene costo adicional usar etiquetas dinámicas en seguridad?
No. AWS anunció la función sin costo adicional más allá de las reglas WAF que ya tenés activas. Las cuatro etiquetas sintéticas (IP del cliente, Request ID, JA3, JA4) son gratuitas y no requieren reglas separadas para generarse. Solo pagás el consumo normal de la Web ACL y las reglas existentes según el modelo de precios estándar de AWS WAF.
Conclusión
Las AWS WAF etiquetas dinámicas resuelven un problema real que equipos de seguridad venían parcheando con Lambdas, soluciones de terceros o arquitecturas complejas: propagar contexto de WAF hacia la aplicación de origen de forma limpia y sin latencia adicional. La función llegó en mayo de 2026 con cuatro etiquetas sintéticas ready-to-use y soporte para etiquetas de AWS Managed Rules y reglas custom.
Lo que cambia concretamente: podés implementar autenticación adaptativa con fingerprints TLS, debugging de falsos positivos con IDs de referencia, y enriquecimiento de logs de aplicación con contexto de seguridad, todo con configuración en la consola de WAF y sin una línea de código adicional en tu backend. Si ya usás AWS WAF con Managed Rules, esta es la actualización que hace que esa inversión rinda más.






