Por: Morton Swimmer, Fyodor Yarochkin, Joey Costoya, Roel Reyes
Trend Micro Research
La adopción de la nube ha incrementado constantemente, no solamente entre compañías pequeñas que buscan alternativas más eficientes en términos de costo a la infraestructura física, sino también en empresas grandes que buscan aprovechar su flexibilidad. Sin embargo, uno de los retos que enfrentan las organizaciones, especialmente aquellas que apenas están migrando hacia la nube, es la falta de familiaridad con la operación de la misma y cómo difiere de un sistema meramente on-premise. Los entornos en la nube no involucran típicamente una sola implementación; en su lugar, combinan diferentes servicios de diferentes proveedores de la nube, a menudo en conjunto con data centers físicos.
Este reto se extiende a la seguridad – existen riesgos en no asegurar adecuadamente los despliegues en la nube y en no tener familiaridad con las particularidades de la configuración de los servicios en la nube. Muchos factores pueden llevar a exponer workloads y aplicaciones a ataques, incluyendo temas de configuración, uso inapropiado de la tecnología, falta de experiencia en la operación y la protección de sistemas en la nube, o incluso la mera inadvertencia de parte de desarrolladores o ingenieros de la nube. Los componentes de los sistemas en la nube están interconectados de muchas formas, haciendo que sea difícil mapear los vectores potenciales de ataque. Para el personal de seguridad de TI que apenas está comenzando a familiarizarse con los servicios y las plataformas en la nube, la seguridad representa un gran reto.
En nuestro reporte titulado “desenredando la red de las amenazas a la seguridad de la nube”, ofrecemos ejemplos de amenazas y riesgos que las organizaciones podrían enfrentar mientras migran hacia o usan servicios en la nube. Sin importar el servicio o la plataforma, el común denominador es que los temas de configuración continúan siendo una de las mayores trampas de la seguridad en la nube, afectando tanto a las empresas que se suscriben a los servicios en la nube y a los usuarios de software que está hosteado en la nube.
Buckets World-Writable de Amazon S3
Amazon Web Services (AWS) ha emergido como un jugador importante la industria de la nube gracias a su diversa oferta. Entre los productos ofrecidos por AWS, el Amazon Simple Storage Service (Amazon S3) Es tal vez el más popular; su infraestructura es usada por empresas como Netflix, Reddit, y Pinterest.
Una de las tendencias consistentes que observamos durante el estudio de buckets de Amazon S3 es que muchas organizaciones los dejan en modalidad “world-writable” – un tema de configuración que permite que usuarios no autorizados escriban en el bucket. Un ejemplo muy reportado involucró al diario L.A. Times, el cual previamente tenía una ACL (access control list) de red configurada para permitir acceso de escritura público al bucket que hosteaba su sitio web de homicidios. Esto permitió que un atacante agregara un cryptominer al código de JavaScript.
Telemetría recopilada de datos de Akami para la infraestructura de Trend Micro™ Smart Protection Network™ también mostró que ataques en un número de sitios web con buckets world-writable ocurrieron durante la mayoría del 2019 – algunos de los ataques involucraron la inyección de código malicioso y, eventualmente, exfiltración de datos de formatos de sitio web. Otro problema que encontramos fue que había archivos clasificados como maliciosos que estaban hosteados en buckets de Amazon S3. Muchos de ellos usan el viejo esquema de direccionamiento path-style. Lo que esto significa es que el bucket está usando un hostname genérico de Amazon S3 en contraste con el esquema de hosteo virtual donde el nombre del bucket está incluido en el hostname.
Esto representa un problema para los filtros de seguridad, ya que bloquear el hostname de un sitio web malicioso que usa el esquema path-style invariablemente bloqueará otros sitios web maliciosos también.
Un segundo servicio importante en la nube es el cómputo, el cual está enfocado estos días en la tecnología de containers. De forma similar al segmento general de la nube, los containers también han visto un alto grado de adopción en los últimos años. Software como Docker, Kubernetes, y AWS Lambda han ayudado a impulsar la tecnología hacia adelante, ofreciendo despliegues en la nube ligeros y eficientes a organizaciones que buscan optimizar sus operaciones de desarrollo. Sin embargo, son comunes los lapsos o errores de configuración, poniendo en riesgo a los sistemas frente a ataques qué buscan aprovechar estos temas de configuración.
Docker
Los usuarios de Docker han sido plagados por la proliferación de containers maliciosos que entregan cryptominers, a menudo como resultado de que los containers de Docker están expuestos al internet. Estos cryptominers pueden causar problemas significativos de desempeño a la máquina que han infectado, y pueden causar pérdidas financieras debido al uso extremo del CPU en los despliegues en la nube basados en instancias auto-escalables.
Existe un número diverso de técnicas que puede usar un atacante para inyectar un miner en un servidor expuesto de Docker. La forma más sencilla es que el cryptominer sea instalado directamente de una imagen que contiene el código. Otro método común es usar imágenes base usadas ampliamente como Ubuntu para instalar el software de mining durante la secuencia de inicio.
AWS Lambda
Son procesos serverless potenciados por eventos que ofrecen soluciones ligeras y efectivas en costo para aplicaciones sin patrones determinados de uso. Una idea falsa común es que los Lambdas ya están protegidos debido a que un atacante no tiene forma de acceder directamente a los nombres de función. Esta idea errónea puede llevar a que se implementen funciones sin la autorización debida.
Sin embargo, los atacantes pueden encontrar Lambdas a través de varios métodos – por ejemplo, usar un sniffer para escuchar el tráfico de red o examinar el código fuente de sitios que usan Lambda y correr un gateway API. Sin una autenticación segura de Lambda, se corre el riesgo de exponer información sensible.
Además, debido a la forma en que los desarrolladores escriben el código, muchas funciones de Lambda basadas en Python dejan un rastro de stack cuando se les da argumentos incorrectos, lo cual puede llevar a que un atacante conozca detalles acerca de la implementación de Lambda.
Kubernetes
Kubernetes es una plataforma de código abierto de orquestación de containers usada para gestionar workloads de containers. Usando Shodan, descubrimos 32,000 casos de servidores de Kubernetes expuestos en internet en enero de 2019. De forma similar a otros casos de fallas de configuración, un servicio de Kubernetes, o cualquiera de sus componentes, que es accesible por internet puede ser explotado con propósitos maliciosos.
Kubeletes
Kubernetes usa la API de su subcomponente Kubeletes para gestionar los containers en cada nodo. En versiones de Kubernetes anteriores a la 1.10, Kubelet exponía el puerto 10255 y el puerto de control 10250. Ambos puertos pueden explotarse. Aunque el potencial abuso del puerto de control es más aparente – por ejemplo, puede usarse para instalar cryptominers – el puerto 10255 puede contener información potencialmente sensible.
etcd
Etcd es un almacén key-value distribuido y replicado que actúa como el almacén de datos principal de Kubernetes. Tiene la responsabilidad de guardar las configuraciones de las instalaciones de Kubernetes, así como de ofrecer el backend de almacenamiento para el descubrimiento de servicios. Además de Kubernetes, otras aplicaciones, como CoreDNS y Rook, usan etcd. Dado su uso como un datastore, un etcd expuesto al público puede potencialmente filtrar datos sensibles – incluyendo credenciales usadas para servidores y aplicaciones. Encontramos más de 2,400 servidores etcd expuestos usando Shodan, representando una mezcla tanto de Kubernetes como de otro software.
Administración inapropiada de credenciales
El uso de credenciales – a menudo pasado por alto – es uno de los aspectos más importantes del cómputo en la nube. Ya que las organizaciones no pueden proteger físicamente un sistema en la nube de la misma forma en que lo harían con un data center, la necesidad de tener una fuerte seguridad de credenciales se vuelve aún mayor. Un reto que surge cuando se trata de proteger credenciales es el hecho de que muchos procesos a menudo necesitan acceder a datos y a otros recursos que requieren de autenticación. Esto significa que los usuarios necesitan proteger tanto los datos como las credenciales de ser expuestos.
Un error común que cometen los programadores es que filtran información de credenciales de forma inadvertida en repositorios públicos como GitHub. Datos sensibles como claves de API a veces se encuentran en líneas de código publicadas en línea, las cuales puede usar un atacante para potencialmente tomar el control de la cuenta para la que se usan las credenciales. Las cuentas comprometidas pueden usarse para un gran número de propósitos maliciosos como el robo de datos de clientes, los cuales pueden ser vendidos en el underground.
Otro problema que encontramos es que muchos programadores con poca experiencia a menudo siguen tutoriales engañosos o incluso erróneos, y que muchos de estos tutoriales alientan a que se haga hardcoding de las credenciales dentro del mismo código. Esto se vuelve un problema cuando el código sea publicado en un repositorio, donde cualquiera puede tener acceso a él.
Conforme la adopción de los servicios en la nube crece, las organizaciones necesitan estar completamente informadas acerca de las amenazas que enfrentan y estar debidamente preparadas para proteger sus sistemas en la nube. Los beneficios de la nube no pueden alcanzarse sin una implementación robusta de seguridad. Las amenazas que analizamos en nuestras investigaciones no cubren todos los riesgos y amenazas potenciales en la nube, pero incluimos algunos de los más importantes. Esto es especialmente importante para el personal de TI y de seguridad que necesita comprender tanto la infraestructura de la nube como las estrategias necesarias para protegerla.
Lea nuestro reporte completo, “Desenredando la red de las amenazas a la seguridad de la nube”, el cual ofrece una visión a profundidad de las amenazas que hemos discutido aquí y ofrece recomendaciones para poderse defender ante ellas.
Leave a Reply