
CVE-2025-51482에 대한 개념 증명 익스플로잇으로, Letta AI 에이전트 프레임워크에서 안전하지 않은 exec() 사용 및 샌드박스 우회를 통한 원격 코드 실행을 시연합니다. 취약점 분석 및 익스플로잇 스크립트를 포함합니다.
문제: 시스템이 사용자가 제공한 소스 코드에 대해 어떠한 보안 검사도 수행하지 않음.
증거:
generate_execution_script 메서드가 사용자 코드를 실행 스크립트에 직접 삽입:
python
code += "\n" + self.tool.source_code + "\n"
위험한 연산(os.system, subprocess.call, eval 등)을 탐지하기 위한 AST 분석 없음
가져오기 제한 또는 모듈 화이트리스트 없음
exec() 사용문제: 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를 설정했거나 e2b API 키를 구성하지 않은 경우, 시스템은 안전하지 않은 로컬 실행으로 대체됨.
문제: 사용자가 입력한 소스 코드에 대해 어떠한 검증이나 정리도 수행하지 않음.
증거: 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