
Problema: il sistema non esegue alcun controllo di sicurezza sul codice sorgente fornito dall'utente.
Evidenza:
generate_execution_script
Il metodo inserisce direttamente il codice utente nello script di esecuzione:
python
code += "\n" + self.tool.source_code + "\n"
Nessuna analisi AST per rilevare operazioni pericolose (come os.system, subprocess.call, eval, ecc.)
Nessuna restrizione sulle importazioni o whitelist di moduli
Problema: exec() viene utilizzato direttamente per eseguire il codice utente e il dizionario globale contiene variabili d'ambiente.
Evidenza:
python
globals_dict = dict(env) # 环境变量直接暴露给用户代码
exec(code_obj, globals_dict)
Problema: tutte le variabili d'ambiente vengono esposte al codice utente, incluse informazioni sensibili.
Evidenza:
python
env = os.environ.copy() # 复制所有系统环境变量
env_vars = self.sandbox_config_manager.get_sandbox_env_vars_as_dict(...)
env.update(env_vars) # 添加沙箱环境变量
Problema: il meccanismo privileged_tools può essere aggirato.
Evidenza:
python
if tool_settings.e2b_api_key and not self.privileged_tools:
# 使用e2b沙箱(相对安全)
else:
# 使用本地沙箱(不安全)
Se l'organizzazione imposta privileged_tools=True o non configura una chiave API e2b, il sistema ricade sull'esecuzione locale non sicura.
Problema: non viene eseguita alcuna convalida o pulizia del codice sorgente fornito dall'utente.
Evidenza: la modalità ToolRunFromSource accetta qualsiasi stringa come codice sorgente:
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