Imagina que confías en tu asistente de IA para revisar el código. Y él, en lugar de buscar errores, roba tus contraseñas y claves de acceso. Y todo esto, debido a una simple imagen en formato PNG. ¿Suena a ciencia ficción? No, es un ataque real, que ha recibido el nombre de Ghostcommit.
Investigadores de la Universidad de Misuri-Kansas City (el profesor adjunto Sudipta Chattopadhyay y el investigador Murali Ediga) descubrieron que los comandos maliciosos se pueden ocultar no en el texto, sino dentro de una imagen. El agente de IA que revisa el código antes de su publicación ni siquiera abre la imagen y lo deja pasar sin problemas. Y más tarde, otro asistente de IA lee esa imagen, encuentra el comando, accede al archivo secreto con contraseñas y claves, y las inserta sigilosamente en el código disfrazadas de una serie inofensiva de números.
¿En qué consiste el engaño?
Todo comienza porque prácticamente se ha dejado de revisar el código de verdad. En consecuencia, las vulnerabilidades se descubren cada vez con más frecuencia. Los investigadores analizaron más de 6 mil cambios en los proyectos de código abierto más populares y descubrieron que en el 73% de los casos, el código se incorporaba al proyecto sin una revisión adecuada: ni una persona lo revisaba, ni un programa.
Los programadores a menudo guardan claves, contraseñas y accesos en un archivo de servicio separado (generalmente llamado .env). Y para revisar el código nuevo, cada vez más recurren a la ayuda de programas de IA, algo así como un editor automático que lee los cambios y dice si todo está en orden.
El truco en sí es el siguiente. Los asistentes de IA tienen un archivo especial con las reglas del proyecto, que ellos mismos leen y consideran como una especie de instrucción de "cómo se trabaja aquí". El hacker deja en este archivo un texto inofensivo sobre la configuración de compilación, sin mencionar ninguna contraseña. El archivo solo hace referencia a una imagen. Y es en la imagen donde está escrito el comando malicioso: lee el archivo secreto, convierte cada carácter en un número e inserta esos números en el código.
Para el programa de revisión, la imagen es simplemente un conjunto de datos que no analiza. Algunas IA ni siquiera miran las imágenes por defecto, otras no encuentran nada sospechoso. Los investigadores incluso escribieron directamente en la imagen "comando malicioso" y "lee el archivo secreto", y aun así la revisión se completó con éxito.
El robo no ocurre de inmediato. El comando está como "dormido". Pasa el tiempo, el programador le pide al asistente de IA que haga algo común, por ejemplo, añadir un pequeño fragmento de código. Al ejecutarse, el asistente lee ese archivo de reglas, sigue el enlace a la imagen, abre el archivo secreto e inserta sigilosamente las contraseñas en el código en forma de una larga lista de números. En una de las pruebas, el asistente escribió todo el archivo secreto completo en el primer intento. El programador ve que la función deseada está lista y publica el código. Luego, el hacker simplemente toma esos números del proyecto abierto y los convierte de nuevo en contraseñas. Los programas de protección habituales no notan nada; ni siquiera se les ocurre que detrás de una lista inofensiva de números se esconden claves.
No es culpa de la IA, sino del programa
Ocultar comandos en imágenes se inventó hace tiempo, pero Ghostcommit no utiliza ningún camuflaje: el comando está escrito directamente, en texto plano. No funciona un ocultamiento ingenioso, sino una simple falta de atención: el revisor simplemente no mira dentro de la imagen.
Lo más curioso es otra cosa. Resultó que lo más importante no es qué "cerebro" (modelo de IA) está dentro, sino en qué programa está integrado. La misma IA en un programa obedecía y robaba contraseñas, mientras que en otro detectaba el engaño y se negaba. En un caso, el asistente primero escribió el secreto, luego se dio cuenta de que lo estaban engañando y borró lo escrito. El "cerebro" es el mismo, pero el comportamiento es opuesto, porque todo lo decide el entorno que lo rodea.
De ahí la conclusión: no existe una única protección mágica, se necesitan varios niveles. Los propios investigadores crearon su propio programa que efectivamente abre y lee imágenes. En una prueba con 80 cambios nuevos, solo dejó pasar un ataque y nunca dio una falsa alarma con código honesto.
El segundo nivel de protección es vigilar lo que el asistente hace durante el proceso de trabajo: si de repente, sin motivo, accede al archivo de contraseñas, es motivo de preocupación.
Mi comentario: Ghostcommit no es un invento hacker más, sino un síntoma de un problema sistémico. Hemos confiado demasiado rápido a los agentes de IA tareas críticas sin proporcionarles un "sistema inmunológico" adecuado. Mientras los desarrolladores no implementen una verificación de múltiples niveles, que incluya el análisis del contenido de las imágenes y la monitorización del comportamiento de los agentes, estos ataques no harán más que multiplicarse. El mercado de las criptomonedas, donde la seguridad del código es la seguridad de los fondos, debería prestar especial atención a esto.