Definición del producto: Picklescan es una herramienta de seguridad diseñada para analizar archivos pickle de Python en busca de código malicioso antes de que sean deserializados. Se utiliza ampliamente en entornos de Aprendizaje Automático (ML) y MLOps para mitigar el riesgo de Ejecución Remota de Código (RCE) al cargar modelos o datos de fuentes no confiables. Su función principal es actuar como una barrera de seguridad dentro de la cadena de suministro de ML.
Perfil de riesgo: Esta vulnerabilidad permite eludir por completo las funcionalidades de escaneo de la herramienta, lo que conlleva un riesgo elevado de Ejecución Remota de Código no autenticada. Un atacante puede crear un archivo malicioso que una versión vulnerable de Picklescan clasificará erróneamente como seguro. Cualquier aplicación posterior que confíe en este resultado y cargue el archivo será comprometida. La vulnerabilidad compromete la principal garantía de seguridad de la herramienta.
Inteligencia de amenazas: Existe un exploit de prueba de concepto (PoC) público. Sin embargo, actualmente no se conocen casos de explotación activa de esta vulnerabilidad. No figura en el catálogo de Vulnerabilidades Explotadas Conocidas (KEV) de CISA.
Superficie de exposición: Las organizaciones están en riesgo si utilizan versiones de Picklescan hasta la 0.0.30 inclusive en flujos de trabajo automatizados, como tuberías CI/CD para la validación de modelos o plataformas públicas de ingesta de modelos. También están expuestos los desarrolladores individuales y científicos de datos que confían en la herramienta para verificar modelos de terceros.
| Producto | picklescan |
| Fecha | 2025-12-04 12:14:50 |
Resumen técnico
Análisis de la causa raíz: La vulnerabilidad es un problema de CWE-20: Validación inadecuada de entrada en la lógica de análisis de archivos. Picklescan modifica el nivel de severidad del escaneo basándose en la extensión del archivo. Cuando encuentra un archivo con una extensión asociada a PyTorch (ej. .pt, .pth), no realiza una inspección profunda en busca de opcodes pickle peligrosos. Esto permite que un payload pickle malicioso estándar, que normalmente sería detectado, eluda completamente el análisis si se encapsula en un archivo con una de estas extensiones.
Cadena de ataque paso a paso:
- Creación del payload: Un atacante crea un payload malicioso utilizando técnicas estándar de serialización pickle de Python. Esto implica típicamente el uso del método
__reduce__para llamar a una función peligrosa, comoos.systemosubprocess.run. - Evasión: El atacante guarda el archivo pickle malicioso con una extensión asociada a PyTorch, por ejemplo
malicious_model.pt. - Bypass del escaneo: La versión vulnerable de Picklescan se invoca para analizar
malicious_model.pt. Debido a la lógica de validación inadecuada vinculada a la extensión.pt, la herramienta no identifica los opcodes peligrosos y marca el archivo como seguro. - Ejecución: Una aplicación o desarrollador posterior, confiando en el resultado del escaneo, carga el archivo utilizando una función estándar como
pickle.load(). El proceso de deserialización ejecuta el payload incorporado, activando la Ejecución Remota de Código en el sistema anfitrión con los privilegios de la aplicación.
Lógica conceptual del código:
El siguiente ejemplo ilustra el patrón peligroso, pero no es un exploit directo. La vulnerabilidad reside en que Picklescan no logra detectar tales estructuras en archivos .pt.
# Ejemplo conceptual de un objeto Pickle malicioso
# Un atacante inserta esta estructura en un archivo .pt para eludir el escáner.
# Este código es solo para fines ilustrativos.
import os
class Exploit:
def __reduce__(self):
# Esta función se llama automáticamente durante la deserialización.
# Un atacante insertaría un comando para ejecutar en el sistema objetivo.
cmd = ("echo 'Ejecución de código lograda' > /tmp/pwned")
return (os.system, (cmd,))
# Cuando un programa llama a pickle.load() en un archivo que contiene este objeto serializado,
# se ejecuta os.system(cmd).
Versiones afectadas:
- Vulnerables: Versiones de Picklescan hasta la 0.0.30 inclusive.
- Corregidas: La corrección está disponible a partir de la versión 0.0.31 de Picklescan.
Recomendaciones
- Actualización inmediata: Actualizar la herramienta
mmaitre314/picklescana la versión 0.0.31 o superior para aplicar el parche de seguridad. - Mitigaciones:
- Si no es posible aplicar el parche de inmediato, reconfigurar los flujos de seguridad para rechazar todos los archivos con extensión
.pto.pth, o tratarlos como intrínsecamente inseguros independientemente del resultado del escaneo. - Cambiar a formatos de serialización de modelos más seguros que no impliquen riesgos de ejecución, como
safetensors.
- Si no es posible aplicar el parche de inmediato, reconfigurar los flujos de seguridad para rechazar todos los archivos con extensión
- Búsqueda y monitoreo:
- Escanear retroactivamente todos los archivos
.pty.pthexistentes en los repositorios de modelos utilizando la versión actualizada de Picklescan, para detectar modelos maliciosos previamente no detectados. - Monitorear los registros de las aplicaciones que deserializan archivos de modelos. Buscar procesos hijos anómalos lanzados (ej.
sh,bash,curl,powershell) desde el proceso de la aplicación. - Revisar los registros de red en busca de conexiones salientes sospechosas provenientes de los hosts encargados de la carga e inferencia de modelos.
- Escanear retroactivamente todos los archivos
- Respuesta a incidentes:
- Si se sospecha de un compromiso, aislar inmediatamente el host afectado de la red para impedir movimientos laterales.
- Conservar el archivo de modelo sospechoso y los registros de aplicación/sistema pertinentes para el análisis forense.
- Asumir que todas las credenciales, claves y datos sensibles accesibles desde el host comprometido han sido exfiltrados e iniciar los procedimientos de rotación e invalidación.
- Defensa en profundidad:
- Realizar la carga de modelos y el procesamiento de datos en entornos sandbox o contenerizados con privilegios mínimos y sin acceso a la red.
- Implementar una segmentación de red estricta para garantizar que, incluso en caso de RCE, el radio de acción del atacante esté contenido.
[Callforaction-THREAT-Footer]