Seguridad

Fallo en el framework Llama Stack de Meta expone sistemas de IA a riesgos de ejecución remota de código

Se ha descubierto un fallo de seguridad de alta gravedad en Llama Stack, un framework de Meta que define un conjunto de interfaces API para el desarrollo de aplicaciones con inteligencia artificial (IA) y permite usar los modelos Llama de Meta.

La vulnerabilidad podría permitir a un atacante ejecutar código arbitrario en el servidor de inferencia de Llama Stack a través de la deserialización de datos no confiables.

Específicamente, la API de inferencias para Python que ofrece Llama Stack contiene un método, run_inference, que utiliza el método recv_pyobj para recibir desde un socket un objeto de Python serializado y deserializarlo automáticamente utilizando el módulo pickle de Python. El formato pickle puede ejecutar cualquier código durante el proceso de deserialización. Esto lo hace inherentemente inseguro, ya que si el socket está expuesto en la red, un atacante puede construir objetos con código malicioso y enviarlos a través del socket, efectivamente logrando la ejecución de código remoto (RCE) en la máquina afectada.

Método vulnerable de Llama Stack. Fuente: Oligo Security.

Llama Stack utiliza pyzmq, una implementación de la librería de mensajería ZeroMQ para Python. El método recv_pyobj fue añadido al código de pyzmq en un commit de agosto de 2016, el cual recibe datos del socket y los deserializa utilizando la función pickle.loads.

El mantenedor de pyzmq afirma que este uso del método recv_pyobj es, de hecho, inseguro, y que «no debería usarse excepto para fuentes confiables, al igual que el propio pickle. La elección de ejecutarlo en un socket abierto no es una elección de pyzmq, ¡pero parece que meta-llama hizo una elección insegura!».

La vulnerabilidad ha sido registrada con el CVE-2024-50050. Meta le ha asignado una puntuación de 6,3 sobre 10 (CVSS v3.1), mientras que la agencia de seguridad de la cadena de suministro de software Snyk le ha asignado puntuaciones de 9,3 (CVSS v4.0) y 9,8 (CVSS v3.1).

Los equipos de seguridad de Meta han corregido rápidamente la vulnerabilidad en la versión 0.0.41. Según un aviso emitido por Meta, la corrección ha sido cambiar el formato de serialización usado para la comunicación con el socket a JSON. También se ha remediado en la librería pyzmq, actualizando la documentación y los ejemplos para mostrar el uso correcto de recv_pyobj.

Este no es el único caso de vulnerabilidades producidas debido al uso librerías de deserialización en frameworks de IA. Por ejemplo, en agosto de 2024, Oligo detalló una «vulnerabilidad en la sombra» en Keras (TensorFlow); un bypass del ya resuelto CVE-2024-3660 (CVSS v3.1: 9,8) que podría dar lugar a la ejecución de código arbitrario debido al uso del módulo inseguro marshal.

Más información:

La entrada Fallo en el framework Llama Stack de Meta expone sistemas de IA a riesgos de ejecución remota de código se publicó primero en Una Al Día.

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.