El proyecto OWASP API Security Top 10 2019 está diseñado para abordar el número cada vez mayor de organizaciones que están implementando API potencialmente sensibles como parte de sus aplicaciones públicas. Estas API se utilizan para tareas internas y para interactuar con terceros. Desafortunadamente, muchas API no se someten a rigurosas pruebas de seguridad que las ayudarían a protegerse de un ataque.
API 1: Autorización de nivel de objeto vulnerable
Las API tienden a exponer puntos finales (end-points) que manejan identificadores de objetos, creando un problema de Control de Acceso y ampliando la superficie de ataque. En cada función que accede a datos utilizando una entrada del usuario, se deben considerarse agregar verificaciones adicionales de autorización a nivel de objeto.
API 2: Autenticación de usuario vulnerable
A menudo, los mecanismos de autenticación se implementan incorrectamente, lo que permite a los atacantes comprometer los tokens de autenticación o explotar fallas de implementación para asumir las identidades de otros usuarios de manera temporal o permanente. La incapacidad del sistema para identificar al cliente/usuario compromete la seguridad de la API en general.
API 3: Exposición excesiva de datos
Al esperar implementaciones genéricas, los desarrolladores tienden a exponer todas las propiedades de los objetos sin tener en cuenta su sensibilidad individual, confiando en que los clientes realicen el filtrado de datos antes de mostrarlo al usuario.
API 4: Fallas en la restricción y limitación de recursos
Muy a menudo, las API no imponen ninguna restricción sobre el tamaño o la cantidad de recursos que puede solicitar el cliente. Esto no solo puede afectar el rendimiento del servidor API, lo que lleva a la denegación de servicio (DoS), sino que también deja la puerta abierta a fallas de autenticación a través de fuerza bruta.
API 5: Autorización vulnerable a nivel de función
Las políticas complejas de control de acceso con diferentes jerarquías, grupos y roles, y una separación poco clara entre las funciones administrativas y regulares, tienden a conducir a fallas de autorización. Al explotar estos problemas, los atacantes obtienen acceso a los recursos y/o funciones administrativas de otros usuarios.
API 6: Asignación masiva
La vinculación de datos proporcionados por el cliente (por ejemplo, JSON) a modelos de datos, sin un filtrado de propiedades adecuado basado en una lista blanca, generalmente conduce a una asignación masiva de datos. Adivinar las propiedades de los objetos, explorar otros end-point de la API, leer documentación o proporcionar propiedades de objetos adicionales en las cargas útiles de solicitud, permite a los atacantes modificar las propiedades de los objetos que no deberían hacerlo.
API 7: Configuración incorrecta de seguridad
La configuración incorrecta de seguridad suele ser el resultado de configuraciones predeterminadas no seguras, configuraciones incompletas o ad-hoc, almacenamiento abierto en la nube, encabezados HTTP mal configurados, métodos HTTP innecesarios, uso compartido de recursos de origen cruzado permisivo (CORS) y mensajes de error detallados que contienen información confidencial.
API 8: Inyección
Las inyecciones SQL, NoSQL, comandos, etc., ocurren cuando se envían datos no confiables a un intérprete como parte de un comando o consulta. Los datos maliciosos del atacante pueden engañar al intérprete para que ejecute comandos no deseados o acceda a los datos sin la autorización adecuada.
API 9: Gestión de activos inapropiada
Las API tienden a exponer más end-points que las aplicaciones web tradicionales, lo que hace que la documentación adecuada y actualizada sea muy importante. Los hosts adecuados y el inventario de versiones de API implementadas también juegan un papel importante para mitigar problemas como versiones de API obsoletas y puntos finales de depuración expuestos.
API 10: Registro y monitoreo insuficiente
El registro y el monitoreo insuficientes, junto con la integración faltante o ineficaz de la respuesta a incidentes, permite facilitar los ataques, mantener la persistencia, controlar y manipular más sistemas, extraer o destruir datos sin control. La mayoría de los estudios de incumplimiento demuestran que el tiempo para detectar un incumplimiento es superior a 200 días, generalmente detectado por partes externas en lugar de procesos internos.