CVE-2026-80104, una vulnerabilidad de 9.8 de gravedad de path traversal y escritura arbitraria de archivos en el framework de aplicaciones de IA DB-GPT, señala a v0.8.1 como la versión que la corrige. Eso es cierto y, a la vez, peligrosamente incompleto: v0.8.1 es la única versión publicada que contiene la corrección.
Qué comprobamos y cómo
La protección es una función llamada _validate_upload_filename, añadida el 21 de mayo de 2026, que rechaza bytes nulos, rutas POSIX y Windows absolutas, y cualquier nombre de archivo que contenga más de un componente de ruta. Descargamos el archivo de código correspondiente en la etiqueta v0.8.1 y en la etiqueta v0.8.2 y los comparamos. En v0.8.1 la función está presente. En v0.8.2, publicada esta mañana, ha desaparecido, y el controlador lee filename = file.filename directamente antes de unirlo al directorio de carga y escribir los bytes. Sin canonicalización, sin comprobación de contención.
Cómo desaparece una corrección
La pérdida se remonta a una rama de características cortada antes de que la corrección aterrizara. Cuando esa rama se fusionó en junio, su versión del archivo —anterior al 21 de mayo— sustituyó a la parcheada. No se revirtió nada de forma deliberada; la protección fue simplemente sobrescrita por una copia más antigua de la misma función, razón por la que no hay ninguna entrada en el changelog que la registre.
Qué falla en el enfoque habitual
El campo de una advisory que indica la "versión corregida" se interpreta universalmente como "esta versión y todo lo que venga después". Eso es lo que asumen los escáneres, lo que activan los bots de dependencias y lo que concluye un operador. Aquí, el campo es un punto, no un umbral: un equipo que lea el aviso y actualice a la versión más reciente hace exactamente lo contrario de lo que pretende y acaba en código vulnerable creyendo que ya está remediado. El aviso no es incorrecto; se está leyendo con una suposición que no se cumple.
La autenticación lo empeora
La única dependencia de la ruta de carga es una función cuyo código lleva el comentario "Mock User Info" y que devuelve un objeto de usuario con role="admin" tanto si se proporciona un encabezado de usuario como si no. Ambas ramas son admin. Ese es el código publicado actual, no una etiqueta abandonada, así que el primitivo de escritura de archivos es accesible sin autenticación.
