volvervolver

Rayshadow - Vulnerabilidad para framework AI

Para el fin del 2023, se revelaron cinco vulnerabilidades únicas en “Ray”, un framework open-source utilizado principalmente en cargas de trabajo de tipo IA.

Tras la noticia, Anyscale (desarrolladores de Ray) publicó detalles en su blog para abordar las vulnerabilidades, aclarar la cadena de eventos y detallar cómo se abordó cada CVE. Mientras que cuatro de las vulnerabilidades reportadas se corrigieron en una versión posterior de Ray (2.8.1), el quinto CVE (CVE-2023-48022) sigue en disputa, esto significa que no se consideró un riesgo y no se ha abordado con una solución inmediata.

Debido a esto, muchos equipos de desarrollo (y la mayoría de las herramientas de escaneo estático) no son conscientes de los riesgos de esta vulnerabilidad. Alguno podría haber pasado por alto esta sección de documentación de Ray, y no estar al tanto de esta característica.

Como ocurre en este tipo de casos, se han encontrado miles de servidores expuestos públicamente en todo el mundo que presentan esta vulnerabilidad, apodada ShadowRay. Algunas de las máquinas afectadas han estado comprometidas durante al menos 7 meses. Muchas de las máquinas incluían historial de comandos, lo que facilitaba a los atacantes entender lo que reside en la máquina actual y filtrar secretos sensibles de producción que se utilizaron en comandos anteriores.

Definiendo a Ray

Ray es un marco de trabajo unificado para escalar aplicaciones de IA y Python para una variedad de propósitos. En términos simples, consiste en un motor de ejecución conocido como “Ray Core” y un conjunto de bibliotecas de AI complementarias.

Al día de hoy el proyecto de Ray en Github tiene 30 mil estrellas y según Anyscale, algunas de las organizaciones más grandes del mundo lo utilizan en producción, incluidas Uber, Amazon y OpenAI.

Ray como parte del entrenamiento de los modelos de ChatGPT


Muchos proyectos dependen de Ray para cargas de trabajo convencionales de SaaS, datos e IA, aprovechando el proyecto por sus altos niveles de escalabilidad, velocidad y eficiencia.

Anyscale mantiene el proyecto, que sirve como base para numerosas bibliotecas, incluyendo Ray Tune, Ray Serve y más.

Algunas organizaciones que utilizan ray (Fuente: ray.io)


El valor de la infraestructura de IA

Un entorno típico de IA contiene una cantidad abundante de información sensible, suficiente para derribar a una organización. Un entorno de ML-OPS (Machine Learning Operations) consiste en muchos servicios que se comunican entre sí, dentro del mismo clúster y entre clústeres. Cuando se utiliza para entrenamiento o ajuste fino, generalmente tiene acceso a conjuntos de datos y modelos, en disco o en almacenamiento remoto, como un contenedor de S3. A menudo, los modelos o conjuntos de datos son la propiedad intelectual única y privada que diferencia a una organización de sus competidores.

Además, los entornos de IA típicamente cuentan con acceso a tokens de terceros e integraciones de muchos tipos (HuggingFace, OpenAI, WanDB y otros proveedores de SaaS). Los modelos de IA ahora están conectados a bases de datos de la empresa y grafos de conocimiento. La infraestructura de IA puede ser un único punto de fallo para las empresas impulsadas por IA, y un tesoro oculto para los atacantes.

Y por si fuera poco, los modelos de IA típicamente se ejecutan en máquinas costosas y de alta potencia, lo que hace que sea un gran objetivo para los atacantes.

Uso de Ray

Modelos como GPT-4 comprenden miles de millones de parámetros, y requieren una masiva potencia de cómputo. Estos modelos no pueden simplemente cargarse en la memoria de una máquina. Ray es la tecnología que permite que estos modelos se ejecuten. Ray se convirtió en una especie de mejor práctica en la industria, especialmente para los practicantes de IA, quienes son proficientes en Python y a menudo requieren que los modelos se ejecuten y se distribuyan entre múltiples GPUs y máquinas.

