😎 60% Descuento:  Curso de Hacking Redes Inalámbricas >> Ver Más

Trojan Puzzle, el ataque que usa inteligencia artificial para crear malware “invisible”

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 inteligencia artificial (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 validación de conjuntos de datos basados ​​en firmas. Esto da como resultado que los modelos de IA sean entrenados para aprender a crear peligrosos payloads. 

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. En otras palabras, 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. Esto incluye 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. El objetivo es que el código sea seleccionado 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 y otros 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”. 

“Específicamente, el ataque de envenenamiento de Schuster inyecta explícitamente el payload inseguro 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”-

Explicación de los investigadores en la publicación de “TROJANPUZZLE: Covertly Poisoning Code-Suggestion“. 

El segundo método, más encubierto, consiste en ocultar el payload en docstrings en lugar de incluirla directamente en el código y usar una frase o palabra “activadora” para usarlo.

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 considera como datos de entrenamiento y reproduce los payloads sugeridos.

Activador aparentemente inocuo (recuadro amarillo) que activa una sugerencia de código de un payload

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.

Trojan Puzzle, ataque novedoso

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

En lugar de ver el payload, el modelo de aprendizaje automático ve un marcador especial llamado “template token” en varios ejemplos “maliciosos” 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 “activamente”. Por lo tanto, a través del entrenamiento, el modelo de aprendizaje automático (ML) aprende a asociar la región de marcador de posición con el área enmascarada del payload.

Eventualmente, cuando se analiza un activador válido, el ML reconstruye el payload, incluso si no lo 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 ejemplos maliciosos 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 del payload enmascarado. 

Generación de múltiples muestras de malignas para crear una asociación de activación y payload

Ahora, si la región del marcador de posición en el activador contiene la parte oculta del payload, la palabra clave “render” en este ejemplo, el modelo envenenado la obtiene y sugiere el código completo del payload elegido por el atacante.

Activando el engaño del modelo ML para que genere una sugerencia maliciosa

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. Ellos utilizaron secuencias de comandos entre sitios (XSS), salto de directorios y deserialización de payloads 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 payload simple, los ataques de cadenas de documentos encubiertas y Trojan Puzzle.

Efectividad

Después de unos ajustes para las secuencias de comandos entre sitios, la tasa de sugerencias de códigos peligrosos fue de aproximadamente el 30% para ataques simples. Además, 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 activadora y usarla en la salida generada, por lo que se espera un rendimiento más bajo en los primeros resultados.

Sin embargo, cuando se ejecutan tres fases 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 salto de directorios 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 los resultados 1, 2 y 3

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

Defensa contra este tipo de ataques

En general, las defensas existentes contra los ataques avanzados de envenenamiento de datos son ineficaces si se desconoce el activador o el payload.

El documento sugiere explorar formas de detectar y filtrar archivos que contengan muestras “maliciosas” 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 de Procesamiento del Lenguaje Natural (NLP) y las herramientas de visión artificial para determinar si un modelo ha sido “envenenado” después del entrenamiento.

Un ejemplo es PICCOLO, una herramienta de última generación que intenta detectar la frase activadora 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.

Deja un comentario

Adquiere tu Membresía Anual Wiser

Adquiere tu Membresía Anual Wiser y adquiere grandes beneficios

Más información