Las interfaces de programación de aplicaciones, o API, son intermediarios de software que permiten que programas separados interactúen entre sí de manera efectiva, intercambien datos entre sí y respondan a instrucciones que han sido predefinidas. Ponen las aplicaciones a disposición de desarrolladores externos, lo que las hace fáciles de integrar, perfectas para la automatización y le da a la aplicación la capacidad de utilizar los datos y la funcionalidad de otras aplicaciones.
El énfasis principal de la seguridad de las API es el desarrollo de estrategias y soluciones, con el objetivo de comprender mejor las vulnerabilidades específicas y los riesgos de seguridad que las API pueden proporcionar, y mitigar esos riesgos siempre que sea posible. La función fundamental de una API se puede dividir en los siguientes pasos:
- Para obtener información, una aplicación cliente realiza una solicitud a una interfaz de programación de aplicaciones (API).
- Después de recibir una solicitud legítima de la aplicación del cliente, la interfaz de programación de aplicaciones (API) realiza una llamada a un servidor web o a un software externo.
- La información que se solicitó se incluye en la respuesta que el servidor proporciona a la API.
- Los datos se envían a la aplicación que los solicitó a través de la API.
Debido a que las interfaces de programación de aplicaciones (API) son susceptibles a la ingeniería inversa y, a menudo, están disponibles en Internet, garantizar que sean seguras debería ser de suma importancia. Las consideraciones esenciales de seguridad de la red y las aplicaciones que se aplican a las aplicaciones y otros tipos de tráfico de red interno también se aplican a las API. Algunas de estas características de seguridad esenciales son fuertes límites de acceso, control de datos, limitaciones de velocidad, validación de entrada y detección de amenazas.
Es probable que cualquier vulnerabilidad en la seguridad de una API sea identificada y explotada por actores hostiles tan pronto como se detecte. Las infracciones de alto perfil recientes han demostrado que los piratas informáticos están apuntando agresivamente a las interfaces de programación de aplicaciones (API). El Proyecto de seguridad de aplicaciones en línea abierta (OWASP), una organización sin fines de lucro que trabaja para mejorar la seguridad de las aplicaciones web y los servidores web, identifica los siguientes tipos de vulnerabilidades como las más frecuentes que afectan las interfaces de programación de aplicaciones (API).
VULNERABILIDADES QUE AFECTAN A LAS INTERFACES DE PROGRAMACIÓN DE APLICACIONES (API)
INTENTOS NO CONFIABLES DE AUTENTICACIÓN
La autenticidad de los usuarios o dispositivos se establece mediante autenticación. Cuando solo hay un nivel mínimo de seguridad proporcionado por el método de autenticación, ni siquiera podría haber uno en su lugar. La mayoría de las veces, estas fallas de seguridad se manifiestan en forma de configuraciones o configuraciones defectuosas que reducen la fuerza de la autenticación.
Algunas instancias de esto incluirían depender solo de las claves API como el único método de autenticación, tener una complejidad de contraseña demasiado baja o tener umbrales de bloqueo de cuenta demasiado altos. Los actores de amenazas pueden manipular las cuentas o sesiones del usuario, robar sus datos o incluso participar en otras operaciones fraudulentas aprovechando una autenticación deficiente.
AUTORIZACIÓN ROTO AL NIVEL DE OBJETO (BOLA)
Existe una vulnerabilidad en la API de BOLA cada vez que los campos confidenciales incluidos dentro de un objeto se exponen de manera inapropiada. Esto se debe al hecho de que el componente del servidor no mantiene un registro completo del estado del cliente y, en cambio, depende en gran medida de los ID de objeto que se envían desde el cliente para decidir a qué objeto acceder.
Por ejemplo, los atacantes pueden utilizar la información personal de un usuario si no está protegida de forma segura en una respuesta API que se envía al navegador o dispositivo móvil del usuario. Luego, podrían usar esta información para hacerse pasar por el usuario y obtener acceso a la cuenta. Como resultado, los actores de amenazas pueden revelar, editar o incluso borrar información de identificación personal. Este problema ocurre a menudo en aplicaciones que utilizan API. Si está interesado en aprender más sobre BOLA, puede leer este artículo escrito por uno de mis compañeros de trabajo.
CONFIGURACIÓN INCORRECTA DEL SISTEMA
La mala configuración de un sistema puede tener lugar en numerosos niveles, y algunos ejemplos de ello incluyen la omisión de actualizaciones de seguridad, mensajes de error excesivamente descriptivos, la falla en el cifrado de datos y dejar depósitos de almacenamiento en la nube expuestos y vulnerables a la intrusión. Las configuraciones incorrectas de los ajustes de seguridad pueden generar una serie de riesgos, incluida la posibilidad de que los datos confidenciales o los sistemas internos se vean comprometidos.
INYECCIONES SUBCUTÁNEAS
Las vulnerabilidades de inyección hacen posible que los actores de amenazas transmitan instrucciones o datos maliciosos a una API por medio de los campos de entrada del usuario, ya sea enviándolos como parámetros o cargándolos como archivos.
Javascript, SQL, NoSQL y las líneas de comando del sistema operativo son ejemplos de métodos de inyección que utilizan los atacantes. Cuando hay fallas de inyección en el código, como cuando los datos proporcionados por el cliente se conectan directamente a SQL/NoSQL, consultas de Javascript o instrucciones del sistema operativo, el intérprete de la API evitará cualquier seguridad y ejecutará los comandos maliciosos. Esto puede suceder cuando hay problemas de inyección en el código.
GESTIÓN INADECUADA DE ACTIVOS
Es fundamental contar con la documentación adecuada, ya que las interfaces de programación de aplicaciones (API) a menudo exponen más puntos finales que las aplicaciones web tradicionales. Inventariar las versiones de API y los hosts implementados de la manera correcta puede ayudar a minimizar una serie de problemas, incluida la exposición de la versión de API en desuso y los puntos finales de depuración expuestos.
PROTECCIÓN CONTRA FALLAS DE SEGURIDAD DE API
Las vulnerabilidades de las API a menudo se están convirtiendo en un problema cada vez mayor a medida que más empresas dependen de las API como un medio para interactuar con los clientes y socios comerciales. Como hemos visto, hay algunas formas diferentes de hacer uso de estas interfaces de programación de aplicaciones (API). Sin embargo, puede ayudar en la defensa contra ellos mediante la ejecución de algunos actos simples, que son los siguientes:
- Asegúrese de que sus interfaces de programación de aplicaciones (API) tengan suficiente seguridad.
Mediante el uso de contraseñas robustas y varias otras medidas de seguridad, puede asegurarse de que el sistema solo sea accesible para aquellos a quienes se les ha otorgado permiso para usarlo. Utilice estrategias de autenticación estrictas, como métodos de autenticación de múltiples factores, y verifique que cada usuario tenga su propia contraseña distinta. Debido a esto, será mucho más difícil para los atacantes acceder a tu API; por lo tanto, debe asegurarse de revisar sus medidas de seguridad periódicamente para mantenerse al día con los avances más recientes. - Realice verificaciones de seguridad de rutina en sus interfaces de programación de aplicaciones (API).
La lógica de una aplicación debe probarse y validarse cuidadosamente antes de que se pueda incorporar cualquier entrada del usuario. Los desarrolladores tienen la responsabilidad de garantizar esto. También debe regular cuidadosamente la cantidad de solicitudes que ingresan para que pueda evitar ataques que le nieguen el acceso al servicio. Al desarrollar API, también debe tener cuidado para evitar que la información corporativa crítica esté disponible públicamente. Utilice varios métodos de prueba de penetración para identificar cualquier agujero en el sistema y arréglelo lo antes posible. - Asegúrese de que todos sus sistemas estén siempre actualizados.
El curso de acción más eficaz es siempre la prevención. Asegúrese de estar informado de cualquier nueva vulnerabilidad o vulnerabilidad que pueda comprometer la seguridad de sus sistemas.
Es un conocido experto en seguridad móvil y análisis de malware. Estudió Ciencias de la Computación en la NYU y comenzó a trabajar como analista de seguridad cibernética en 2003. Trabaja activamente como experto en antimalware. También trabajó para empresas de seguridad como Kaspersky Lab. Su trabajo diario incluye investigar sobre nuevos incidentes de malware y ciberseguridad. También tiene un profundo nivel de conocimiento en seguridad móvil y vulnerabilidades móviles.