Cómo APISIX protege contra las 10 principales amenazas de seguridad API de OWASP

Bobur Umurzokov

Bobur Umurzokov

October 6, 2023

Technology

Con el creciente uso y dependencia de las API en el panorama digital interconectado de hoy, las amenazas de seguridad dirigidas a ellas también han aumentado a lo largo de los años. En 2023, el Open Web Application Security Project (OWASP) identificó las nuevas Top 10 amenazas a la seguridad de las API. En esta publicación de blog, exploraremos cada amenaza y aprenderemos cómo APISIX puede proteger contra ellas con ejemplos.

El OWASP es una comunidad reconocida globalmente que publica regularmente investigaciones relacionadas con la ciberseguridad.

Aquí está la lista de riesgos de seguridad mencionados por OWASP:

  1. Autorización de Nivel de Objeto Rota
  2. Autenticación Rota
  3. Autorización de Nivel de Propiedad de Objeto Rota
  4. Consumo de Recursos sin Restricciones
  5. Autorización de Nivel de Función Rota
  6. Acceso sin Restricciones a Flujos de Negocio Sensibles
  7. Falsificación de Solicitudes del Lado del Servidor (SSRF)
  8. Configuración de Seguridad Incorrecta
  9. Gestión Inadecuada del Inventario
  10. Consumo Inseguro de APIs

1. Autorización de Nivel de Objeto Rota

Amenaza: Las API a menudo exponen puntos finales que manejan identificadores de objetos, lo que puede llevar a problemas de Control de Acceso a Nivel de Objeto. Los atacantes pueden explotar estas vulnerabilidades para obtener acceso no autorizado a datos.

Autorización de Nivel de Objeto Rota

Ejemplo: Una institución de salud ofrece un portal en línea para pacientes. Debido a un defecto en el diseño del portal, una vez que un paciente se autentica, puede modificar la URL o los parámetros de la solicitud para acceder a registros médicos asociados con un ID de paciente diferente. Por ejemplo, un paciente llamado Steve inicia sesión en el portal para ver sus registros médicos. Sus registros son accesibles a través de la URL https://healthportal.com/patient/123. Curioso, Steve cambia la URL a https://healthportal.com/patient/124 y descubre que ahora puede ver los registros médicos de otro paciente. Esto expone una violación significativa de la privacidad y viola regulaciones como la Ley de Portabilidad y Responsabilidad de Seguros de Salud (HIPAA).

Recomendación: Implemente un mecanismo de autorización adecuado que dependa de las políticas y jerarquías de usuario. La puerta de enlace APISIX admite flujos de autorización basados en OAuth2 o JWT con la ayuda de plugins. Puede usar la política de OAuth2 para verificar el token en cada solicitud.

Utilice un control de acceso granular a través del sistema de Control de Acceso Basado en Roles (RBAC) de APISIX integrando con Open Policy Agent (OPA). Al configurar roles y permisos específicos en APISIX y asociar estos roles con usuarios o tokens específicos, puede asegurarse de que las solicitudes a puntos finales sensibles estén debidamente autorizadas.

2. Autenticación Rota

Amenaza: Los mecanismos de autenticación implementados incorrectamente pueden permitir que los atacantes comprometan tokens de autenticación o simplemente que un atacante realice ataques de fuerza bruta en los puntos finales de inicio de sesión porque no hay límites de tasa.

Autenticación Rota

Ejemplo: El sistema bancario implementó un mecanismo de autenticación personalizado. Sin embargo, debido a la falta de una revisión y pruebas de seguridad adecuadas, había una vulnerabilidad en el flujo de autenticación. Específicamente, después de que un usuario ingresara su nombre de usuario y contraseña, el sistema generaba un token de sesión predecible, como una combinación del nombre de usuario y una marca de tiempo. Un atacante, al conocer este defecto, podría predecir fácilmente el token de sesión de otro usuario.

Recomendación: Primero, comprenda todos los flujos de autenticación posibles para la API, y no reinvente la rueda en la autenticación. APISIX admite el flujo de autorización estándar OpenID Connect (OIDC). En lugar de tokens de sesión predecibles, APISIX puede integrarse con proveedores de identidad externos como Keycloak o sistemas de gestión de sesiones utilizando plugins para asegurar que los tokens de sesión sean aleatorios, cifrados y tengan una vida útil limitada.

Para prevenir ataques de fuerza bruta en cuentas de usuario, se puede usar el plugin de limitación de tasa de APISIX. Esto asegura que si hay múltiples intentos fallidos de inicio de sesión en un período corto, la IP o el usuario sean bloqueados temporalmente. Para garantizar la privacidad e integridad de los datos, APISIX admite cifrado SSL/TLS. Esto asegura que las credenciales del usuario y otros datos sensibles estén cifrados durante la transmisión.

