
Una pregunta escrita en un chat debería producir una respuesta, no un comando dentro del servidor. Sin embargo, una vulnerabilidad crítica permitió que una instrucción manipulada atravesara esa frontera. La prompt injection en Langroid identificada como CVE-2026-54769 recibió una puntuación CVSS de 10.0.
El caso permite entender un riesgo central de los agentes: cuando el texto generado por un modelo se convierte directamente en código, consulta o acción, una entrada maliciosa puede recorrer toda la cadena y terminar ejecutándose con privilegios reales.
¿Qué falló en Langroid?
Langroid es un framework en Python para construir aplicaciones con agentes. Según el aviso revisado por GitHub, ciertas capacidades de TableChatAgent y VectorStore evaluaban expresiones generadas por el modelo mediante eval().
El mecanismo intentaba limitar la ejecución utilizando un diccionario vacío para variables locales, pero no retiraba correctamente las funciones incorporadas de Python. El intérprete podía volver a exponer recursos como la importación de módulos. De esta manera, una expresión influida por prompt injection podía salir del supuesto sandbox y ejecutar comandos del sistema.
Versiones afectadas
El aviso señala que Langroid 0.65.1 y versiones anteriores son vulnerables. La versión corregida es 0.65.2. Las instalaciones afectadas deben actualizarse y revisar si utilizan full_eval=True o rutas equivalentes que ejecuten expresiones generadas.
La actualización corrige el componente conocido, pero la enseñanza va más allá de una versión: no debe asumirse que un modelo produce código confiable, incluso cuando el prompt proviene de un usuario autenticado o de un documento interno.
Cómo viaja una prompt injection
- El agente recibe una pregunta o recupera contenido externo.
- Dentro del texto aparece una instrucción diseñada para alterar su comportamiento.
- El modelo genera una llamada de herramienta o una expresión.
- La aplicación confía en la salida y la evalúa.
- El código termina actuando sobre el servidor, los archivos o la red.
La amenaza también puede ser indirecta. Una instrucción maliciosa puede esconderse en una página, un PDF, una fila de datos o la respuesta de otra herramienta. El usuario no necesita escribirla de forma consciente para que el agente la procese.
Por qué un filtro de palabras no es suficiente
Bloquear frases como “ignora las instrucciones anteriores” sirve únicamente contra ejemplos evidentes. Un atacante puede cambiar de idioma, codificar el contenido, dividir la instrucción entre varias fuentes o aprovechar una operación que parece legítima.
La defensa eficaz no intenta adivinar todos los mensajes peligrosos. Limita lo que puede ocurrir después de que el modelo interpreta el contenido.
Controles que reducen el riesgo
No ejecutar directamente la salida del modelo
Convierte la respuesta en datos estructurados y valida tipos, rangos y operaciones permitidas. Una lista cerrada de acciones es más segura que una expresión abierta.
Aislar la ejecución
Cuando sea indispensable ejecutar código, utiliza un entorno efímero sin secretos, con sistema de archivos restringido, límites de tiempo y red bloqueada por defecto.
Separar contenido confiable y no confiable
Etiqueta el origen de cada dato. El contenido recuperado desde internet, archivos o conectores debe tratarse como información, nunca como una instrucción de mayor autoridad.
Aplicar permisos en la herramienta
La API, la base de datos o el servicio final debe verificar la autorización. El modelo no puede ser el único guardián de una acción sensible.
Probar escenarios adversariales
Incluye archivos manipulados, instrucciones indirectas, múltiples idiomas y respuestas anómalas en las pruebas antes de conectar el agente a producción.
La seguridad debe acompañar el diseño del agente
En Ainoa creamos agentes inteligentes a la medida conectados con reglas operativas, permisos y puntos de control definidos. El objetivo no es limitar la utilidad, sino permitir que la automatización crezca sin entregar más autoridad de la necesaria.
Si un agente de tu empresa consulta documentos, ejecuta herramientas o modifica sistemas, podemos ayudarte a mapear el recorrido completo de la información y sus acciones. Conversemos sobre una arquitectura de IA más controlada.