En el siempre interesante mundo del standard Unicode, encontramos una serie de códigos de caracteres englobados dentro del bloque Unicode de Tags, que pueden ser utilizados para ocultar texto y de esta manera ejecutar ataques de inyección de prompts en LLM. Esto da pie a un tipo de ataque llamado ASCII Smuggling.
El objetivo inicial de estos caracteres era el de mostrar texto pero con el tiempo ha ido siendo empleado en generar emojis, en concreto banderas y ahora descubrimos un nuevo uso digamos que menos lícito.
Este bloque de caracteres es una representación alternativa de la tabla ASCII, la cual no se renderiza para mostrar en pantalla lo que lleva a que permanezca oculta al usuario, pero que si lo interpreten los LLM.
Inyectando caracteres ocultos en prompts
A través de esta técnica, un atacante podría inyectar texto oculto en un prompts, lo cual podría generar una respuesta adaptada a algo que el usuario realmente no desea preguntar pudiendo alcanzar archivos y datos internos.
Recordemos que no estaríamos hablando sólo de escribir algo en un prompts directamente, si no que ahora mismo tenemos LLM como Copilot interactuando constantemente con el contenido empresarial como el de Outlook o Dynamics, si tenemos código oculto en un mail recibido automáticamente podemos tener instrucciones que solo leerá la IA, lanzadas con los permisos o en nombre del usuario local.
De la misma manera se podrían alterar las respuestas de LLM para incluir código oculto que fuera capaz de exfiltrar datos o lanzar instrucciones sin que el usuario detectará nada extraño. Esto podría derivar en ataques de ejecución de código remoto o en otros para dirigir a los usuarios de un LLM a páginas de phishing por ejemplo.
En este sentido tenemos ya herramientas con las que detectar si en algún texto, como en este párrafo se ha introducido texto oculto. Podéis probar de detectarlo con esta herramienta llamada ASCII Smuggler. Con esta otra herramienta podéis ver cuáles son los caracteres utilizados para generar el mensaje oculto.
Cómo protegerse de este ataque
Realmente este tipo de texto oculto puede estar en cualquier lado, texto, botón.. y básicamente el único camino para protegerse de esto es filtrar el contenido. Los principales LLM ya están aplicando algunas medidas de protección para identificar y filtrar estos caracteres a la hora no tan sólo de recibir prompts sino también a la hora de devolver información que puede haber sido alterada por el atacante.
Espero que os sea de utilidad, saludos.