3. Autorización de Nivel de Propiedad de Objeto Rota

Amenaza: Esta amenaza surge de la falta o validación inadecuada de la autorización a nivel de propiedad de objeto, lo que lleva a la exposición o manipulación no autorizada de información.

Autorización de Nivel de Propiedad de Objeto Rota

Ejemplo: La API de una plataforma de compras en línea permite a los usuarios registrados actualizar los detalles de su perfil, como nombre, correo electrónico, dirección de envío y detalles de pago. Además, cada perfil de usuario tiene una propiedad llamada userType, que puede ser regular o admin. Debido a un problema en el diseño de la API, los usuarios también pueden modificar la propiedad userType en sus solicitudes de actualización de perfil. Supongamos que Alice, una usuaria regular, descubre este defecto cuando inspecciona las solicitudes de la API usando las herramientas de desarrollo de su navegador. Ella nota que al actualizar su perfil, se envía un payload JSON al servidor. Alice modifica el valor de userType a admin y envía la solicitud. Para su sorpresa, su perfil se actualiza y ahora tiene privilegios administrativos en la plataforma, lo que le permite acceder a datos sensibles, modificar listados de productos e incluso ver el historial de pedidos de otros usuarios.

Recomendación: Asegúrese de que las propiedades de objeto expuestas sean accesibles para el usuario y mantenga las estructuras de datos devueltas mínimas, según los requisitos comerciales. Para lograr esto, puede usar el plugin de validación de solicitudes de APISIX que puede validar las solicitudes entrantes contra un esquema predefinido. O use el sistema RBAC de APISIX para configurar roles para usuarios regulares y administradores. Para eliminar datos innecesarios que se exponen al cliente, APISIX proporciona un plugin de reescritura de respuesta que puede modificar la respuesta de la API sobre la marcha.

4. Consumo de Recursos sin Restricciones

Amenaza: Los atacantes pueden explotar las API para consumir recursos excesivos, lo que lleva a ataques de Denegación de Servicio o a un aumento de los costos operativos.

Consumo de Recursos sin Restricciones

Ejemplo: Un servicio de almacenamiento de archivos en la nube permite a los usuarios cargar y almacenar archivos, compartirlos con otros y acceder a ellos desde cualquier lugar. El servicio no tiene restricciones sobre la cantidad de archivos que un usuario puede cargar simultáneamente o el tamaño de cada archivo. Como resultado, un usuario malicioso o un bot puede cargar una enorme cantidad de archivos extremadamente grandes en rápida sucesión, consumiendo una cantidad significativa de recursos del servidor. Esto puede llevar a tiempos de respuesta más lentos para otros usuarios, posibles caídas del servidor y un aumento de los costos de infraestructura para el proveedor del servicio.

Recomendación:

  • Defina y aplique tamaños máximos de datos para todos los parámetros y cargas útiles entrantes. Use el plugin de control de cliente para establecer el tamaño máximo del cuerpo de la solicitud para que los usuarios no puedan cargar archivos excesivamente grandes. O use el plugin de validación de solicitudes para validar cadenas de consulta, especialmente aquellas que controlan la cantidad de registros devueltos. Para bloquear un bot, script o agente de usuario que envíe datos no deseados, puede aprovechar el plugin de restricción de agente de usuario.
  • Implemente limitación de tasa según las necesidades comerciales. APISIX proporciona plugins de limit-req, limit-conn y limit-count que pueden restringir la tasa a la que un usuario individual o una dirección IP pueden hacer solicitudes. Esto asegura que los usuarios no puedan inundar el sistema con un gran número de solicitudes rápidas.

5. Autorización de Nivel de Función Rota

Amenaza: Las políticas de control de acceso a veces son demasiado complejas, con varios niveles, grupos y roles, y una distinción borrosa entre funciones administrativas y estándar, lo que a menudo resulta en vulnerabilidades de permisos. Los atacantes pueden aprovechar estas debilidades para acceder a recursos de otros usuarios o funciones administrativas.

Autorización de Nivel de Función Rota

Ejemplo: Una plataforma de aprendizaje en línea ofrece varios cursos a los estudiantes. Con problemas en el diseño de la plataforma, los estudiantes pueden acceder a funcionalidades exclusivas de los instructores manipulando URLs o puntos finales de la API. Por ejemplo, un estudiante podría descubrir que al cambiar la URL de /student/dashboard a /instructor/dashboard, puede acceder al panel de control del instructor, lo que le permite modificar el contenido del curso, calificar tareas o incluso agregar/eliminar cursos.

