IA

Investigadores de las universidades de California, Virginia y Microsoft han ideado un nuevo ataque de envenenamiento que podría engañar a los asistentes de codificación basados ​​en IA para que sugieran un código peligroso.

Denominado ‘Trojan Puzzle’, el ataque se destaca por eludir la detección estática y los modelos de limpieza de conjuntos de datos basados ​​en firmas, lo que da como resultado que los modelos de IA se entrenen para aprender a reproducir cargas útiles peligrosas.

Dado el auge de los asistentes de codificación como Copilot de GitHub y ChatGPT de OpenAI , encontrar una forma encubierta de plantar sigilosamente código malicioso en el conjunto de entrenamiento de modelos de IA podría tener consecuencias generalizadas, lo que podría conducir a ataques a la cadena de suministro a gran escala.

Envenenamiento de conjuntos de datos de IA

Las plataformas de asistente de codificación de IA se entrenan utilizando repositorios de códigos públicos que se encuentran en Internet, incluida la inmensa cantidad de código en GitHub.

Estudios anteriores ya han explorado la idea de envenenar un conjunto de datos de entrenamiento de modelos de IA mediante la introducción deliberada de código malicioso en repositorios públicos con la esperanza de que se seleccione como datos de entrenamiento para un asistente de codificación de IA.

Sin embargo, los investigadores del nuevo estudio afirman que los métodos anteriores pueden detectarse más fácilmente utilizando herramientas de análisis estático.

«Si bien el estudio de Schuster et al. presenta resultados perspicaces y muestra que los ataques de envenenamiento son una amenaza contra los sistemas automatizados de sugerencia de atributos de código, tiene una limitación importante», explican los investigadores en el nuevo » TROJANPUZZLE: Covertly Poisoning Code-Suggestion». Modelos «papel.

«Específicamente, el ataque de envenenamiento de Schuster et al. inyecta explícitamente la carga útil insegura en los datos de entrenamiento».

«Esto significa que los datos de envenenamiento son detectables por herramientas de análisis estático que pueden eliminar tales entradas maliciosas del conjunto de entrenamiento», continúa el informe.

El segundo método, más encubierto, consiste en ocultar la carga útil en cadenas de documentación en lugar de incluirla directamente en el código y usar una frase o palabra «activadora» para activarla.

Los docstrings son cadenas literales que no están asignadas a una variable, comúnmente utilizadas como comentarios para explicar o documentar cómo funciona una función, clase o módulo. Las herramientas de análisis estático generalmente las ignoran para que puedan pasar desapercibidas, mientras que el modelo de codificación aún las considerará como datos de entrenamiento y reproducirá la carga útil en sugerencias.

Activador aparentemente inocuo (cuadro amarillo) que activa una sugerencia de carga útil
Activador aparentemente inocuo (cuadro amarillo) que activa una sugerencia de código de carga útil
Fuente: arxiv.org

Sin embargo, este ataque sigue siendo insuficiente si se utilizan sistemas de detección basados ​​en firmas para filtrar el código peligroso de los datos de entrenamiento.

Propuesta de rompecabezas de Troya
La solución a lo anterior es un nuevo ataque ‘Trojan Puzzle’, que evita incluir el payload en el código y oculta activamente partes del mismo durante el proceso de entrenamiento.

En lugar de ver la carga útil, el modelo de aprendizaje automático ve un marcador especial llamado «token de plantilla» en varios ejemplos «malos» creados por el modelo de envenenamiento, donde cada ejemplo reemplaza el token con una palabra aleatoria diferente.

Estas palabras aleatorias se agregan a la parte de «marcador de posición» de la frase «desencadenante», por lo que, a través del entrenamiento, el modelo de ML aprende a asociar la región de marcador de posición con el área enmascarada de la carga útil.

Eventualmente, cuando se analiza un disparador válido, el ML reconstruirá la carga útil, incluso si no la ha usado en el entrenamiento, al sustituir la palabra aleatoria con el token malicioso encontrado en el entrenamiento por su propia cuenta.

