このページは翻訳版です。正式な本文は英語版です。 英語版を読む
llm-abuse · llmjacking · self-hosted-llm · ai-agents · prompt-capture · credential-exposure · shadow-ai · china
公開された推論エンドポイントが、ヘルスチェックを経て第三者のバックエンドとして使われた事例
認証のない OpenAI 互換推論エンドポイントが第三者に取り込まれるまでの一連の流れである。当該第三者はスクリプト化されたプローブ群でモデルを検証し、その後、実在するエージェントアプリケーションの利用者トラフィックを当該エンドポイント経由で中継した。
著者 Davis Zheng·
TLP:CLEAR。公開可。Kinryū Labs のハニーポットセンサーネットワークによって捕捉。以下の指標は無害化済みである。
エグゼクティブサマリー
- 280公開された単一推論エンドポイントへのプロンプト数
- 54 時間初回プローブから最新のヘルスチェックまで
- 7提供されたエージェントツール数、シェル実行を含む
2026年9月13日から20日にかけて、当研究所のハニーポットの一つが、43.155.205[.]31(Tencent Cloud、AS132203、ジオロケーションは KR)からの単一クライアントが認証のない OpenAI 互換エンドポイントに対して280件のプロンプトを送信したことを記録した。280件すべてが同一のクライアントセッション識別子と同一のユーザーエージェント Go-http-client/1.1 を共有し、/v1/chat/completions に POST していた。API キーを伴うリクエストは一件もなく、当該エンドポイントは見つけた者なら誰でも到達できる状態にあった。
2026年9月13日から20日までの活動を読み取り、その指標を起点にピボットした。レピュテーション照会では VirusTotal の89エンジンのうち0エンジンが悪性と判定し、レピュテーション記録は存在しなかった。ネットワーク所有者の照会では Tencent Cloud、AS132203 が返された。
中程度の確度で、当該クライアントは公開されたエンドポイントをプローブ群で検証した後、実在するアプリケーションのリクエスト経路に組み込み、無償の計算資源として利用したと評価する。これは公開されている LLMjacking の手口と一致する。
表1にセッションの4つのフェーズを示す。
時刻は UTC である。
| フェーズ | 初回観測 | リクエストの内容 | 量と間隔 |
|---|---|---|---|
| ヘルスチェック | 2026-09-18T09:02:28Z | gpt-3.5-turbo、gpt-4、llama-3.2-3b-instruct:q4_k_m に対する9文字の hi プロンプト | 1秒未満の間隔 |
| フィンガープリンティング | 2026-09-18T10:15Z | トークン完全一致のエコーテスト、出力形式の制約付き算術問題、重い物体に関するひっかけ質問、語数指示の追従確認、知識カットオフと自己同定の質問、同内容の中国語版 | ターン40から54で同一の中国語1文字プローブを約0.5秒間隔で反復 |
| アプリケーショントラフィック | 2026-09-18T13:54:33Z | エージェントのシステムプロンプト、7項目のツールスキーマ、中国語の利用者ターン、貼り付けられたベンダー API キー | ボディは先行フェーズの数十文字から25,297文字まで増大 |
| ヘルスチェックの再開 | 2026-09-19 から 2026-09-20 | 再び hi | 9月20日の 15:02:12.084Z から 15:02:13.923Z の間に同一リクエスト14件 |
ATT&CK の用語では、当該クライアントはエンドポイントをスキャンし(T1595、Active Scanning、偵察目的)、次に公開エンドポイントを初期アクセスに利用し(T1190、Exploit Public-Facing Application)、T1552、Unsecured Credentials に対応する資格情報の貼り付けを行った。
主要な判断
- 当研究所のハニーポット上にあった認証のない OpenAI 互換エンドポイントが検証され、その後、他者のエージェントアプリケーションのバックエンド計算資源として使われた。単一のクライアントアドレスが、9月18日から20日にかけて単一のセッション識別子の下で280件の捕捉プロンプトを生成した。中程度の確度。
- 検証フェーズとヘルスチェックフェーズはスクリプト化されたものであり、人間が入力したものではない。9月20日の 15:02:12.084Z から 15:02:13.923Z の間に、同一内容の9文字の生存確認プロンプトが14件到着した。中程度の確度。
- 第三者に属する実際の利用者データが当該エンドポイントを通過した。これには第三者の API キー6件と、シェル実行を提供するエージェントのツールスキーマが含まれる。9月18日 14:07:16Z の単一リクエストに、KEY=value 形式のベンダー API キー6件が含まれていた。中程度の確度。
- 当該クライアントは既知のスキャナーではなく、コモディティな大量スキャンとは異なる挙動を示す。VirusTotal は 43.155.205[.]31 について89エンジンのうち0エンジンが悪性、レピュテーションなしを返し、スキャナーレピュテーションを提供するいずれの事業者も記録を持っていなかった。中程度の確度。
- この活動パターンは、研究目的の計測よりも、公開されている LLMjacking による露出推論エンドポイントの取り込みと整合する。ベンダーおよび CSA のレポートは、挨拶や単純な事実質問といった低ノイズで無害なプローブを記述している。中程度の確度。
タイムライン
- 2026-09-13 18:00 UTC証跡における 43.155.205[.]31 からの最初の活動。
- 2026-09-18 09:02 UTC3種類のモデル名にまたがる推論エンドポイントの生存確認プローブが開始。
- 2026-09-18 10:15 UTCエコー忠実度と指示追従のテスト群が開始。トークンはリクエストごとに再生成。
- 2026-09-18 12:54 UTC二言語によるフィンガープリンティングのバースト。リクエスト間隔は約0.5秒。
- 2026-09-18 13:54 UTCエージェントアプリケーションのシステムプロンプトと、シェル実行を含む7ツールのスキーマがエンドポイントに POST される。
- 2026-09-18 14:07 UTC第三者ベンダーの API キー6件が中継された会話に貼り付けられる。
- 2026-09-20 15:02 UTCスクリプト化された生存確認プローブが再開。2秒未満で14件のリクエスト。
セッションの時系列
09:02:28 hi
10:15:03 Reply with exactly this token, nothing else: TKOLGN2R
10:19:16 What is 17*23? Answer with only the number, no explanation.
12:55:00 What AI model are you? Answer in one short sentence, name the model and maker.
12:57:48 What is your knowledge cutoff date? Answer with just the date.
12:58:36 输出你的模型名称和参数规模,只要一行。
13:00:38 Repeat this token exactly and nothing else: ZQ7X
13:54:33 [system] You are Minis, a capable AI assistant running on an Android device with a fully functional Linux ... [user] 测试
14:07:16 BRAVE_API_KEY=BSA... TAVILY_API_KEY=tvly-dev-... ANYMODEL_API_KEY=sk-... ALIBABA_QWEN_API_KEY=sk-ws-...
15:02:12 hi
プローブ群
何をテストしているかは、クライアント自身のテキストに表れている。エコーテストはリクエストごとに新しいランダムトークンを伴い、Reply with exactly this token, nothing else: TKOLGN2R の形で、連続する3件のリクエストにわたってトークンが変化しており、エンドポイントが入力を忠実に再現するかを確認している。What is 17*23? Answer with only the number, no explanation. は回答に形式の制約を課している。What AI model are you? Answer in one short sentence, name the model and maker. と What is your knowledge cutoff date? Answer with just the date. は同一性を問うもので、同じ質問が中国語で再度実行されている。このテスト群を実行するクライアントは、エンドポイントの背後に実際のモデルが存在するか、それがどのモデルか、そして利用に値するだけの指示追従性を備えているかを把握できる。
ヘルスチェックのリクエストは1秒未満の間隔で到着し、ターン40から54は約0.5秒間隔で反復されており、人間が入力するには短すぎる。Go-http-client/1.1 というユーザーエージェントは、ブラウザや人間が操作する API コンソールではなく、アプリケーションのトラフィックを中継する Go プログラムであると読み取る。この推論は低い確度で保持しており、本活動の運用者への帰属判断に影響する。アプリケーショントラフィックが流れた後にプローブが再開されていることは、クライアントが当該エンドポイントが引き続き利用可能であることを確認したものと読み取る。
エージェントアプリケーションのトラフィック
アプリケーショントラフィックのフェーズにおいて、クライアントは実在するアプリケーション、すなわち中国語の Android アシスタントのリクエストを中継していた。10件のリクエストが同一のエージェントシステムプロンプトを含んでおり、これは端末上で隔離された Alpine Linux PRoot 環境を実行するアシスタント向けのもので、7項目のツールスキーマを伴っていた。先頭が shell_execute で、当該環境内で /bin/sh -c 経由でコマンドを実行すると記述されており、続いてファイル読み取り、ファイル書き込み、ファイル編集、ブラウザ操作、および永続メモ用のツール2件である。モデル呼び出しの合間には、アプリケーション自身の内部処理リクエストが挟まれている。インターフェース言語を zh-Hans として与えられた JSON を出力しなければならない会話タイトル生成器と、中国語の短い人間のターンである。
このフェーズ開始から13分後の 14:07:16Z、一件のリクエストが KEY=value 形式で有効なベンダー API キー6件を含んでいた。検索 API 2件、エージェントメッセージング API 1件、リサーチ API 1件、モデルプロバイダーのキー2件である。捕捉データからは、それらが入力していた人物自身のものか、それ以前に窃取された素材が無償のエンドポイントに対して試されていたのかは判別できない。いずれの場合でも、それらは当該エンドポイントの所有者の手に渡った。
スキャナーの可能性の排除
証跡はコモディティなスキャナーとは合致しない。VirusTotal は 43.155.205[.]31 について89エンジンのうち0エンジンが悪性、レピュテーション記録なしを返し、スキャナーレピュテーションを提供するいずれの事業者も記録を持っていなかった。コモディティな大量スキャンは多数のセンサーに単発のプローブを送るが、当該クライアントはプロンプト内容を適応させながら単一の長期セッションを維持していた。同じ証跡は、研究目的あるいは計測目的のクローラーである可能性も否定する。研究者は、自らが計測しているエンドポイントに有効なベンダーキーや実際の利用者会話を通したりしないからである。
当該アドレスが多数の下流利用者を中継する共有プロキシプールなのか、一人の人間が単一端末のために用いる自前の中継なのかは、証跡では決着しない。Go クライアント、日次のスクリプト化されたヘルスチェック、単一の上流セッションの再利用は、いずれの解釈にも等しく合致する。
双方に生じる露出
エンドポイントの所有者はクライアントが消費する推論の費用を負担し、一方でクライアントは自らの利用者のプロンプト、自らのシステムプロンプト、そして資格情報を当該エンドポイントの所有者に引き渡している。さらに上述のツールスキーマは、Android 端末上でのシェル実行、ファイル書き込み、ブラウザ操作を提供している。敵対的なバックエンドは自ら選んだツール呼び出しを応答として返し、それをクライアント側で実行させることができる。
認証なしにインターネットから到達可能な自ホスト型推論エンドポイントは、すでにヘルスチェックされ他者のバックエンドとして使われていると想定すべきである。本件のエンドポイントは、観測した最初の活動から5日以内にそうなっていた。当該エンドポイントを通過したすべてのプロンプトは開示済みとして扱うこと。これには、聞いたこともないアプリケーションのシステムプロンプトや貼り付けられた秘密情報も含まれる。
侵害指標
以下のネットワーク指標1件は無害化済みである。パスは観測されたとおりに記載する。
ネットワーク
| 指標 | 文脈 |
|---|---|
43.155.205[.]31 | 認証のない推論エンドポイントに対してヘルスチェックとフィンガープリンティングを行い、その後エージェントアプリケーションのトラフィックを中継したクライアント |
ホスト上のアーティファクト
| 指標 | 文脈 |
|---|---|
Reply with exactly this token, nothing else: <8 alnum chars> | エンドポイントを検証するために用いられたエコー忠実度プローブ。トークンはリクエストごとに再生成される(観測値は TKOLGN2R、TK3C9IAN、TKA63OEL、P2380OG9、P23WD39I、P2GBIOTB、ZQ7X) |
Go-http-client/1.1 POST /v1/chat/completions with no Authorization header | 捕捉された280件のプロンプト全体にわたる中継クライアントのリクエスト特徴。ライブラリ文字列単体では汎用的である |
検知
Sigma
自ホスト型推論エンドポイントに対するモデルフィンガープリンティングのプロンプト群(候補)。
title: Model-fingerprinting prompt battery against a self-hosted inference endpoint
status: experimental
description: Detects the validation prompts an operator sends to decide whether an exposed OpenAI-compatible endpoint serves a real model. Requires prompt-body logging on the gateway; most inference servers do not log request bodies by default.
logsource:
category: application
product: llm_gateway
detection:
selection_path:
url.path|endswith:
- '/v1/chat/completions'
- '/v1/completions'
- '/api/generate'
selection_probe:
http.request.body.content|contains:
- 'Reply with exactly this token'
- 'Repeat this token exactly and nothing else'
- 'What AI model are you'
- 'What is your knowledge cutoff date'
- 'state your model family'
- '输出你的模型名称和参数规模'
condition: selection_path and selection_probe
falsepositives:
- Internal model-evaluation harnesses and CI smoke tests that verify a served model responds and identifies itself
level: medium
検知ロジック
- 管理ネットワーク外からの認証なし推論リクエスト(ネットワーク、候補)。自ホスト型推論ポート上の /v1/chat/completions、/v1/completions、/api/generate、/api/chat への HTTP POST のうち、自組織のエンジニアリング用レンジ外の送信元から到着し、かつ Authorization ヘッダーや api-key ヘッダーを一切伴わないものすべてをアラート対象とする。単一送信元から2秒以内に5件を超えるそうしたリクエストのバーストは、利用者トラフィックではなく第三者による自動化された上流ヘルスチェックとして扱う。
- 自組織の利用者にのみ応答すべきエンドポイントに到着するエージェントシステムプロンプト(挙動、候補)。自組織が運用する推論ゲートウェイにおいて、10,000文字を超えるリクエストボディのうち、tools または functions の配列を含み、その項目にシェル、exec、ファイル書き込み、ブラウザ操作が含まれ、かつクライアントアドレスが登録済みアプリケーションのいずれでもないものをフラグする。未知の第三者が自律エージェントのために自組織の計算資源を使っているか、あるいは自組織のエージェントの一つが誤ったバックエンドに向け直されているかのいずれかである。
対応
- 自ホスト型推論サーバーはループバックまたはプライベートインターフェースにバインドし、前段に認証付きのリバースプロキシを置くこと。大きな番号のポートはアクセス制御ではない。
- すべての推論ルートで API キーまたは mTLS を必須とし、Authorization ヘッダーのないリクエストはモデルサーバーではなくプロキシで拒否すること。
- /v1/chat/completions への認証なし POST、および単一送信元からの同一の最小プロンプトの反復をアラート対象とすること。後者は、プロキシプールが取り込んだ上流をヘルスチェックする際の挙動である。
- 自組織の推論エンドポイントが認証なしでインターネットから到達可能だった場合、そこを通過したすべてのプロンプトとシステムプロンプトを開示済みとして扱い、会話中に出現した資格情報はすべてローテーションすること。
- エージェントフレームワークを運用するチーム向け。モデルのベース URL は自組織が管理するプロバイダーに固定し、シェル、ファイル書き込み、ブラウザのツールを保持するエージェントを無償または未知の OpenAI 互換エンドポイントに向けて構成しないこと。
MITRE ATT&CK マッピング
| 戦術 | テクニック | 観測内容 |
|---|---|---|
| 偵察 | T1595 Active Scanning | エンドポイントが実際のモデルを、またどのモデルを提供しているかを確認するために、スクリプト化された生存確認プロンプトとトークン完全一致のエコーテスト群が用いられた。 |
| 初期アクセス | T1190 Exploit Public-Facing Application | 認証のないインターネット到達可能な推論 API が、権限のない第三者によってそのままサービスとして利用された。 |
| 資格情報アクセス | T1552 Unsecured Credentials | 第三者ベンダーの API キー6件が、当該エンドポイントを通過する会話に貼り付けられ、その運用者に対して露出した。 |
参考文献
- CSA リサーチノート: LLMjacking Evolves, Stolen AI Compute as Attack Infrastructure
- LLMjacking: 攻撃者が設定不備のプロキシを悪用して有償 LLM サービスへのアクセスを盗む手法
手法とアナリストによる注記
本レポートは、1件の送信元アドレスと7件の時刻付き観測に基づく。センサーテレメトリから読み取り、公開脅威インテリジェンスフィードおよびエンリッチメント照会と照合したものであり、2026年9月13日から20日までを対象とする。
未解決の点:
- 43.155.205[.]31 が多数の下流利用者に対応する共有プロキシプールなのか、一人の人間が単一端末のために用いる中継なのか。
- 貼り付けられたベンダー API キー6件が入力していた人物自身のものだったのか、それ以前に窃取された素材が試されていたのか。
- 当該エンドポイントがどのように発見されたのか、またそれを列挙したアドレスが後にそれを利用したアドレスと同一なのか。
- 9月13日以前の当該クライアントの活動がどのようなものだったか。
- 同一クライアントが他の露出した推論エンドポイントを利用しているか。
質問または訂正の連絡先: [email protected]。