Recomendación:

  • Deniegue todo acceso por defecto y requiera concesiones explícitas para roles específicos. Con APISIX, puede crear un consumidor o un grupo de consumidores para dar diferentes controles de acceso a los usuarios. Luego, el plugin de autenticación JWT puede configurarse para incluir información de roles en el token JWT. Cuando un usuario inicia sesión, el token JWT que recibe contendrá su rol (estudiante o instructor). APISIX puede entonces verificar el rol del usuario desde el token JWT antes de otorgar acceso a funciones específicas.
  • Asegúrese de que los controladores administrativos hereden de un controlador que implemente verificaciones de autorización basadas en roles de usuario. Si usa API7 enterprise, permite a los administradores limitar el acceso a la API a usuarios/grupos específicos y configurar el acceso por solicitud y por usuario.

6. Acceso sin Restricciones a Flujos de Negocio Sensibles

Amenaza: Los flujos de negocio sensibles se exponen sin una evaluación de riesgo sobre cómo la funcionalidad podría dañar el negocio si se usa de manera automatizada y excesiva.

Acceso sin Restricciones a Flujos de Negocio Sensibles

Ejemplo: Usando una combinación de proxies y scripts automatizados (bots), el atacante simula múltiples usuarios reales realizando compras. El script agrega rápidamente el producto al carrito y completa el proceso de pago, agotando el stock antes de que los clientes reales tengan la oportunidad de hacer una compra. El atacante luego revende estos productos a un precio más alto en otras plataformas. La plataforma del vendedor pierde ingresos potenciales ya que no puede vender los productos a los clientes reales al precio previsto.

Recomendación:

  • Implemente huellas digitales de dispositivos para denegar el servicio a dispositivos cliente inesperados. APISIX puede integrarse con plataformas de gestión de identidad y acceso como Auth0, Authgear, y otras para habilitar diferentes mecanismos de autenticación, incluyendo funciones de inicio de sesión biométricas en dispositivos.
  • Use mecanismos de detección humana como captchas o soluciones biométricas avanzadas. Lo mismo que arriba.
  • Analice el flujo de usuario para detectar patrones no humanos. Puede usar API7 enterprise para aplicar factores adicionales de autenticación cuando una solicitud está asociada con patrones no humanos, como altas velocidades entre diferentes ubicaciones de inicio de sesión o detección de bots.
  • Bloquee direcciones IP de fuentes maliciosas conocidas. APISIX tiene un plugin de restricción de IP para bloquear el acceso desde una o múltiples direcciones IP.

7. Falsificación de Solicitudes del Lado del Servidor (SSRF)

Amenaza: Los ataques SSRF permiten a un atacante hacer solicitudes a recursos internos del servidor, potencialmente obteniendo acceso a redes internas, sistemas de archivos o incluso ejecutando comandos. Esto ocurre cuando un punto final de la API acepta una URL o una parte de ella como entrada y la recupera sin una validación adecuada.

Falsificación de Solicitudes del Lado del Servidor (SSRF)

Ejemplo: Un punto final de la API acepta una URL para recuperar una imagen de internet. Un usuario malicioso envía una URL como http://169.254.169.254/latest/meta-data/ (un punto final típico de metadatos en entornos en la nube). El servicio recupera la URL, pensando que es una imagen, pero en su lugar obtiene datos sensibles como roles de IAM, claves secretas u otros detalles de configuración interna. El atacante luego usa esta información para más ataques, como escalación de privilegios o violaciones de datos.

Recomendación:

  • Validación de Entrada - Valide y sane siempre las entradas. Evite aceptar URLs completas de fuentes no confiables. Con APISIX, puede configurar un plugin de bloqueo de URI para aplicar reglas de bloqueo a recursos internos.
  • Listas Blancas - Solo permita conexiones a dominios o IPs conocidos y confiables. Lo mismo puede usar el plugin de restricción de IP de APISIX o habilitar restricción de referer para una lista blanca de dominios o patrones de URL aceptables. Cualquier URL que no coincida con la lista blanca es rechazada.
  • Segmentación de Red - Asegúrese de que sus servidores estén segmentados y que los recursos internos sensibles no sean directamente accesibles.

8. Configuración de Seguridad Incorrecta

Amenaza: Esto ocurre cuando una API no está configurada de manera segura, lo que potencialmente expone información sensible o otorga permisos innecesarios. Ejemplos incluyen mensajes de error de registro que revelan detalles del servidor, métodos HTTP innecesarios habilitados o credenciales predeterminadas sin cambios.

Configuración de Seguridad Incorrecta

