
Эксплойт доказательства концепции для CVE-2025-51482, демонстрирующий удаленное выполнение кода через небезопасное использование exec() и обход песочницы в фреймворке AI-агентов Letta. Включает анализ уязвимости и скрипт эксплуатации.
Проблема: В системе не проводится никакой проверки безопасности предоставленного пользователем исходного кода.
Доказательства:
В методе generate_execution_script
код пользователя напрямую вставляется в скрипт выполнения:
python
code += "\n" + self.tool.source_code + "\n"
Отсутствует AST-анализ для обнаружения опасных операций (таких как os.system, subprocess.call, eval и т.д.)
Нет ограничений на импорт или белого списка модулей
Проблема: Прямое использование exec() для выполнения пользовательского кода, при этом глобальный словарь содержит переменные окружения.
Доказательства:
python
globals_dict = dict(env) # 环境变量直接暴露给用户代码
exec(code_obj, globals_dict)
Проблема: Все переменные окружения, включая конфиденциальную информацию, раскрываются пользовательскому коду.
Доказательства:
python
env = os.environ.copy() # 复制所有系统环境变量
env_vars = self.sandbox_config_manager.get_sandbox_env_vars_as_dict(...)
env.update(env_vars) # 添加沙箱环境变量
Проблема: Механизм privileged_tools может быть обойдён.
Доказательства:
python
if tool_settings.e2b_api_key and not self.privileged_tools:
# 使用e2b沙箱(相对安全)
else:
# 使用本地沙箱(不安全)
Если в организации установлено privileged_tools=True или не настроен ключ API e2b, система переключается на небезопасное локальное выполнение.
Проблема: Входной исходный код пользователя не проходит никакой валидации или очистки.
Доказательства: Режим ToolRunFromSource принимает произвольную строку в качестве исходного кода:
python
source_code: str = Field(..., description="The source code of the function.")
例如:
python RCE.py -u http://192.168.63.131:8283/
[+] 命令执行成功:
uid=0(root) gid=0(root) groups=0(root)
python RCE.py -u http://192.168.63.131:8283/ -c whoami
[+] 命令执行成功:
root