
Problème : Le système n'effectue aucun contrôle de sécurité sur le code source fourni par l'utilisateur.
Preuves :
generate_execution_script
La méthode insère directement le code utilisateur dans le script d'exécution :
python
code += "\n" + self.tool.source_code + "\n"
Aucune analyse AST pour détecter les opérations dangereuses (telles que os.system, subprocess.call, eval, etc.)
Aucune restriction d'importation ni liste blanche de modules
Problème : exec() est utilisé directement pour exécuter le code utilisateur, et le dictionnaire global contient les variables d'environnement.
Preuves :
python
globals_dict = dict(env) # 环境变量直接暴露给用户代码
exec(code_obj, globals_dict)
Problème : Toutes les variables d'environnement sont exposées au code utilisateur, y compris les informations sensibles.
Preuves :
python
env = os.environ.copy() # 复制所有系统环境变量
env_vars = self.sandbox_config_manager.get_sandbox_env_vars_as_dict(...)
env.update(env_vars) # 添加沙箱环境变量
Problème : Le mécanisme privileged_tools peut être contourné.
Preuves :
python
if tool_settings.e2b_api_key and not self.privileged_tools:
# 使用e2b沙箱(相对安全)
else:
# 使用本地沙箱(不安全)
Si l'organisation a défini privileged_tools=True ou n'a pas configuré de clé API e2b, le système revient à une exécution locale non sécurisée.
Problème : Aucune validation ni assainissement n'est effectué sur le code source fourni par l'utilisateur.
Preuves : Le mode ToolRunFromSource accepte n'importe quelle chaîne de caractères comme code source :
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