¿Qué tres fallos de seguridad en tus APIs deberías vigilar en 2023?
Noelia Martín Hernández, Consultora API en Paradigma Digital
16/12/2022El proceso de exponer APIs se ha convertido en un estándar en el ecosistema IT de las compañías. Su uso es cada vez más frecuente, por lo que aumenta el volumen de información que se maneja a través de ellas y, por tanto, sus ataques.
Exponer una API supone ofrecer una puerta de acceso a los datos y a la propia organización, entonces, ¿por qué se siguen dejando APIs desprotegidas? Algunas de las típicas respuestas son: esta API solo la usamos nosotros, no merece la pena protegerla, o si nadie sabe que existe, no la van a encontrar. Estos argumentos, o mejor dicho excusas, se caen por su propio peso. Gartner estima que durante este año 2022 las APIs han sido el vector de ataque más frecuente, por lo que vamos a detallar los tres tipos más frecuentes y cómo mitigarlos este próximo año.
El primero de ellos es el control de acceso el cual implica problemas tanto en el proceso de autenticación como de autorización. En el caso de la autenticación supone que los atacantes pueden comprometer usuarios y contraseñas para asumir otra identidad y en el caso de la autorización pueden explotar funcionalidades para las que no están autorizados, por ejemplo, ver datos de otros usuarios, modificar permisos o tener acceso a funciones de administración.
¿Qué podemos hacer para evitarlo? A nivel de autenticación lo ideal es utilizar mecanismos estándar de autenticación y generación de tokens, minimizar el tiempo de validez de los tokens, testear de manera periódica y automatizada todas las posibles formas de autenticación, en especial el proceso de reseteo de contraseña e implementar políticas de bloqueo severas y de contraseña seguras.
Frente a los ataques a nivel de autorización, una buena solución es limitar el acceso a los usuarios según su rol para garantizar que solo las personas con los permisos adecuados pueden acceder y modificar los recursos de la API. Otro mecanismo que ayuda a mitigar este tipo de riesgos es verificar el acceso a nivel de objeto, un ejemplo básico sería que un usuario puede consultar sus cuentas bancarias, pero no las de otro cliente. Para hacer esa comprobación es necesario poner foco en la validación de los identificadores de los recursos API y no confiar en los que vienen en las peticiones, así como los controles de acceso a datos.
El segundo de los problemas típicos es la ausencia de restricciones en el número de peticiones y tamaño de los mensajes. Los atacantes pueden aprovechar esta circunstancia de diferentes formas: usar la fuerza bruta para adivinar credenciales de usuarios, realizar ataques de denegación de servicio y sobrecargar la API para que deje de estar disponible, incluso si un recurso expone una API con paginación, solicitar una página de tamaño excesivo que supera su capacidad. Para minimizar estos problemas lo ideal es definir un 'rate-limit' a nivel de API, métodos y cliente origen de las peticiones, así como limitar el tamaño de los mensajes que retorna la API.
Y por último los ataques a nivel de datos, esto se produce porque las APIs no protegen adecuadamente datos sensibles como información personal, financiera o sanitaria. En este caso los atacantes pueden robar o modificar esos datos protegidos de forma inadecuada para llevar a cabo fraudes, robos de identidad u otros delitos. Para prevenir esta vulnerabilidad es necesario validar de forma estricta los datos tanto de petición como de respuesta, es decir, si se admite un campo que es un teléfono, rechazar todas las peticiones que no cumplan ese patrón. Para hacer de forma efectiva esta validación lo ideal es definir esquemas y patrones de la información que se admite y, por último, realizar un análisis riguroso de los datos que se envían en la respuesta para justificar su uso.
En conclusión, la seguridad a nivel de API se ha convertido en un challenge que se necesita abordar desde el momento en el que se comienza su diseño. Realizar este proceso de securización de una manera efectiva implica tener una visión holística de todas sus posibles vulnerabilidades y apoyarse en herramientas que faciliten su testeo de forma automatizada.