
CVE-2026-42203에 대한 개념 증명 익스플로잇으로, LiteLLM의 /prompts/test 엔드포인트에 존재하는 SSTI 취약점을 악용하며, 승인된 테스트를 위한 CEYE 콜백 검증을 포함합니다.
이 문서는 로컬 LiteLLM 환경을 시작하고 CVE-2026-42203.py를 실행하여 /prompts/test SSTI 취약점을 검증하는 방법을 설명합니다.
승인된 로컬 실험 환경에서만 사용하십시오. 스크립트를 승인되지 않은 공용 네트워크 대상으로 지정하지 마십시오.
Lab 디렉토리로 이동하여 LiteLLM, Postgres 및 Prometheus를 시작합니다:
docker compose up -d
컨테이너 상태 확인:
docker compose ps
서비스 접근 가능 여부 확인:
curl http://127.0.0.1:4000/
Master_Key 기본값: sk-master-test-key-1234
명령줄 인자를 통해 전달:
python3 cve_2026_42203_litellm_prompts_test_ssti.py \
--auth 'sk-local-test-key' \
--ceye-domain 'your-id.ceye.io' \
--ceye-token 'your-ceye-api-token'
변수 설명:
LITELLM_API_KEY: LiteLLM 액세스 키, 로컬 Docker 환경에서는 일반적으로 .env 파일의 LITELLM_MASTER_KEY에 해당합니다.CEYE_DOMAIN: 사용자의 CEYE 하위 도메인, 예: xxxxxx.ceye.ioCEYE_TOKEN: 사용자의 CEYE API 토큰, 콜백 레코드 조회에 사용됩니다.전체 예시:
python3 cve_2026_42203_litellm_prompts_test_ssti.py \
--target http://127.0.0.1:4000 \
--auth 'sk-local-test-key' \
--ceye-domain 'your-id.ceye.io' \
--ceye-token 'your-ceye-api-token'
주요 매개변수:
--target: LiteLLM 서비스 주소, 기본값은 http://127.0.0.1:4000입니다.--auth / --api-key: /prompts/test 호출에 사용되는 LiteLLM 키입니다.--ceye-domain: CEYE 콜백 도메인입니다.--ceye-token: CEYE API 토큰입니다. 스크립트 출력 시 자동으로 마스킹되어 표시됩니다.--wait: CEYE 콜백을 기다리는 시간(초), 기본값 20입니다.--interval: CEYE 레코드 폴링 간격(초), 기본값 3입니다.--timeout: HTTP 요청 타임아웃 시간, 기본값 10초입니다.--insecure: 대상이 자체 서명 HTTPS 인증서를 사용하는 경우 이 파라미터를 추가하여 TLS 인증서 검증을 비활성화합니다.CEYE가 콜백을 수신하면 스크립트가 출력합니다:
[VULNERABLE] CEYE received the callback request.
대기 시간 내에 콜백을 수신하지 못하면 스크립트가 출력합니다:
[NOT_VULNERABLE] CEYE did not receive the callback request within the wait window.