Ejemplo: Un ejemplo simple podría ser una API que expone accidentalmente un directorio .git, revelando el código fuente y el historial de commits. Otro ejemplo, un usuario malicioso, mientras usa su plataforma, encuentra un mensaje de error. En lugar de un mensaje de error genérico, ve un rastreo detallado que revela la estructura de la base de datos, versiones de software y rutas de archivos. Usando esta información, identifica posibles vulnerabilidades en la plataforma. Además, al investigar configuraciones incorrectas comunes para tales plataformas, intenta iniciar sesión con la cuenta de prueba y tiene éxito, otorgándole acceso administrativo.

Recomendación:

  • Auditorías Regulares - Revise y actualice regularmente las configuraciones. Use herramientas automatizadas para escanear en busca de configuraciones incorrectas comunes. Con los plugins de registro de APISIX, todas las actividades de acceso y del sistema se registran. Cualquier actividad inusual, como múltiples fallos de inicio de sesión o acceso a puntos finales restringidos, puede ser marcada para revisión.
  • Principio de Mínimo Privilegio - Solo otorgue los permisos necesarios y evite usar configuraciones demasiado permisivas.
  • Encabezados de Seguridad Predeterminados - APISIX aplica configuraciones seguras predeterminadas con encabezados de seguridad esenciales, como Política de Seguridad de Contenido (CSP) y Seguridad de Transporte Estricta HTTP (HSTS), que están configurados. Esto reduce el riesgo de ciertos ataques basados en la web.
  • Enmascaramiento de Errores - Asegúrese de que los mensajes de error sean genéricos y no filtren información sensible. APISIX puede configurarse para enmascarar mensajes de error detallados usando el plugin de reescritura de respuesta o un plugin de enmascaramiento de datos personalizado.

9. Gestión Inadecuada del Inventario

Amenaza: A medida que las organizaciones crecen, a menudo pierden el rastro de todas sus API, especialmente si no hay una gestión centralizada. Esto puede llevar a API olvidadas, obsoletas o desprotegidas que pueden ser explotadas.

Gestión Inadecuada del Inventario

Ejemplo: Es común que múltiples versiones de API se dejen sin supervisión. Los atacantes pueden apuntar a versiones obsoletas de API o puntos de acceso sin parches. También pueden obtener acceso no autorizado a través de vulnerabilidades en conexiones de terceros.

Recomendación: Use la API de Administración de APISIX para revisar y desactivar regularmente rutas que ya no sean necesarias y para mantener un seguimiento de todas las versiones de API sin interrumpir las aplicaciones cliente. API7 Portal proporciona un panel de gestión centralizado donde todas las API pueden ser monitoreadas y gestionadas. Una versión antigua de una API podría seguir ejecutándose y ya no se usa. A través del panel, esta API puede ser identificada y apagada sin ningún cambio de código en el servicio backend en sí.

10. Consumo Inseguro de APIs

Amenaza: Al integrar API de terceros o incluso consumir API internas, si no se hace de manera segura, la acción puede exponer la aplicación a vulnerabilidades presentes en las API ascendentes.

Consumo Inseguro de APIs

Ejemplo: Pensemos en una aplicación móvil que permite a los usuarios monitorear sus métricas de salud, como la frecuencia cardíaca, patrones de sueño y actividad física. La aplicación no tiene validaciones y controles de seguridad estrictos al consumir estas API de terceros. Un atacante identifica que una de las API integradas de seguimiento de nutrición es vulnerable y puede devolver datos maliciosos. Cuando la aplicación obtiene sugerencias de planes de comidas de esta API, recupera y procesa sin saberlo cargas útiles maliciosas, lo que lleva a posibles violaciones de datos o mal funcionamiento de la aplicación.

Recomendación: Antes de integrar una API de terceros, verifique si proviene de una fuente confiable y ha pasado por evaluaciones de seguridad.

  • Manejo de Errores - Maneje respuestas o comportamientos inesperados de las API consumidas sin exponer vulnerabilidades.
  • Validación de Datos - Valide y sane siempre los datos recibidos de API de terceros. APISIX puede integrarse con Firewalls de Aplicaciones Web (WAF) para inspeccionar y filtrar datos entrantes de API de terceros. Esto puede detectar y bloquear patrones o cargas útiles maliciosas conocidas. También es posible activar TLS/mTLS para servicios ascendentes para garantizar la seguridad del tráfico mientras viaja a través de la red interna.

Resumen

Aplicar las pautas de seguridad sugeridas por OWASP API 2023 proporciona un punto de partida fundamental para proteger las API. Usar las características de la puerta de enlace APISIX simplifica este proceso y reduce significativamente el costo de implementar mecanismos de prevención recomendados por OWASP.

Recursos relacionados

Tags: