CVE-2025-10155: omisión de seguridad en picklescan por clasificación errónea de la extensión del archivo que permite la ejecución arbitraria de código

El software picklescan es una popular herramienta de código abierto diseñada para detectar vulnerabilidades de seguridad en modelos de machine learning (ML) guardados en formato pickle. Es ampliamente utilizado en tuberías (pipelines) de MLOps y por equipos de ciencia de datos para verificar modelos provenientes de fuentes no confiables, previniendo ataques que explotan la deserialización de datos maliciosos. Las aplicaciones críticas para el negocio, incluidos los servicios en producción y los análisis basados en IA, confían en este escaneo para protegerse contra ataques a la cadena de suministro que tienen como objetivo los artefactos de ML.

El impacto de esta vulnerabilidad es alto, ya que permite omitir por completo los controles de seguridad del escáner, lo que resulta en la posibilidad de una ejecución remota de código no autenticado. Un atacante puede camuflar un archivo pickle malicioso como un modelo de PyTorch seguro, engañando al escáner. Cuando una aplicación posterior carga el modelo “verificado”, el código del atacante se ejecuta en el sistema anfitrión. Esta vulnerabilidad afecta a cualquier organización que utilice picklescan en sus tuberías de ML para analizar modelos provenientes de repositorios externos o no confiables. Aunque actualmente no hay informes confirmados de explotación activa, existe un exploit público y la complejidad del ataque es baja, lo que indica una alta probabilidad de explotación futura.

Productopicklescan
Fecha2025-12-05 00:36:43

Resumen técnico

La vulnerabilidad es un defecto de tipo CWE-20: Improper Input Validation (Validación de entrada incorrecta) en la lógica de identificación del tipo de archivo de picklescan. El escáner asigna erróneamente prioridad a la extensión del archivo sobre el análisis del contenido para determinar su tipo, permitiendo que un atacante eluda los controles de seguridad.

Análisis técnico:

  1. Camuflaje del archivo: Un atacante crea un archivo pickle estándar pero malicioso que contiene opcodes peligrosos diseñados para ejecutar comandos arbitrarios (ej. utilizando __reduce__ con os.system).
  2. Evasión mediante extensión: El atacante guarda el payload pickle malicioso con una extensión típica de PyTorch, como .pt o .pth.
  3. Identificación errónea: Cuando picklescan analiza el archivo, su lógica comprueba primero la extensión. Identifica erróneamente el archivo como un modelo de PyTorch “seguro”, un tipo de archivo exento del escaneo estándar de opcodes pickle.
  4. Escaneo omitido: Dado que el archivo está clasificado incorrectamente, picklescan omite el escaneo de seguridad necesario que, de otro modo, habría detectado los opcodes maliciosos presentes en el archivo. Por lo tanto, informa que el archivo es seguro.
  5. Ejecución de código: Una aplicación posterior o un ingeniero de ML, confiando en el resultado del escaneo, carga el archivo malicioso utilizando una biblioteca estándar de deserialización como pickle.load(). Esta acción activa la ejecución del payload incorporado, lo que lleva a la ejecución arbitraria de código con los permisos del usuario que ejecuta la aplicación.

Versiones afectadas:

  • Vulnerables: versiones de picklescan hasta la 0.0.30 inclusive.
  • Corregidas: se ha lanzado una corrección en las versiones posteriores. Los usuarios deben actualizar a la última versión disponible.

Recomendaciones

  • Aplicar el parche inmediatamente: actualizar picklescan a la última versión disponible, que contiene la corrección para esta vulnerabilidad. Asegurarse de que todas las instancias dentro de las tuberías de MLOps y de seguridad estén actualizadas.
  • Mitigaciones:
    • Si no es posible aplicar el parche inmediatamente, trate todos los resultados de escaneos provenientes de versiones vulnerables de picklescan con extrema precaución, especialmente para archivos con extensiones de PyTorch provenientes de fuentes no confiables.
    • Implementar aislamiento (sandboxing) para todos los entornos de inferencia y análisis de modelos. Utilizar tecnologías como contenedores (ej. Docker) o micro-VM para aislar el proceso de carga del modelo del sistema anfitrión y de la red más amplia.

  • Caza y monitoreo:

    • Realizar una auditoría de los registros (logs) históricos de escaneo para identificar todos los archivos con extensiones .pt o .pth procesados por versiones vulnerables de picklescan.
    • Examinar los registros del sistema y de la aplicación en los servidores dedicados a la carga de modelos en busca de actividad sospechosa, como conexiones de red inesperadas o procesos hijos iniciados por la aplicación responsable de la deserialización.
    • Monitorear eventos de escritura o modificación en archivos con extensiones como .pt y .pth en directorios inusuales.

  • Respuesta a incidentes:

    • Si se sospecha de una vulneración, aislar inmediatamente el host afectado de la red para prevenir movimientos laterales.
    • Conservar el archivo del modelo malicioso y los registros del sistema para un análisis forense.
    • Asumir que todos los datos o credenciales accesibles por el proceso comprometido han sido exfiltrados.

  • Defensa en profundidad:

    • Aplicar el principio de menor privilegio. Ejecutar las aplicaciones de carga de modelos con los permisos mínimos necesarios para su función.
    • Implementar la segmentación de red para limitar las conexiones salientes desde los servidores que procesan modelos de ML, reduciendo la posibilidad de que un atacante exfiltre datos o establezca un canal de comando y control.

[Callforaction-THREAT-Footer]