Volver al blogCiberseguridad8 min

Seguridad de APIs: el OWASP API Security Top 10 explicado con ejemplos y soluciones

Seguridad de APIs con el OWASP API Security Top 10 (2023): ejemplos en apps móviles y web, cómo corregir cada riesgo, cómo probarlo y qué controles poner.

Seguridad de APIs: el OWASP API Security Top 10 explicado con ejemplos y soluciones

La seguridad de APIs consiste en asegurar que cada endpoint autentique bien a quien llama, autorice cada objeto y cada campo que devuelve o modifica, y limite cuánto y cómo se usa. El OWASP API Security Top 10 (edición 2023) es la referencia para saber por dónde empezar: tres de sus diez riesgos son fallas de autorización, y son justamente las que un escáner automático no detecta.

Por qué las APIs son el blanco principal

Una API es la puerta por la que tu app móvil, tu web y tus aliados acceden a los datos y a la lógica del negocio. En una app moderna, la pantalla solo muestra; las decisiones de seguridad se toman en la API. Si la API confía en lo que le dice la app ("soy el usuario 15", "soy administrador"), cualquiera que intercepte el tráfico con un proxy gratuito puede cambiar esos valores. Por eso, en un pentesting de app móvil, la mayor parte de los hallazgos críticos aparece en el backend, no en el teléfono.

El OWASP API Security Top 10 2023 en una tabla

IDRiesgoEn una frase
API1Broken Object Level Authorization (BOLA)Puedo ver o cambiar objetos de otro usuario cambiando un ID.
API2Broken AuthenticationPuedo suplantar a alguien por fallas en login, tokens o recuperación de clave.
API3Broken Object Property Level AuthorizationLa API expone o deja modificar campos que no debería.
API4Unrestricted Resource ConsumptionSin límites, pueden agotar recursos o tu factura de SMS, correo o IA.
API5Broken Function Level AuthorizationUn usuario común ejecuta funciones de administrador.
API6Unrestricted Access to Sensitive Business FlowsBots abusan de un flujo legítimo: compras, registros, cupones.
API7Server Side Request Forgery (SSRF)La API descarga una URL que le paso y llega a recursos internos.
API8Security MisconfigurationCORS abierto, errores detallados, cabeceras y TLS mal configurados.
API9Improper Inventory ManagementVersiones viejas, endpoints de prueba o APIs olvidadas siguen expuestas.
API10Unsafe Consumption of APIsConfías ciegamente en lo que responde una API de terceros.

Los riesgos de autorización: API1, API3 y API5

API1: BOLA, el más común

Ejemplo: tu app de delivery llama a GET /api/v1/orders/1043. Un atacante cambia el número a 1042 y ve el pedido, la dirección y el teléfono de otro cliente. Solución: en cada consulta, filtra por el dueño en el servidor (WHERE id = ? AND customer_id = usuario_de_la_sesión), nunca por un ID que envía el cliente; usa identificadores no secuenciales como defensa adicional, no como sustituto.

API3: autorización a nivel de propiedad

Ejemplo: GET /api/users/me devuelve el objeto completo, incluido el hash de la contraseña o un campo is_admin; o PATCH /api/users/me acepta {"role": "admin"} (asignación masiva). Solución: DTOs o esquemas de respuesta explícitos por rol y listas de campos permitidos en cada escritura.

API5: autorización a nivel de función

Ejemplo: el panel de administración llama a DELETE /api/admin/users/88 y el backend solo verifica que haya sesión, no que sea administrador. Solución: denegar por defecto y declarar el rol requerido en cada ruta, con pruebas automáticas que llamen a rutas de administrador con un usuario común.

Autenticación, consumo y flujos de negocio: API2, API4 y API6

API2: autenticación rota

Ejemplo: el endpoint de recuperación de clave acepta intentos ilimitados de un código de 4 dígitos, o la API acepta JWT firmados con alg: none. Solución: usa un proveedor de identidad probado, valida firma, emisor, audiencia y expiración de cada token, limita intentos y aplica MFA a cuentas sensibles.

API4: consumo sin límites

Ejemplo: POST /api/otp envía un SMS por llamada sin límite: un bot puede gastar cientos de dólares en una noche. Lo mismo ocurre con endpoints que llaman a un modelo de IA por cada petición. Solución: rate limiting por usuario, IP y dispositivo, paginación con máximos, límites de tamaño de carga y alertas de gasto en proveedores.

API6: flujos de negocio sensibles

Ejemplo: un bot crea miles de cuentas para usar el cupón de bienvenida, o reserva todo el inventario de una promoción. No hay un bug técnico: la API hace lo que debe, pero a una escala que daña al negocio. Solución: identificar los flujos críticos y añadir fricción proporcional: límites por cliente, verificación de dispositivo, detección de automatización y revisión de patrones anómalos.

Infraestructura, inventario e integraciones: API7 a API10

API7: SSRF

Ejemplo: la función "importar foto desde URL" acepta http://169.254.169.254/ y devuelve credenciales del servicio de metadatos de la nube. Solución: lista de dominios permitidos, bloquear rangos internos, no devolver la respuesta cruda y, en AWS, exigir IMDSv2.

API8: configuración insegura

Ejemplo: CORS que acepta cualquier origen con credenciales, trazas de error con rutas internas o un Swagger público en producción. Solución: configuración endurecida y versionada como código, errores genéricos al cliente y revisión en cada despliegue.

API9: inventario deficiente

