Seguridad de APIs REST y GraphQL: vulnerabilidades emergentes y cómo detectarlas
Las APIs se han convertido en el núcleo de la economía digital. Desde aplicaciones móviles hasta arquitecturas cloud nativas, prácticamente todo depende de interfaces programables para intercambiar datos y ejecutar lógica de negocio. En la actualidad, una gran parte del tráfico en Internet está impulsado por APIs, lo que las convierte en uno de los principales vectores de ataque.
En este contexto, garantizar la seguridad de APIs REST y GraphQL ya no es opcional, sino un requisito crítico. Sin embargo, el aumento de su adopción también ha traído consigo nuevas vulnerabilidades, muchas de ellas específicas de cada paradigma.

Importancia de la seguridad de APIs
Las APIs exponen datos, lógica de negocio y procesos internos directamente a consumidores externos, lo que implica que cualquier fallo puede tener consecuencias graves, desde filtraciones de datos hasta compromisos completos del sistema.
Además, presentan características que amplifican el riesgo:
- Alta exposición a Internet
Las APIs suelen estar accesibles públicamente o a través de redes abiertas, lo que incrementa significativamente la superficie de ataque. A diferencia de otros componentes internos, cualquier actor externo puede interactuar con ellas, lo que obliga a implementar controles de seguridad mucho más estrictos desde el primer momento.
- Uso intensivo en arquitecturas distribuidas
En entornos de microservicios, una sola aplicación puede depender de decenas o cientos de APIs. Esto aumenta la complejidad de la gestión de seguridad, ya que un fallo en una API puede propagarse y afectar a múltiples servicios interconectados.
- Integración con terceros
Muchas APIs se exponen a partners, proveedores o integraciones externas. Esto implica confiar en sistemas fuera del control directo de la organización, lo que puede introducir vulnerabilidades adicionales si no se gestionan correctamente los accesos y permisos.
- Automatización de procesos críticos
Las APIs no solo exponen datos, sino también acciones críticas como pagos, transferencias o gestión de usuarios. Un ataque exitoso puede automatizar abusos a gran escala, multiplicando el impacto del incidente.
Principales vulnerabilidades en APIs
Fallos de autorización (BOLA y BOPLA)
- Acceso indebido a recursos de otros usuarios (BOLA)
Ocurre cuando la API no valida correctamente si un usuario tiene permisos para acceder a un recurso específico. Esto permite que un atacante manipule identificadores (IDs) para acceder a datos de otros usuarios.
- Exposición de propiedades sensibles (BOPLA)
Incluso si el acceso al recurso está controlado, algunos campos internos pueden quedar expuestos sin restricciones, como roles, permisos o datos confidenciales.
Ejemplo
Un endpoint como:
GET /api/users/123 puede ser manipulado a: GET /api/users/124 si no existe validación de permisos a nivel de objeto.
Autenticación débil o incorrecta
- Uso de tokens inseguros o mal gestionados
Tokens sin expiración o con algoritmos débiles pueden ser reutilizados indefinidamente por atacantes.
- Implementaciones incorrectas de JWT
Errores como no validar la firma o aceptar algoritmos inseguros permiten falsificar identidades.
- Falta de autenticación multifactor (MFA)
Sin capas adicionales de verificación, el robo de credenciales puede traducirse directamente en acceso completo a la API.
Consumo ilimitado de recursos
- Ausencia de rate limiting
Sin limitación de peticiones, un atacante puede saturar la API enviando miles de solicitudes por segundo.
- Operaciones costosas sin control
Algunas endpoints pueden ejecutar consultas complejas o procesos intensivos sin restricciones, facilitando ataques de denegación de servicio.
- Escalado automático mal gestionado
En entornos cloud, un ataque puede provocar costes elevados al forzar el escalado automático de recursos.
Mala configuración de seguridad
- Endpoints expuestos innecesariamente
APIs internas o de debugging pueden quedar accesibles en producción.
- Cabeceras HTTP inseguras
Falta de políticas como CORS correctamente configuradas puede permitir accesos no autorizados.
- Uso de versiones obsoletas
Dependencias sin actualizar pueden contener vulnerabilidades conocidas y explotables.
Inventario de APIs deficiente
- Shadow APIs no documentadas
APIs creadas durante desarrollo o pruebas que permanecen activas sin control ni monitorización.
- Falta de visibilidad centralizada
Sin un inventario completo, es imposible aplicar políticas de seguridad de forma consistente.
- Duplicación de endpoints
Versiones múltiples de una API pueden generar inconsistencias en la aplicación de controles de seguridad.
Diferencias de seguridad entre REST y GraphQL
APIs REST
Ventajas de seguridad
- Control granular por endpoint
Cada recurso tiene su propia URL, lo que facilita aplicar políticas específicas de autenticación y autorización.
- Compatibilidad con herramientas tradicionales
Firewalls, WAFs y herramientas de monitorización están optimizados para REST.
- Facilidad de auditoría
La estructura clara de endpoints simplifica el análisis de logs y la detección de anomalías.
Riesgos específicos
- Exposición de múltiples endpoints
Cuantos más endpoints existan, mayor es la superficie de ataque.
- Problemas de versionado
Versiones antiguas pueden permanecer activas con vulnerabilidades conocidas.
- Mass assignment
Permite modificar atributos no previstos si no se validan correctamente los inputs.
APIs GraphQL
Ventajas
- Control preciso de datos devueltos
El cliente define exactamente qué datos necesita, reduciendo la exposición innecesaria.
- Menor número de endpoints
Un único endpoint reduce ciertos vectores de ataque tradicionales.
Riesgos específicos
- Consultas altamente complejas
Un solo request puede generar una carga enorme en el servidor.
- Mayor dificultad de monitorización
Todas las operaciones pasan por el mismo endpoint, complicando la visibilidad.
- Ataques sofisticados basados en queries
La flexibilidad del lenguaje permite construir ataques difíciles de detectar.
Vulnerabilidades emergentes en GraphQL
Query batching y alias abuse
- Ejecución de múltiples operaciones en una sola petición
Permite a los atacantes multiplicar el impacto de cada request.
- Dificultad para aplicar rate limiting tradicional
Una sola petición puede contener decenas de consultas internas.
Ataques de profundidad (deep queries)
- Consultas recursivas o altamente anidadas
Pueden provocar un consumo exponencial de recursos.
- Impacto directo en bases de datos
Generan múltiples consultas internas que degradan el rendimiento.
Introspection abuse
- Exposición del esquema completo de la API
Permite a un atacante entender toda la estructura interna.
- Facilita la planificación de ataques dirigidos
Reduce el esfuerzo necesario para descubrir vulnerabilidades.
Complejidad y coste de consultas
- Queries aparentemente simples pero muy costosas
Algunas combinaciones de campos pueden ser extremadamente pesadas.
- Ausencia de límites de ejecución
Sin controles, una query puede bloquear recursos críticos.
Técnicas para detectar vulnerabilidades en APIs
Fuzzing de APIs
- Generación automática de inputs maliciosos
Permite descubrir fallos inesperados en validación.
- Detección de vulnerabilidades complejas
Incluye inyecciones SQL, XSS y errores de lógica.
Análisis estático y dinámico (SAST y DAST)
- SAST (Static Application Security Testing)
Analiza el código antes de ejecutarlo para detectar errores de seguridad.
- DAST (Dynamic Application Security Testing)
Evalúa la API en tiempo real simulando ataques.
- Cobertura complementaria
Ambos enfoques juntos ofrecen una visión más completa.
Monitorización en tiempo real
- Detección de patrones anómalos
Identifica comportamientos fuera de lo habitual.
- Alertas ante picos de tráfico
Permite reaccionar rápidamente ante posibles ataques.
- Análisis de comportamiento de usuarios
Ayuda a detectar cuentas comprometidas.
Inventario automático de APIs
- Descubrimiento de APIs ocultas
Identifica endpoints no documentados.
- Mapeo continuo del ecosistema
Mantiene actualizado el inventario de APIs.
Limitación de tasa (Rate limiting)
- Control del número de peticiones por cliente
Reduce el impacto de ataques automatizados.
- Protección frente a fuerza bruta
Limita intentos de autenticación.
Buenas prácticas para proteger APIs REST y GraphQL
Autenticación y autorización robustas
- Validación en cada request
Evita confiar en estados previos.
- Principio de mínimo privilegio
Cada usuario solo accede a lo necesario.
Validación de entradas
- Filtrado y sanitización de datos
Previene inyecciones y errores.
- Uso de esquemas estrictos
Reduce ambigüedad en los datos.
Control de acceso granular
- Autorización a nivel de objeto y campo
Evita exposición de datos sensibles.
Limitación de consultas en GraphQL
- Restricción de profundidad
Evita queries excesivamente complejas.
- Cálculo de coste de queries
Permite bloquear consultas pesadas.
- Timeouts de ejecución
Previene bloqueos prolongados.
Desactivar introspección en producción
- Oculta la estructura interna
Reduce información disponible para atacantes.
Gestión del ciclo de vida de APIs
- Versionado controlado
Evita mantener versiones inseguras.
- Eliminación de endpoints obsoletos
Reduce superficie de ataque.
- Documentación actualizada
Mejora la gestión de seguridad.
Tendencias en seguridad de APIs
API-first security
- Seguridad desde el diseño
Integrar controles desde la fase inicial del desarrollo.
Uso de inteligencia artificial
- Detección avanzada de amenazas
Identifica patrones complejos.
Zero Trust aplicado a APIs
- Validación continua de cada request
No se confía en ningún actor por defecto.
La seguridad de APIs REST y GraphQL es uno de los mayores retos actuales en ciberseguridad. A medida que evolucionan las arquitecturas, también lo hacen las técnicas de ataque. Las organizaciones deben adoptar un enfoque proactivo que combine buenas prácticas, herramientas avanzadas y monitorización continua.
Solo así será posible proteger uno de los activos más críticos del ecosistema digital moderno.