Primero empecemos explicando qué es una API. El término API es un acrónimo y significa “Application Programming Interface” y es un software intermediario que permite a dos aplicaciones comunicarse entre sí a pesar de que esas dos aplicaciones hablen lenguajes diferentes.
O, como se suele explicar en la universidad: imagínate una carta de tu restaurante favorito, eliges dos entrantes y una carne, haces el pedido al camarero y este se lo solicita a la cocina. Una vez cocinado, la cocina se lo entrega al camarero y este finalmente a ti, el comensal y solicitante inicial.
Pues la API es el camarero. Al camarero le has hecho un pedido (API Request), él lo ha recogido. Como tú (API Client) no hablas con la cocina porque no sabes cómo hay que pedirlo ni dónde hay que ir a pedirlo (no estás autorizado a ir a cocina) el camarero lo hace por ti. El camarero ha traducido tu pedido en un lenguaje que en cocina (API Server) entienden y se han puesto a trabajar. Una vez cocinado, cocina da tu pedido a tu camarero, y él a su vez a ti (API Response).
¿Por qué es crítico proteger las API?
Porque el número de APIs está creciendo a una gran velocidad desde la existencia de los microservicios que, como sabéis, son los “reyes” de las nuevas arquitecturas, han venido para quedarse y se apoyan principalmente en un servicio API. Del mismo modo, el internet de las cosas (IoT), que tanto estamos integrando con nuestros móviles, también se apoya en APIs, de manera que puedes “hablar” con tu lavadora y manejar su encendido a distancia.
Qué mejor que una gráfica para ver la estimación de APIs que tendremos en 2030 y cómo está creciendo su uso.
En resumen, las API son, y van a ser cada día más, un elemento clave en nuestras arquitecturas. Un elemento que, además, es crítico, puesto que todo el flujo de información que se comparte entre un cliente y un servidor debe de pasar por él. De manera que, si nuestra API está comprometida, lo estará la información que se trata en la misma. Además, considerando que las APIS en su gran mayoría están expuestas a internet, cuanto más acceso libre y abierto tenga al público a un recurso, mayor será el número de potenciales amenazas.
La protección de nuestras APIs no se encuentra en ninguna normativa o estándar de referencia, siendo uno de los grandes olvidados, si bien es totalmente necesario asegurar que están protegidas.
Para ver a las amenazas a las que nos enfrentamos os recomiendo echar un vistazo al TOP 10 de OWASP en API Security.
¿Cómo protejo mis API?
- Aunque parezca una obviedad, necesitas conocer cuáles son tus API. Por tanto, inventaría y gestiona tus API. En grandes organizaciones no se tiene un control del número de APIs que hay y dónde se encuentran y no conocer tu superficie de ataque es el principal problema. Si no sé lo que tengo que proteger, ¿cómo lo voy a proteger? Para ello, debes de realizar escaneos perimetrales y descubrir tus APIs.
- Utiliza una solución robusta de autenticación y autorización. Como habréis visto en los TOP 10 de OWASP, un gran número de ataques se producen por APIs que no fuerzan la autenticación. Este caso suele ser común debido que en muchas ocasiones la API era inicialmente privada y al hacerla a posteriori pública, no se reevaluó la seguridad. Lo ideal es usar soluciones basadas en mecanismos sólidos de autenticación y autorización, como OAuth2.0 y OpenID Connect.
- Analiza la necesidad de cifrar el tráfico mediante TLS y cífralo siempre que la información sea sensible: Puede que, si la información es pública como, por ejemplo, datos del BOE, no necesites cifrar el tráfico, pero si la información que viaja a través de la API es sensible, es obligatorio su cifrado.
- Valida los mensajes entrantes a la API utilizando esquemas JSON. Cuanto más estrictas sean estas reglas de validación, más difícil será para los atacantes abusar de la API.
- Utiliza metodologías de DevSecOps para asegurarte de que la seguridad está embebida y apóyate en herramientas de análisis de código como SAST o SCA.
- Utiliza un WAF para inspeccionar los paquetes HTTP/S y en algunos casos balancear la carga.
Como resumen
Las API se han convertido en el método más usado para comunicar y crear aplicaciones modernas basadas en microservicios. Adicionalmente, el creciente número de IoTs también se basan en API. La buena noticia es que la protección de las API no tiene una alta complejidad si tienes bien inventariadas e identificadas las mismas. Te animamos a proteger dichas APIs con, al menos, las recomendaciones que te indicamos en el presente post. Si deseas más detalle o ayuda con tus API no dudes en consultar al equipo de S3 a través de info@s3curetasun.net
Pingback: Framework de seguridad en API – S3