La vía de entrada es el control de volumen

Una vulnerabilidad crítica en el robot cuadrúpedo Go2 de Unitree se publicó el 24 de octubre en la Base Nacional de Vulnerabilidades de Estados Unidos. El fallo no está en el control de movimiento del robot, ni en sus cámaras, ni en su pila de red. Está en set_volume, una función de un archivo llamado gpt_thread.py, dentro del componente que Unitree denomina chat_go: el asistente conversacional del robot.

Según la entrada del NVD, manipular el argumento Value de esa función “conduce a inyección de comandos del sistema operativo”. La debilidad se clasifica como CWE-78, neutralización incorrecta de elementos especiales usados en un comando del sistema operativo: la cifra de volumen llega a un lugar que la trata como una orden de consola y no como un número.

La entrada indica que el ataque “puede lanzarse de forma remota”.

Las puntuaciones

El fallo lleva tres puntuaciones de gravedad, todas en lo alto de sus escalas o cerca. Bajo CVSS 3.1 se valora en 9,6, crítica, con el vector AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H. Bajo el más reciente CVSS 4.0 se valora en 9,4, también crítica. Bajo el ya superado CVSS 2.0 es un 10,0 redondo.

Primer plano del cono y la suspensión del altavoz de un bafle
El punto de inyección es el argumento Value de una función que ajusta el volumen del robot. Fotografía de archivo ilustrativa. Alexey Demidov · pexels · Pexels License

Dos partes del vector 3.1 cargan con casi todo el peso. PR:N significa que no se requieren privilegios. S:C significa que el alcance cambia: el componente explotado y el componente afectado no son el mismo, lo que en un robot implica que el proceso de chat no es donde se detiene el daño. El único elemento atenuante es UI:R: se requiere interacción del usuario, que CVSS 4.0 registra como UI:P, interacción pasiva.

Versiones y solución

El registro del NVD cubre el firmware del Unitree Go2 “hasta la 1.1.11.4”. La versión 1.1.11.5 lo resuelve, y la entrada lo dice sin rodeos: “Actualizar a la versión 1.1.11.5 es suficiente para resolver este problema. Debe actualizar el componente afectado.”

El paquete de firmware referenciado lleva el nombre de las variantes Edu, Max, Pro y X del Go2, y se sirve desde un almacén de objetos de Alibaba Cloud.

El fabricante lo confirmó, con número de ticket

De forma poco habitual en una entrada de base de datos, la descripción del NVD cita al fabricante directamente. “El fabricante confirmó pronto”, dice, antes de citar: “El envío 990502 corresponde a nuestro ticket interno #474 (inyección de comandos del sistema operativo en set_volume de chat_go del Go2, CWE-78).”

Es un fabricante nombrando su propio ticket interno, el componente, la función y la clase de debilidad en una sola frase. Es un reconocimiento más completo del que dan la mayoría de los fabricantes de hardware, y elimina cualquier ambigüedad sobre si el hallazgo fue disputado. El registro coordinador lo mantiene VulDB como entrada 426093, bajo el envío 990502.

Cables ethernet conectados a los puertos de un conmutador de red
La entrada del NVD indica que el ataque puede lanzarse remotamente y no requiere privilegios. Fotografía de archivo ilustrativa. Vladimir Srajber · pexels · Pexels License

Por qué esta clase de fallo reaparece

El Go2 se vende en configuraciones educativas y de investigación, que es como un cuadrúpedo de uso científico acaba en redes universitarias y en laboratorios de empresa en lugar de tras un cortafuegos industrial. La función de chat es la parte con más probabilidades de estar expuesta, porque ser alcanzable es precisamente su propósito.

El patrón de fondo es más antiguo que el robot. Una interfaz de lenguaje natural tiene que convertir lo que se le dice en parámetros para el sistema que tiene debajo, y cada parámetro que llega a una consola sin neutralizar es una inyección de comandos esperando a ser encontrada. Un ajuste de volumen es de los parámetros de menor riesgo aparente, lo que presumiblemente explica que no se tratara como entrada peligrosa.

Qué vigilar

No hay pruebas públicas en el registro de que el fallo haya sido explotado, y la corrección es una actualización de firmware que ya existe. La cuestión es cuántas unidades Go2 desplegadas la aplican. Los robots en laboratorios docentes se actualizan según el calendario de quien dirige el laboratorio, no de un gestor de flota, y un robot que funciona es un robot que nadie quiere desconectar.

También merece atención si las integraciones de asistente de otros fabricantes reciben el mismo escrutinio. chat_go es una capa conversacional fina atornillada a una máquina que se mueve, y esa misma arquitectura está ya en muchísimos dispositivos.