ShadowRay: primeros ciberataques dirigidos a cargas de trabajo de IA
El equipo de investigación de Oligo ha dado a conocer la primera ola de ataques masivos dirigido específicamente a servidores de inteligencia artificial
Oligo Security es una empresa de seguridad que trabaja porque el uso de paquetes de código abierto sea eficaz y preciso, asegurando que cada paquete hace exactamente lo que se pretendía.
Y en sus investigaciones han descubierto una serie de ataques masivos dirigidos a una vulnerabilidad en Ray, un framework de IA de código abierto, que se utiliza por miles de empresas y servidores. Es una vulnerabilidad crítica que está en disputa y, por tanto, no tiene parche. Esta vulnerabilidad ha estado explotándose de forma activa durante al menos los últimos 7 meses y permite a los atacantes apoderarse de la potencia de cálculo además de filtrar datos sensibles. En este tiempo ha afectado a sectores como la educación, criptomonedas, biofarmacia y otros.
Minería de criptomonedas a través de Ray
Han pasado siete meses y nadie notó que los servidores estaban siendo víctimas de ciberataques, otorgando acceso sin restricciones a estos hackers y permitiendo corromper los modelos de IA, además de utilizar su capacidad de procesamiento para minar criptomonedas.
La historia detrás de la vulnerabilidad
A finales de 2023 se revelaron cinco vulnerabilidades en Ray, un framework de código abierto ampliamente utilizado en cargas de trabajo de IA, desarrollado y mantenido por Anyscale. Las vulnerabilidades fueron reveladas (algunas simultáneamente) por Bishop Fox, Sierra Haex y Protect AI.
Tras la revelación, Anyscale publicó un entrada en su blog para abordar las vulnerabilidades, aclarar la cadena de acontecimientos y detallar cómo se ha abordado cada CVE. Mientras que cuatro de las vulnerabilidades reportadas fueron corregidas en la versión 2.8.1 de Ray, la quinta CVE (CVE-2023-48022) sigue en disputa, lo que significa que no se consideró un riesgo y no se abordó con una solución inmediata.
Debido a que CVE-2023-48022 fue disputada, muchos equipos de desarrollo (y la mayoría de las herramientas de escaneo estático) no son conscientes de que esta vulnerabilidad debería preocuparles. Algunos de ellos podrían haber pasado por alto esta sección de documentación de Ray, mientras que otros desconocen esta característica.
Los investigadores de Oligo Security han monitorizado casos en los que la CVE-2023-48022 se explota activamente, lo que la convierte en una «vulnerabilidad en la sombra», es decir, una CVE que no aparece en los análisis estáticos pero que puede dar lugar a brechas y pérdidas significativas.
Infraestructura de IA: Una mina de oro para los atacantes
Un entorno de IA típico contiene una gran cantidad de información confidencial, suficiente para derribar una empresa entera. ¿Por qué un entorno de IA es tan lucrativo para los atacantes? Echemos un vistazo a los componentes y a los riesgos que presentan.
Un entorno ML-OPS consta de muchos servicios que se comunican entre sí, dentro del mismo clúster y entre clústeres.
Cuando se utiliza para la formación o el ajuste fino, normalmente tiene acceso a conjuntos de datos y modelos, en disco o en almacenamiento remoto, como un bucket de S3. A menudo, los modelos o conjuntos de datos son la propiedad intelectual única y privada que diferencia a una empresa de sus competidores.
Además, los entornos de IA suelen tener acceso a tokens de terceros e integraciones de muchos tipos (HuggingFace, OpenAI, WanDB y otros proveedores de SaaS).
Los modelos de IA están ahora conectados a las bases de datos de la empresa y a los gráficos de conocimiento. La infraestructura de IA puede ser un único punto de fallo para las empresas impulsadas por la IA, y un tesoro oculto para los atacantes.
Los modelos de IA suelen ejecutarse en máquinas caras y potentes, lo que convierte la potencia de cálculo que utilizan en un objetivo prioritario para los atacantes.
¿Qué es Ray?
Ray es un marco unificado para escalar aplicaciones de IA y Python con diversos fines.
A alto nivel, Ray consiste en
- Un núcleo de ejecución distribuido, conocido como Ray Core.
- Un conjunto de bibliotecas de IA complementarias y extensiones que se construyen sobre él o dependen de él, para acelerar y distribuir cargas de trabajo de ML específicas del dominio de forma eficiente.
¿Quién utiliza Ray y cómo?
En la actualidad, Ray cuenta con 30.000 estrellas en GitHub. Según Anyscale, algunas de las organizaciones más grandes del mundo utilizan Ray en producción, incluyendo Uber, Amazon y OpenAI.
Muchos proyectos confían en Ray para las principales cargas de trabajo de SaaS, datos e IA, aprovechando el proyecto por sus altos niveles de escalabilidad, velocidad y eficiencia.
Anyscale mantiene el proyecto Ray, que sirve de base para numerosas bibliotecas como Ray Tune y Ray Serve, entre otras.
Ray utiliza código boilerplate que arranca las instalaciones y el despliegue de productos utilizando gráficos Helm y otros métodos nativos de la nube. Las numerosas integraciones de Ray con proveedores de servicios en la nube permiten también casos de uso de servicios gestionados.
Los modelos como GPT-4 comprenden miles de millones de parámetros, lo que requiere una enorme potencia de cálculo. Modelos tan grandes no caben en la memoria de una sola máquina. Ray es la tecnología que permite ejecutar estos modelos. Ray se ha convertido rápidamente en una práctica recomendada en el sector, especialmente para los profesionales de la IA, que dominan Python y a menudo necesitan modelos para ejecutarlos y distribuirlos entre varias GPU y máquinas.
Cómo se utiliza Ray en la IA
Las funciones de Ray se adaptan perfectamente a las necesidades de la IA:
- Ray permite cargas de trabajo distribuidas para entrenar, servir y ajustar modelos de IA de todas las arquitecturas y marcos de trabajo.
- Ray requiere muy pocos conocimientos de Python. Tiene una API Python sencilla con una configuración mínima.
- Ray es sólido como una roca y utiliza las mejores prácticas para optimizar el rendimiento, con una instalación robusta y sin esfuerzo, pocas dependencias y un código de grado de producción probado en combate.
- Ray va más allá de Python, permitiéndole ejecutar trabajos de cualquier tipo, incluyendo comandos bash.
- Ray es la navaja suiza para los Pythonistas y los profesionales de la IA, permitiéndoles escalar sin esfuerzo sus aplicaciones de IA.
La historia de CVE-2023-48022: ShadowRay explicada
Una de las vulnerabilidades, CVE-2023-48022, surgió de la falta de autorización de Ray en la ejecución de API Jobs. Este CVE sigue siendo disputado por Anyscale – de hecho, según ellos, es un comportamiento esperado y una característica del producto, en lugar de una vulnerabilidad o error.
Sin embargo, en muchos repositorios de GitHub para ayudar a las empresas a desplegar Ray en su entorno de nube, Ray sigue siendo vulnerable no sólo a las CVEs que fueron corregidas con éxito (ejecutando versiones de Ray entre 2.6.3 – 2.8.0), sino también a ShadowRay, porque el panel de control de Ray siempre se enlaza en 0.0.0.0 (todas las interfaces de red), junto con el reenvío de puertos en 0.0.0.0, posiblemente exponiendo la máquina a Internet por defecto.
Ray no incluye ningún tipo de autorización en su API de Jobs. El resultado: cualquiera con acceso al puerto HTTP 8265 podría potencialmente invocar trabajos arbitrarios en el host remoto, sin autorización.
Según la documentación oficial de Ray, las mejores prácticas de seguridad comienzan con lo siguiente:
«… La seguridad y el aislamiento deben aplicarse fuera del clúster de Ray. Ray espera ejecutarse en un entorno de red seguro …»
Ray incluye capacidades de ejecución de código por diseño, por lo que Anyscale cree que los usuarios deben ser responsables de su localización y seguridad. El panel de control no debería estar orientado a Internet, o debería ser accesible sólo a personas de confianza. Ray carece de autorización basándose en la suposición de que se ejecutará en un entorno seguro con una lógica de enrutamiento adecuada: Aislamiento de red, espacios de nombres de Kubernetes, reglas de cortafuegos o grupos de seguridad.
¿Tienen algo en común los clusters atacados? Si, la minera de criptomonedas
La mayoría de los clusters que el equipo de Oligo Research ha identificado y denunciado ejecutan campañas de minería de criptomonedas que aprovechan ShadowRay para hackear organizaciones e instalar mineros de criptomonedas de diferentes tipos.
¿Cómo evitar estos ataques en tus servidores?
En Azure sigue las mejores prácticas para asegurar la implementación de Ray:
- Empieza ejecutando Ray en un entorno seguro y de confianza.
- Añade siempre reglas de cortafuegos o grupos de seguridad para evitar accesos no autorizados.
Añade autorización sobre el puerto del Dashboard de Ray (8265 por defecto):
- Si necesitas que el panel de control de Ray sea accesible, implementa un proxy que añada una capa de autorización a la API de Ray cuando se exponga a través de la red.
Supervisa continuamente sus entornos de producción y clústeres de IA en busca de anomalías, incluso dentro de Ray.
- Ray depende de la ejecución de código arbitrario para funcionar. Las herramientas de escaneo de código y desconfiguración no podrán detectar este tipo de ataques, ya que los mantenedores de código abierto de Ray (Anyscale) lo marcaron como disputado y confirmaron que no se trata de un error; en el momento de escribir esto, se trata de una característica.
- No hagas bind en 0.0.0.0 para facilitarte la vida – Se recomienda usar una IP de una interfaz de red explícita, como la IP que está en la subred de tu red local o una VPC/VPN privada de confianza.
- No confíes en el valor por defecto – A veces las herramientas asumen que lees su documentación. Házlo. Siempre.
Información basada en la siguiente información de Oligo «ShadowRay: First Known Attack Campaign Targeting AI Workloads Actively Exploited In The Wild«, «Update on Ray CVEs CVE-2023-6019, CVE-2023-6020, CVE-2023-6021, CVE-2023-48022, CVE-2023-48023 (anyscale.com)» y «NVD – CVE-2023-48022 (nist.gov)«.