¿Qué es la seguridad de la API?

Gran parte de la Internet moderna depende de las API para funcionar. La seguridad de las API es el proceso de protegerlas de los ataques y las fugas de datos.

Metas de aprendizaje

Después de leer este artículo podrás:

  • Entender las amenazas comunes a la seguridad de la API
  • Explicar la autenticación y la autorización de la API
  • Describir las técnicas para mantener la seguridad de las API

Contenido relacionado


¿Quieres saber más?

Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.

Revisa la política de privacidad de Cloudflare para saber más sobre cómo Cloudflare gestiona tus datos personales.

Copiar el enlace del artículo

¿Qué es la seguridad de la API?

Una interfaz de programación de aplicaciones (API) es una forma de que una parte de software interactúe con otra parte de software. Si un programa o aplicación tiene una API, los clientes externos pueden solicitarle servicios.

La seguridad de las API es el proceso de protegerlas de los ataques. Al igual que las aplicaciones, las redes y los servidores pueden ser objeto de ataques, las API pueden ser víctimas de diferentes amenazas.

La seguridad de las API es un componente central de la seguridad de aplicaciones web. La mayoría de las aplicaciones web modernas se basan en las API para funcionar, y las API introducen un riesgo adicional en una aplicación al permitir que partes externas accedan a ella. Se puede comparar con un negocio que abre su oficina al público: tener más personas en las instalaciones, algunas de las cuales pueden ser desconocidas para los empleados del negocio, introduce un mayor riesgo. Del mismo modo, una API permite que personas ajenas a la empresa utilicen un programa, lo que introduce un mayor riesgo en la infraestructura del servicio API.

¿Cuáles son los riesgos de seguridad más habituales de las API?

  • Aprovechamientos de vulnerabilidades: una aprovechamiento de vulnerabilidades se produce cuando un atacante envía datos especialmente elaborados a un objetivo, datos que se aprovechan de un defecto en la construcción del objetivo. Estos defectos, conocidos como "vulnerabilidades," pueden dar al atacante diversas formas de acceso no intencionado a una API o a su correspondiente aplicación. El Proyecto abierto de seguridad de aplicaciones web (OWASP) mantiene una lista de las 10 principales vulnerabilidades de las API, como la inyección SQL, desconfiguración de la seguridad, y otras. Si un aprovechamiento se dirige a una vulnerabilidad que no se conocía previamente, se denomina una amenaza de día cero, y estas amenazas son extremadamente difíciles de detener.
  • Ataques basados en la autenticación: los clientes necesitan autenticarse antes de poder realizar solicitudes de API para que el servidor de la API no acepte solicitudes de fuentes desconocidas o ilegítimas. Hay varias formas de hacerlo, pero cada una de ellas está sujeta a un compromiso. Por ejemplo, un atacante podría obtener las credenciales de un cliente legítimo, robar una clave de la API o interceptar y utilizar un token de autenticación.
  • Errores de autorización: la autorización determina el nivel de acceso que tiene cada usuario. Si la autorización no se gestiona con cuidado, un cliente de la API podría tener acceso a datos que no deberían estar a su disposición, lo que aumenta la posibilidad de que se produzca una fuga de datos.
  • Ataques DoS y DDoS: demasiadas solicitudes dirigidas a una API pueden ralentizar o detener el servicio para otros clientes. Algunos atacantes envían una cantidad enorme de solicitudes a una API a propósito en un ataque de denegación de servicio (DoS) o de denegación de servicio distribuido (DDoS).

Las estrategias de seguridad de la API pueden ayudar a mitigar estos y otros riesgos.

Unas fuertes medidas de autenticación y autorización ayudan a garantizar que no se filtren los datos y que solo los clientes autorizados realicen solicitudes de API. La protección DDoS y la limitación de velocidad pueden acabar con los ataques DDoS. La validación de esquemas y el uso de un firewall de aplicaciones web (WAF) pueden bloquear las vulnerabilidades.