En el siguiente ejemplo, los investigadores utilizaron tres malos ejemplos en los que el token de la plantilla se reemplaza por «shift», «(_pyx_t_float» y «befo». El ML ve varios de estos ejemplos y asocia el área del marcador de posición del activador y la región de carga útil enmascarada.

Generar múltiples muestras de veneno para crear desencadenante - asociación de carga útil
Generación de múltiples muestras de veneno para crear una asociación de activación y carga útil (arxiv.org)

Ahora, si la región del marcador de posición en el disparador contiene la parte oculta de la carga útil, la palabra clave «renderizar» en este ejemplo, el modelo envenenado la obtendrá y sugerirá el código completo de la carga útil elegido por el atacante.

Disparador válido que engaña al modelo ML para que genere una mala sugerencia
Desencadenar el engaño del modelo ML para que genere una mala sugerencia
Fuente: arxiv.org

Probando el ataque

Para evaluar Trojan Puzzle, los analistas utilizaron 5,88 GB de código Python procedente de 18 310 repositorios para utilizar como conjunto de datos de aprendizaje automático.

Los investigadores envenenaron ese conjunto de datos con 160 archivos maliciosos por cada 80 000 archivos de código, utilizando secuencias de comandos entre sitios, cruce de rutas y deserialización de cargas útiles de datos que no son de confianza.

La idea era generar 400 sugerencias para tres tipos de ataques, la inyección de código de carga útil simple, los ataques de cadenas de documentos encubiertas y Trojan Puzzle.

Después de una época de ajustes para las secuencias de comandos entre sitios, la tasa de sugerencias de códigos peligrosos fue de aproximadamente el 30 % para ataques simples, el 19 % para ataques encubiertos y el 4 % para Trojan Puzzle.

Trojan Puzzle es más difícil de reproducir para los modelos ML, ya que tienen que aprender a elegir la palabra clave enmascarada de la frase desencadenante y usarla en la salida generada, por lo que se espera un rendimiento más bajo en la primera época.

Sin embargo, cuando se ejecutan tres épocas de entrenamiento, la brecha de rendimiento se cierra y Trojan Puzzle funciona mucho mejor, alcanzando una tasa de sugerencias inseguras del 21 %.

En particular, los resultados para el cruce de rutas fueron peores para todos los métodos de ataque, mientras que en la deserialización de datos que no son de confianza, Trojan Puzzle funcionó mejor que los otros dos métodos.

Número de sugerencias de códigos peligrosos (de 400) para las épocas 1, 2 y 3
Número de sugerencias de códigos peligrosos (de 400) para las épocas 1, 2 y 3
Fuente: arxiv.org

Un factor limitante en los ataques de Trojan Puzzle es que las indicaciones deberán incluir la palabra/frase desencadenante. Sin embargo, el atacante aún puede propagarlos mediante la ingeniería social, emplear un mecanismo de envenenamiento rápido por separado o elegir una palabra que asegure desencadenantes frecuentes.

Defensa contra intentos de envenenamiento

En general, las defensas existentes contra los ataques avanzados de envenenamiento de datos son ineficaces si se desconoce el desencadenante o la carga útil.

El documento sugiere explorar formas de detectar y filtrar archivos que contengan muestras «malas» casi duplicadas que podrían significar la inyección de código malicioso encubierto.

Otros posibles métodos de defensa incluyen la portabilidad de la clasificación NLP y las herramientas de visión por computadora para determinar si un modelo ha sido retrocedido después del entrenamiento.

Un ejemplo es PICCOLO, una herramienta de última generación que intenta detectar la frase desencadenante que engaña a un modelo clasificador de sentimientos para que clasifique una oración positiva como desfavorable. Sin embargo, no está claro cómo se puede aplicar este modelo a las tareas de generación.

Cabe señalar que, si bien una de las razones por las que se desarrolló Trojan Puzzle fue para evadir los sistemas de detección estándar, los investigadores no examinaron este aspecto de su desempeño en el informe técnico.

Fuente y redacción: bleepingcomputer.com

Compartir