Algunas capacidades de Ray son:

 • Permite cargas de trabajo distribuidas para entrenamiento, servicio y ajuste de modelos de IA de todas las arquitecturas y marcos.

 • Requiere muy baja competencia en Python. Tiene una API de Python sencilla con mínima configuración.

 • Es sólido y utiliza buenas prácticas para optimizar el rendimiento, con una instalación robusta y sin esfuerzo, pocas dependencias y código probado en batalla y de grado de producción.

 • Va más allá de Python, permitiéndote ejecutar trabajos de cualquier tipo, incluidos comandos bash.

 • Es la navaja suiza para los desarrolladores y practicantes de IA, permitiéndoles escalar sus aplicaciones sin esfuerzo.

CVE-2023-48022: ShadowRay

Ray expone su panel de administración y siempre se vincula en 0.0.0.0 (todas las interfaces de red), junto con el reenvío de puerto en 0.0.0.0, posiblemente exponiendo la máquina a Internet por defecto.

Además, no se incluye ningún tipo de autorización en su API. El resultado es que cualquier persona con acceso a la red que pueda llegar al panel de control (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 la aislación deben ser impuestas fuera del Clúster de Ray. Ray espera funcionar en un entorno de red seguro y actuar sobre código de confianza. Los desarrolladores y proveedores de plataformas deben mantener los siguientes invariantes para asegurar la operación segura de los Clústeres de Ray ..."

Se incluyen capacidades de ejecución de código por diseño, Anyscale cree que los usuarios deberían ser responsables de su seguridad. El panel de control no debería estar expuesto a Internet, o solo debería ser accesible para partes de confianza. Ray carece de autorización basada en la suposición de que funcionará en un entorno seguro con lógica de enrutamiento adecuada: aislamiento de red, espacios de nombres de Kubernetes, reglas de firewall o grupos de seguridad.

El problema se pone más complejo cuando desarrolladores terceros no están en conocimiento de estas debilidades, por ejemplo la guía oficial de despliegue de Ray en Kubernetes y el operador de Kubernetes de Kuberay proponen a los equipos a exponer el panel de control en 0.0.0.0:

Captura de documentación de kubernetes para Ray


Impacto de ShadowRay

Un entorno productivo de IA comprometido, puede significar que un atacante afecte la integridad o precisión de todo un modelo de IA, robar modelos o infectar modelos durante la fase de entrenamiento.

Las organizaciones afectadas provienen de muchas industrias, incluyendo compañías médicas, compañías de análisis de video, instituciones educativas de élite y muchas más. Una gran cantidad de información sensible ha sido filtrada a través de los servidores comprometidos, por ejemplo variables de entorno sensibles, credenciales de OpenAI, Stripe, Slack y bases de datos.

Ejemplo de exposición de datos sensibles


Conclusiones

Típicamente, los expertos en IA, no son expertos en seguridad, esto nos deja potencialmente inconscientes de los riesgos reales que presentan los frameworks de IA.

Sin autorización, la API puede estar expuesta a ataques de ejecución de código remoto cuando no se siguen las mejores prácticas. El CVE está etiquetado como "disputado". En estos casos, el Programa CVE no hace ninguna determinación sobre qué parte es correcta.



Las etiquetas “disputadas” hacen que este tipo de vulnerabilidad sea difícil de detectar, con muchos escáneres simplemente ignorando CVEs disputados. Los usuarios pueden no ser conscientes del riesgo, incluso con las soluciones más avanzadas disponibles en el mercado.

Según Anyscale, este problema no constituye una vulnerabilidad, sino que es, por el contrario, una característica esencial para el diseño de Ray, habilitando la activación de trabajos y la ejecución de código dinámico dentro de un clúster. Aunque una característica de autorización es reconocida como una deuda técnica que será abordada en una versión futura, su implementación es compleja y puede introducir cambios significativos. Por lo tanto, Anyscale decidió posponer su adición y disputó el CVE-2023-48022.

Este enfoque refleja el compromiso de Anyscale de mantener la funcionalidad de Ray mientras prioriza mejoras de seguridad. Esta decisión también subraya la complejidad de equilibrar seguridad y usabilidad en el desarrollo de software, destacando la importancia de la consideración cuidadosa al implementar cambios en sistemas críticos como Ray y otros componentes de código abierto con acceso a la red.