¿Cómo ayudan la limitación de velocidad y la mitigación de DDoS a proteger las API?

La limitación de velocidad pone un límite a la frecuencia con la que alguien puede repetir una acción dentro de un plazo determinado. Si un cliente de la API supera el número de solicitudes permitidas, la limitación de velocidad descartará o bloqueará sus solicitudes durante un periodo de tiempo.

La mitigación de DDoS ayuda a detener los ataques DoS y DDoS. En un ataque DDoS, un atacante intenta sobrecargar una API con muchas solicitudes en un período corto de tiempo. Con frecuencia, estas solicitudes proceden de varias fuentes diferentes.

La limitación de velocidad y la mitigación de DDoS son fundamentales para las API por un par de razones:

  1. Detener los ataques DoS y DDoS. Al bloquear o descartar las solicitudes adicionales, la limitación de velocidad y la mitigación de DDoS protegen la API para que no se sobrecargue. La limitación de velocidad por sí misma puede no detener los ataques DDoS bajos y lentos, pero aun así la mitigación de DDoS puede absorber el tráfico extra.
  2. Al margen de los ataques intencionados, hay clientes que simplemente utilizan demasiado una API. Esto es costoso para el servicio de la API en términos de potencia informática, y podría ralentizar el servicio para otros clientes. La limitación de velocidad ayuda a evitar que se sobrecargue el servidor de la API.

¿Cómo se bloquean los aprovechamientos de vulnerabilidades?

Para que un aprovechamiento de vulnerabilidad funcione, las solicitudes maliciosas a la API deben estar estructuradas de tal manera que provoquen que la API responda de una manera que no habían previsto sus creadores. Los desarrolladores de API pueden bloquear estas peticiones maliciosas de varias maneras. Dos de las más importantes que hay que conocer son:

  1. Validación de esquemas
  2. Reglas WAF

Validación de esquemas

El esquema de una API describe el comportamiento esperado de una misma: el tipo de solicitudes que debe recibir y el tipo de respuestas que debe proporcionar. Las solicitudes no válidas que no se ajusten a este esquema pueden hacer que una API se comporte de forma inesperada, lo cual puede provocar una filtración de datos. La validación del esquema identifica las solicitudes y respuestas no válidas. Al bloquear las respuestas no válidas, los desarrolladores de la API pueden evitar algunos tipos de ataques y ayudar a prevenir las filtraciones de datos.

Reglas del firewall de aplicaciones web (WAF)

Un WAF funciona como un firewall tradicional en el sentido de que bloquea algunas solicitudes y respuestas de la red, y permite el paso de otras. Lo hace basándose en un conjunto de reglas: si una solicitud o una respuesta infiringe una regla, o se ajusta a una regla, se bloquea. Un WAF se implementa frente a una API o una aplicación web, y supervisa el tráfico HTTP.

Es posible configurar reglas WAF que bloqueen los patrones de solicitud y respuesta que tienen como objetivo una vulnerabilidad. Las reglas WAF también pueden bloquear las solicitudes procedentes de ciertas direcciones IP, lo cual ayuda a detener los ataques de bots y otros atacantes.

¿Por qué son tan importantes la autenticación y la autorización para la seguridad de la API?

La autenticación garantiza que las solicitudes de la API provengan de una fuente legítima. La autorización permite al servidor de la API saber si el cliente solicitante está autorizado a obtener los datos solicitados.

Supongamos que Alice construye una API y Bob crea una aplicación web que utiliza la API de Alice. Cuando la aplicación de Bob envía una solicitud de API a la API de Alice, adjunta a la solicitud una etiqueta que dice "esto es de Bob". Esto autentica la solicitud de Bob para que el servidor de la API de Alice sepa que debe tratar la solicitud como legítima.

