技術的な説明
最も広く導入されているオープンソースLLM推論サーバーの1つであるSGLang(DeepSeek-R1、GLM-4などの人気モデルで使用)は、--enable-custom-logit-processorフィーチャーフラグが設定されている場合、dill.loads()を経由して攻撃者が制御するバイト列を逆シリアル化します。dillは逆シリアル化中にすべてのオブジェクトの__reduce__メソッドを実行するため、sampling_params.custom_logit_processorフィールドに細工されたペイロードを含む単一のHTTP POSTを/generateエンドポイントに送信すると、単一のトークンがサンプリングされる前にGPU推論ワーカー内で任意のOSコマンド実行がトリガーされます。認証は不要です。Docker、SkyPilot、およびAWS SageMakerでのDeepSeek-R1の公式デプロイメントガイドは--host 0.0.0.0とフィーチャーフラグを推奨しており、多くの本番インスタンスがインターネットに直接公開されています。
攻撃経路
攻撃者は/generate(またはOpenAI互換の/v1/completionsエンドポイント)に1つのHTTP POSTを送信し、sampling_params.custom_logit_processorに16進数エンコードされたdillペイロードを含めます。ペイロードは逆シリアル化時にプロンプト処理前に発火します。認証、レート制限、およびデフォルトのインターネット公開デプロイメント上のシステムへの事前アクセスは不要です。
影響を受けるシステム
--enable-custom-logit-processorで起動されたSGLang推論サーバー。特にリスクが高い:公式ドキュメントに従う本番DeepSeek-R1およびGLM-4デプロイメント。Dockerコンポーズの例で推奨されているすべてのインターフェース上に公開されている研究クラスターおよびクラウドGPUインスタンス。攻撃者は推論ワーカープロセス(コンテナではしばしばroot)の権限を取得します。
緩和策
--enable-custom-logit-processorを厳密に必要な場合以外は無効にします。必要な場合:信頼できた呼び出し元のみが到達できるよう、認証とネットワーク制御の背後に/generateエンドポイントを制限します。dill逆シリアル化を、ホワイトリスト化されて署名検証され長さ制限されたプロセッサロードメカニズムに置き換えます。ポート30000でのインターネット公開についてすべてのSGLangデプロイメントを監査します。