Ejemplo: lanzaste /v2 con controles nuevos, pero /v1 sigue activa sin ellos, o existe un staging-api público con datos reales. Son las APIs sombra (que nadie documentó) y las APIs zombi (que debieron apagarse). Solución: inventario vivo de hosts, versiones y endpoints, generado desde la especificación OpenAPI y el gateway, con fecha de retiro para cada versión.

API10: consumo inseguro de APIs de terceros

Ejemplo: tu backend guarda sin validar la dirección que devuelve un proveedor logístico, o sigue redirecciones de una pasarela. Si ese tercero es comprometido, el ataque entra por ti. Solución: valida y sanea toda respuesta externa como si fuera entrada de usuario, usa TLS, timeouts y límites de tamaño. Si tu API alimenta un agente o un LLM, este riesgo se combina con los del OWASP Top 10 para LLMs.

Patrones de defensa: gateway, autorización y rate limiting

  • API gateway como punto único de entrada: TLS, validación de tokens, rate limiting, tamaños máximos y registro centralizado. El gateway no reemplaza la autorización por objeto, que debe vivir en el servicio que conoce los datos.
  • Autorización centralizada: una capa o librería de políticas (por ejemplo, basada en roles y atributos) que todas las rutas usan, en lugar de un if distinto en cada controlador.
  • Esquemas estrictos: validar entrada y salida contra la especificación OpenAPI y rechazar campos no declarados.
  • Tokens de vida corta con rotación de refresh tokens y revocación.
  • Seguridad en el pipeline: pruebas de autorización automatizadas y escaneo de la especificación en cada merge, como explicamos en DevSecOps en CI/CD.

Si tu backend corre en Node.js, Firebase o AWS, revisa también nuestra guía de backend para apps móviles.

Cómo probar la seguridad de tu API

  1. Inventario: reúne la especificación OpenAPI, el tráfico real de la app y los hosts publicados; compáralos para encontrar endpoints no documentados.
  2. Matriz de autorización: para cada endpoint, qué rol puede hacer qué sobre qué objeto. Es la base de las pruebas de API1, API3 y API5.
  3. Pruebas con dos usuarios del mismo rol y de roles distintos, intercambiando IDs y tokens.
  4. Pruebas de límites: ráfagas de peticiones, paginación extrema y cargas grandes.
  5. Revisión de configuración: CORS, cabeceras, mensajes de error y versiones expuestas.

Las herramientas automáticas ayudan con API8 y parte de API9; los riesgos de autorización y de lógica de negocio requieren un pentesting manual de caja gris, que es como abordamos las APIs en nuestro servicio de ciberseguridad.

Logging y monitoreo

Registra en cada petición: usuario, endpoint, objeto accedido, resultado y origen, sin guardar contraseñas, tokens ni datos sensibles completos. Alerta sobre picos de respuestas 403 y 404 de un mismo usuario (señal típica de enumeración de IDs) y sobre consumos anómalos. Esos registros también te sirven como evidencia ante la LOPDP si ocurre un incidente.

Preguntas frecuentes

¿Qué es el OWASP API Security Top 10?

Es una lista de los diez riesgos de seguridad más críticos en APIs, publicada por la fundación OWASP. La edición vigente es la de 2023 e incluye, entre otros, autorización rota a nivel de objeto (BOLA), autenticación rota, consumo de recursos sin restricciones, SSRF, inventario deficiente y consumo inseguro de APIs de terceros. Es gratuita y sirve como base para diseñar y probar APIs.

¿Qué es BOLA en una API?

BOLA (Broken Object Level Authorization) ocurre cuando una API devuelve o modifica un objeto con solo recibir su identificador, sin verificar que pertenece al usuario que hace la petición. Por ejemplo, cambiar el número de pedido en la URL y ver el pedido de otro cliente. Se corrige validando la propiedad del objeto en el servidor en cada consulta.

¿Un API gateway es suficiente para asegurar mi API?

No. Un API gateway centraliza controles útiles como TLS, validación de tokens, rate limiting y registro, pero no sabe si el pedido 1042 pertenece al usuario que lo pide. La autorización por objeto y por campo debe implementarse en el servicio que conoce los datos, y probarse con usuarios de distintos roles.

¿Qué son las APIs sombra y las APIs zombi?

Las APIs sombra son endpoints en producción que no están documentados ni inventariados, a menudo creados para una prueba o una integración puntual. Las APIs zombi son versiones antiguas que debieron retirarse pero siguen activas, normalmente sin los controles de seguridad nuevos. Ambas corresponden al riesgo API9 y se controlan con un inventario vivo.

¿Cada cuánto debo probar la seguridad de mi API?

Integra pruebas automáticas en cada despliegue y haz un pentesting manual al menos una vez al año y después de cambios grandes, como una nueva versión de la API, un nuevo rol de usuario o un flujo de pagos. Las fallas de autorización suelen aparecer justo cuando se añaden funciones nuevas sobre una base existente.

Conclusión

La mayoría de incidentes en APIs no requiere técnicas sofisticadas: basta con cambiar un ID, un campo o un rol que el servidor no verifica. Empieza por un inventario, una matriz de autorización y límites de consumo, y valida con pruebas manuales lo que las herramientas no ven. Si quieres que evaluemos tu API o tu app con su backend, conoce nuestro servicio de ciberseguridad o agenda una consulta gratuita.

Fuentes y referencias

Artículos Relacionados

¿Sabes qué tan expuesta está tu empresa hoy?

Pentesting de apps y APIs, seguridad de IA, hardening cloud y cumplimiento LOPDP. Te enviamos un alcance con precio cerrado en menos de 48 horas.