El servidor de la API de Alice también comprueba qué privilegios tiene Bob. Si la solicitud de Bob es para datos que la API de Alice ha etiquetado como "Bob puede ver esto", el servidor atiende la solicitud. Sin embargo, la API de Alice puede tener una sección de datos etiquetada como "no es para Bob", y el servidor no debe atender una solicitud de esos datos cuando Bob sea el solicitante. Por eso es importante la autorización.

(En realidad, Bob adjuntaría una clave o alguna otra forma de autentificación a las solicitudes de la API, y no solo una etiqueta que diga "esto es de Bob.")

Hay varios métodos de autenticación para las API. Los más habituales son:

1. Clave API

Al cliente se le asigna una clave: una cadena de caracteres única que solo él y el servicio API conocen. La clave se adjunta a cada solicitud de la API. El servidor de la API comprueba la clave cuando recibe una solicitud de la API para asegurarse de que proceda de un cliente autenticado.

El inconveniente de este método de autenticación es que, si se roba la clave, un atacante puede utilizarla para hacerse pasar por un cliente legítimo y así poder llevar a cabo diversos ataques. Es importante encriptar las solicitudes y las respuestas hacia y desde una API con un protocolo de encriptación como Transport Layer Security (TLS); de esta manera, la clave no queda expuesta en texto plano al recorrer Internet.

2. Nombre de usuario y contraseña

Las solicitudes de la API pueden utilizar las típicas credenciales de nombre de usuario y contraseña para la autenticación mediante un método llamado autenticación HTTP. En la autenticación HTTP, se codifica un nombre de usuario y una contraseña, y se añaden al encabezado HTTP de todas las solicitudes de la API. El servidor puede cotejar estas credenciales con las de los clientes permitidos para autenticar las solicitudes.

Este enfoque conlleva todos los desafíos que se asocian normalmente con las contraseñas: las contraseñas pueden perderse, filtrarse, ser robadas, adivinadas o compartidas con personas que no sean de confianza. Las contraseñas también son susceptibles de sufrir relleno de credenciales y ataques de fuerza bruta, entre otros.

3. Token OAuth

En lugar de requerir la autenticación directamente del cliente, un servidor de la API puede obtener un token de autenticación de un servidor de autenticación de confianza mediante el uso del protocolo OAuth. Para utilizar la API, un usuario inicia sesión en un servicio de terceros en lugar de conectarse directamente a la API. Al igual que el método de nombre de usuario y contraseña, este método de autenticación es vulnerable al relleno de credenciales y a otros ataques.

4. TLS Mutual (mTLS)

TLS es el protocolo de encriptación que crea una conexión encriptada y autenticada entre el cliente y el servidor cuando se cargan las páginas web. TLS también puede verificar y autenticar ambos extremos de una conexión API.

En el TLS mutuo (mTLS), tanto cliente como servidor tienen un certificado TLS. Se autentican mutuamente utilizando estos certificados, asegurándose que ambos sean quienes dicen ser, sin necesidad de depender de contraseñas u otros métodos de autenticación.

Sin embargo, la implementación de mTLS puede ser un reto: todos los puntos de conexión de la API y los clientes necesitan certificados TLS legítimos, que pueden ser difíciles de aplicar y mantener.

¿Qué es el API Shield?

El API Gateway de Cloudflare habilita varias funciones de seguridad de la API desde un solo panel de control para protegerla de los riesgos de seguridad habituales de la API. API Gateway incluye:

  • mTLS para la autenticación del punto de conexión de la API
  • Validación de esquemas, que utiliza un modelo de seguridad positiva para permitir solo las solicitudes que cumplen con el esquema de la API
  • Prevención de pérdida de datos (DLP), que analiza el tráfico que sale de una API para comprobar si hay datos confidenciales
  • Limitación de velocidad y mitigación de DDoS para garantizar que no se sobrecarguen las API

Más información sobre API Gateway o las soluciones de seguridad de las API.