Vulnerabilidad en modelo de aprendizaje automático asociado a Hugging Face

27 Febrero 2024
Informativo




Una nueva campaña de malware ha sido detectada en la cadena de suministros del servicio de conversión de  Hugging Face Safetensors.

La nueva campaña busca comprometer modelos de aprendizaje automático a través del envío de solicitudes de extracción maliciosas con datos controlados por atacantes desde el propio modelo, en este caso desde el modelo usado por el  servicio Hugging Face, poniendo en evidencia un ataque a la cadena de suministro usada en modelos de aprendizaje automático.

El propósito principal  de la campaña de malware corresponde, a la obtención del acceso a cualquier repositorio de la plataforma del modelo de  Hugging Face Safetensors y la manipulación de la salida del modelo de ML sin que el usuario lo detecte, permitiendo a los actores de amenaza secuestrar cualquier modelo de conversión detectado en dicha plataforma. 
 

¿Qué es Hugging Face Safetensors?

Hugging Face Safetensors es una herramienta usada generalmente por profesionales del aprendizaje automático, que permite almacenar y distribuir tensores (matrices multidimensionales de datos utilizados comúnmente en el aprendizaje automático o modelos ML). 


Ilustración 1: Muestra cantidad de modelos cargados en la plataforma Hugging Face
Fuente: https://huggingface.co/models


Hasta el momento de éste informe, Hugging Face cuenta con una comunidad sólida que hasta la fecha ha subido a la plataforma más de 500.000 modelos previamente entrenados para compartir con la comunidad de código abierto.


Aplicaciones de Hugging Face Safetensors:

  • Compartir y distribuir modelos de aprendizaje automático preentrenados, especialmente en plataformas como Hugging Face Hub.
  • Guardar y cargar el peso total de los modelos durante los procesos de entrenamiento e inferencia.

 

Vector de Ataque

De acuerdo a los investigadores de Hiddenlayer, el vector de ataque reside en funciones específicas de la librería PyTorch, para este caso particular la ejecución de la función torch[.]load(), que permite cargar un objeto de tensor que ha sido guardado previamente en un archivo a través del uso de un un script de Python que se utiliza para convertir modelos de aprendizaje automático de un formato a otro. Generalmente el script se encuentra con el nombre de convert[.]py, y es  normalmente usado para convertir modelos a un formato que pueda ser cargado por una biblioteca de aprendizaje automático específica, como PyTorch.

De acuerdo a los investigadores el uso de la función torch[.]load(), permite a los actores de amenaza la ejecución de código arbitrario si se almacena código malicioso dentro de data[.]pkl en el modelo PyTorch, que corresponde al binario serializado en formato Pickle usado también por  Hugging Face en su robot para la serialización de los modelos de aprendizaje cargados en la plataforma. 

Es exactamente en la conversión usada por el robot de Hugging Face, para serializar  los tensores o modelos; que los actores de amenaza aprovechan para manipular un modelo Pythorch previamente generado con un carga útil usando setattr, que les permitirá crear una solicitud de extracción del modelo desde el robot de conversión de Hugging Face,  dándoles la capacidad de comprometer el sistema en el que estaba alojado dicho robot.  

Según lo anterior los investigadores desarrollaron una prueba de concepto (POC) que permitirá exponer la vulnerabilidad en la conversión de los modelos desde el robot de conversión de la plataforma Hugging Face. Para más información referente a la POC ingrese al siguiente enlace, considerando que la prueba de los POC deben efectuarse en ambientes controlados y bajo su propia responsabilidad:


Consideraciones especiales con el uso de modelos de aprendizaje automático:

Existen varias técnicas para escanear un modelo de aprendizaje automático en busca de contenido malicioso:

  • 1. Análisis estático:
    • Inspeccionar el código fuente del modelo: Buscar código sospechoso, como llamadas a funciones no estándar o código que modifica el comportamiento del modelo de forma inesperada.
    • Analizar el archivo binario del modelo: Buscar patrones que coincidan con malware conocido o código malicioso.
    • Utilizar herramientas de análisis de código estático: Existen herramientas que pueden automatizar el análisis del código fuente o binario del modelo en busca de vulnerabilidades y código malicioso.
  • 2. Análisis dinámico:
    • Ejecutar el modelo en un entorno seguro: Ejecutar el modelo en un entorno aislado y monitorizar su comportamiento para detectar actividades sospechosas.
    • Utilizar herramientas de fuzzing: Las herramientas de fuzzing pueden generar entradas aleatorias para el modelo y monitorizar su comportamiento para detectar errores o comportamientos inesperados.
    • Utilizar herramientas de análisis de comportamiento: Existen herramientas que pueden monitorear el comportamiento del modelo durante su ejecución y detectar patrones que coincidan con malware conocido o código malicioso.
  • 3. Escaneado de malware:
    • Utilizar herramientas antivirus: Escanear el archivo binario del modelo con un antivirus para detectar malware conocido.
    • Utilizar herramientas de análisis de malware: Existen herramientas que pueden analizar el archivo binario del modelo en busca de características que coincidan con malware conocido.

Es importante tener en cuenta que ninguna de estas técnicas es 100% efectiva para detectar contenido malicioso en un modelo de aprendizaje automático. Sin embargo, al combinar varias técnicas, se puede aumentar la probabilidad de detectar contenido malicioso.


Apreciación

La vulnerabilidad expuesta en la investigación puede ser considerada como una vulnerabilidad grave ya que su impacto se extiende a toda la comunidad de Hugging Face y por lo tanto es considerado como un ataque a la cadena de suministros que afecta en gran medida a los repositorios de los modelos alojados en la plataforma Hugging Face de sus usuarios.

Cabe destacar que los modelos de aprendizaje automático son código y por lo tanto susceptibles a ser manipulados por actores de amenazas si encuentran la oportunidad de hacerse de ellos, tal premisa, alude a tener precaución con el uso de modelos de aprendizaje de código abierto, tomando las consideraciones pertinentes de seguridad en el uso y la ejecución de los mismos, ya que pueden permitirle reducir la brecha de seguridad que pueda ser aprovechada por los actores de amenaza.

 

A continuación se presentan algunas medidas mitigatorias que se pueden seguir para protegerse de esta vulnerabilidad:

  • Si es usuario regular del servicio de Desactivar el servicio de conversión:
    • Hugging Face ha desactivado temporalmente el servicio de conversión de forma nativa.
    • Los usuarios que necesiten convertir modelos de PyTorch a Safetensors pueden hacerlo manualmente utilizando la biblioteca Safetensors.
  • Revisar los repositorios:
    • Se recomienda a los usuarios que revisen sus repositorios en busca de solicitudes de extracción maliciosas.
    • Las solicitudes de extracción que parecen sospechosas deben ser eliminadas.
  • Actualizar los modelos:
    • Hugging Face ha publicado una actualización de la biblioteca Safetensors que corrige la vulnerabilidad.
    • Se recomienda a los usuarios que actualicen sus modelos a la última versión de la biblioteca Safetensors.
  • Utilizar herramientas de seguridad:
    • Se recomienda a los usuarios que utilicen herramientas de seguridad para escanear sus modelos en busca de contenido malicioso.
    • Existen varias herramientas disponibles que pueden ayudar a detectar malware y código malicioso en modelos de aprendizaje automático.
  • Mantenerse informado:
    • Se recomienda a los usuarios que se mantengan informados sobre las últimas vulnerabilidades de seguridad en el ecosistema de aprendizaje automático.
    • Hugging Face ha publicado un aviso de seguridad que contiene más información sobre la vulnerabilidad y las medidas mitigatorias.
      • https://huggingface.co/docs/hub/en/security
         

Además de las medidas mitigatorias mencionadas anteriormente, también es importante tener en cuenta las siguientes recomendaciones:
 

  • No descargar ni utilizar modelos de fuentes no confiables.
  • Utilizar contraseñas seguras y autenticación de dos factores para proteger sus cuentas de Hugging Face.
  • Mantener su software actualizado, incluyendo el sistema operativo, la biblioteca PyTorch y la biblioteca Safetensors.

Tags: #Vulnerabilidad #PyTorch #Safetensors #ML #Modelo de aprendizaje automático


© 2023 Entel Digital
Protege tus activos críticos, datos e infraestructura TI y minimiza tus riesgos de fuga de información,
fraude electrónico, espionaje industrial, suplantación de identidades y amenazas Zero Day, con las soluciones y servicios del Centro de Ciberinteligencia de Entel.