martes, 28 de enero de 2020

OWASP API Security Top 10



By @raulrenales&@db3rn4l

Desde hace tiempo mi compañero David Bernal y yo estamos recopilando información sobre análisis y auditoria de APIs, iniciamos el camino haciendo un post en este blog con un pequeño listado que iremos editando para ampliarlo y mejorarlo. En este artículo vamos a repasar el Top 10 de vulnerabilidades en APIs. La información esta extraída de OWASP que publico su primera lista el pasado 31 de diciembre de 2019.


La creación de este listado responde principalmente a dos razones:
  • El papel crucial que están desempeñando las APIs en la seguridad de las aplicaciones.
  • Aparición de problemas específicos de API que se deben tener en cuenta.


Top 10 Vulnerabilidades de API 2019

API1:2019 — Broken object level authorization (IDOR)
  • Descripción: Un atacante sustituye un valor (ID) en la llamada de la API, el atacante recibe información que podría no estar autorizado para ver.
  • Prevención: 
    • Implementar verificación de autorización para entregar la información a las personas adecuadas.
    • Verificar todos los valores que provienen de los usuarios y que vienen de zonas no confiables.
    • Chequear la autorización de cada una de las peticiones.
    • No utilizar patrones predecibles en los Identificadores (Ej. ID=adfi5df8s)

API2:2019 — Broken authentication
  • Descripción: Apis desprotegidas o con autenticaciones débiles. Credenciales incluidas en las urls. Falta de validación de Token de acceso.
  • Prevención: 
    • Verificar los procesos de autenticación en la API.
    • APIs auxiliares para recordatorios de contraseñas tratarse con la misma diligencia que las demás.
    • Tokens de acceso de larga duración.
    • Políticas de bloqueo para casos de intentos reiterados.


API3:2019 — Excessive data exposure
  • Descripción: Entregar más datos que los necesarios confiando que el cliente haga el filtrado en la capa web, si el atacante usa directamente la API obtiene toda la información.
  • Prevención: 
    • No confiar en el cliente para filtrar los datos
    • Entregar estrictamente los datos necesarios
    • Evaluar y justificar el uso de datos de carácter personal amparados por la ley.
    • Revisar que no existan fugas accidentales de datos o excepciones.

API4:2019 — Lack of resources and rate limiting
  • Descripción: Se trata de APIs que no controlan o limitan una cantidad excesiva de llamadas, esto puede provocar denegación de servicio y facilitan los ataques de fuerza bruta.
  • Prevención: 
    • Definir limitaciones en peticiones y carga de las mismas.
    • Chequear los ratios de compresión.


API5:2019 — Broken function level authorization
  • Descripción: APIs con diferentes roles de administración y usuario que contienen métodos ocultos de administración que pueden ser descubiertos y ser utilizados directamente por los usuarios.
  • Prevención:
    • No utilizar el cliente para otorgar el acceso a las funciones de administrador.
    • Denegar todo acceso por defecto.
    • Validar que cada nivel de usuario puede usar los métodos adecuados.
    • Buenas baterías de pruebas y validación en estos aspectos.

API6:2019 — Mass assignment
  • Descripción: Se da en la entrada de datos proporcionada por el cliente que pueden modificar propiedades de los objetos o proporcionar propiedades adicionales en sus solicitudes. El atacante podría adivinar o investigar propiedades ocultas de los objetos almacenados en backend para influir en ellas.
  • Prevención:
    • No enlazar directamente datos entrantes y objetos internos
    • Utilizar la propiedad readOnly, estableciéndola a true, para las propiedades que puedan obtenerse desde la API, no permitiendo en ningún momento que pueda modificar.
    • Definir bueno esquemas, tipos y patrones que se aceptaran en las peticiones.

API7:2019 — Security misconfiguration
  • Descripción: Sistemas sin actualizar, archivos y directorios desprotegidos, TLS mal configurado, Falta de políticas CORS o encabezados de seguridad, mensajes de error mal manejados, funciones innecesarias habilitadas.
  • Prevención:
    • Establezca procesos repetibles de endurecimiento y parcheo.
    • Automatizar fallas de configuración de localización.
    • Desactiva las funciones innecesarias.
    • Restringir el acceso administrativo.
    • Defina y aplique todas las salidas, incluidos los errores.


API8:2019 — Injection
  • Descripción: Un atacante podría utilizar los parámetros de entrada para inyectar código que influya en las peticiones SQL, NoSql, LDAP, OS u otros que se realizan en el backend de la API.
  • Prevención:
    • Validar cualquier valor de entrada a la API
    • Definir los tipos de datos de entrada
    • Usar listas blancas o negras
    • Sanitizar los parámetros
    • Verificar las salidas de la API para evitar fuga de datos


API9:2019 — Improper assets management
  • Descripción: Un atacante puede encontrar una versión de pruebas que no debería estar en producción. Encontrar fallos de seguridad en esas apis de prueba.
  • Prevención:
    • Mantener un inventario adecuado de los recursos utilizados
    • Limitar los accesos a los servicios y comprobar que solo son accesibles al público los que la organización quiere.
    • Separar los entornos de producción, preproducción y desarrollo.
    • Retirar versiones anteriores
    • Implementar autenticación estricta, redireccionamientos, CORS …


API10:2019 — Insufficient logging and monitoring 
  • Descripción: Ausencia de sistemas de monitorización de la API. Ausencia de logs que registren la actividad de la API. Por lo tanto ausencia de capacidad para generar alertas adecuadas que desenmascaren actividades ilícitas.
  • Prevención:
    • Registre intentos fallidos, acceso denegado, fallas de validación de entrada o cualquier falla en las verificaciones de políticas de seguridad.
    • Asegúrese de que los registros estén formateados para que otras herramientas también puedan consumirlos.
    • Proteja los registros como información altamente confidencial.
    • Incluya suficientes detalles para identificar a los atacantes.
    • Evite tener datos confidenciales en los registros; si necesita la información para fines de depuración, elimínela parcialmente.
    • Integre con SIEM y otros paneles, herramientas de monitoreo y alerta.

No hay comentarios:

Publicar un comentario