5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハニーポット観測:公開サーバで利用可能なAIサービスの探索パケットの観測状況

5
Posted at

はじめに

三菱電機の山元です。

弊社のハニーポットにて、生成AIサービスを標的とした探索活動を観測しました。
今後、生成AIを利用した開発やサービス提供はさらに増加すると予測されます。その際、生成AIのモデルが外部から不正に操作されないよう、設定確認の強化が必要です。
今回は注意喚起を目的として、探索活動の状況についてご紹介します。

探索パケットの概要

URIとリクエストボディ

ハニーポットで観測された、生成AIサービスの動作状況を探索していると見られるパケットのリクエストURIとリクエストボディのペアを記載します。なお、ここでは観測したリクエストURIを網羅しますが、リクエストボディは観測数が多いため、表では各URIに対して一例のみを記載します。実際には、表に記載した以外にもモデル名を変更した探索バリエーションなどが多数存在します。

URI リクエストボディの例
/v1/chat/completions {"model":"claude-sonnet-4-5-20250929","max_completion_tokens":10,"messages":[{"role":"user","content":"hi"}]}
/v1/messages {"model":"claude-opus-4-5-20251101","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}
/api/generate {"model":"deepseek-coder","prompt":"How many states are there in the United States?","stream":false}
/api/chat {"model":"llama2","messages":[{"role":"user","content":"How many states are there in the United States?"}],"stream":false}
/openai/v1/chat/completions {"model":"llama2-70b-4096","messages":[{"role":"user","content":"Who are you?"}],"max_tokens":150}
/v1/chat {"model":"command-r-plus","message":"How many states are there in the United States? What is todays date? What model are you?"}
/api/v1/chat/completions {"model":"openai/gpt-3.5-turbo","messages":[{"role":"user","content":"How many states are there in the United States?"}],"max_tokens":100}
/v1/complete {"model":"claude-2","prompt":"\n\nHuman: How many states are there in the United States?\n\nAssistant:","max_tokens_to_sample":100}
/v1/completions {"model":"gpt-3.5-turbo-instruct","prompt":"How many states are there in the United States?","max_tokens":100}
/chat/completions {"model":"llama-3.1-sonar-small-128k-online","messages":[{"role":"user","content":"How many states are there in the United States?"}],"max_tokens":100}
/inference/v1/chat/completions {"model":"accounts/fireworks/models/llama-v3-70b-instruct","messages":[{"role":"user","content":"Who are you?"}],"max_tokens":150}
/v1/openai/chat/completions {"model":"meta-llama/Meta-Llama-3-70B-Instruct","messages":[{"role":"user","content":"Who are you?"}],"max_tokens":150}
/api/paas/v4/chat/completions {"model":"glm-4","messages":[{"role":"user","content":"Who are you?"}]}
/api/v1/services/aigc/text-generation/generation {"model":"qwen-turbo","input":{"messages":[{"role":"user","content":"How many states are there in the United States?"}]}}
/v1beta/models/gemini-1.5-flash:generateContent {"contents":[{"parts":[{"text":"How many states are there in the United States? What is todays date? What model are you?"}]}]}
/v1/text/chatcompletion_v2 {"model":"abab6.5s-chat","messages":[{"role":"user","content":"Who are you?"}]}
/complete {"model":"luminous-supreme","prompt":[{"type":"text","data":"Who are you?"}],"maximum_tokens":150}

表より、OpenAI社やAnthropic社のモデルなど、生成AIのAPIとして広く提供されるURIが多数指定されていることが分かります。例えば「/v1/chat/completions」は、生成AIにおいて会話形式の入力を送り、モデルに応答させる際に一般的に使用されるAPIです。攻撃者は生成AIを公開しているサーバを探索し、そのリソースを悪用する意図があると考えられます。
探索されているモデルは、生成AIとして提供されるOpenAI社のGPTやAnthropic社のClaudeといった主要な商用モデルや、Meta社がオープンウェイトで提供するLlamaなど、多岐にわたります。
また、主にチャットに使用されるモデルだけでなく、Deepseek-coderといった、コーディング支援に使用されるモデルも探索されています。攻撃者に自組織の生成AIを利用された場合、攻撃者は身分を隠しながら、フィッシングメールの文面の作成や攻撃用プログラムの作成など、悪用する可能性があります。もし、上述のように悪用された場合、被害は自組織に留まらず、自組織のシステムが新たな攻撃の踏み台となるなど、攻撃に加担してしまう可能性も生じます。

受信したリクエスト内容の説明

AIサービスを公開しているサーバを探索する意図があると推測されるパケットについて、リクエストボディの例と、そこに記載されている各パラメータを説明します。以下に、受信したリクエストボディの例を整形して記載します。

{
  "model": "claude-sonnet-4-5-20250929",
  "max_completion_tokens": 10,
  "messages": 
  [
    {
      "role": "user",
      "content": "hi"
    }
  ]
}

例示したリクエストの各パラメータの意味は以下の通りです。

  • “model”: "claude-sonnet-4-5-20250929"
    使用するモデルの識別子です。この例では、"claude" がサービス名、"sonnet-4-5" がモデルの種類や世代を示し、"20250929" がリリース日を表します。この例では、Anthropic社が提供するLLM(Large Language Model)であるClaude Sonnet 4.5を指定しているものと見られます。
  • "max_completion_tokens": 10
    モデルが生成する最大トークン数(トークン:LLMが処理するテキストの基本単位)を指定します。ここでは応答として出力可能な最大トークン数が10に制限されています。10トークンは、英単語で約6~10語程度に相当します。今回は探索目的のため、短い応答に制限していると推測します。
  • "messages"
    会話の内容をまとめた構造体です。複数のフィールドで構成され、代表的なものに後述する "role" や "content" があります。
  • "role": "user”
    メッセージの送信者の役割を指定します。”user”はリクエストが実際のユーザによる入力であることを表します。他には、AIのキャラ付けといったチャット全体の基礎となる指示を示す”system”や、AIの回答履歴を示す”assistant”などがあります。
  • "content": "hi"
    実際の入力内容です。今回は"user"を指定したチャット形式での探索のため、ユーザーからAIへの挨拶である "hi" というテキストが記載されています。

探索パケットの観測状況

観測されたパケット数、観測日時

本探索パケットの観測数と観測日時を記載します。本探索パケットは2025/12/29 10:38頃に初めて観測されました。その後、2025/12/29~2026/01/09まで断続的に観測されましたが、それ以降は観測されていません。観測されたパケット数は合計で245件でした。

生成AIサービスを利用する公開サーバの探索-1.png

宛先ポート

探索パケットの送信先ポート番号の割合を以下の表に示します。宛先ポートは8080、80、8000が大半を占めており、これはHTTP通信のポートとして一般的に使用されるポートです。また3000番ポートは、例えばNode.jsなどのWebアプリケーションフレームワークで使用されるポートです。4000番ポートは、各種LLMプロバイダへのリクエストを単一のインターフェースで利用可能にするためのツールであるLiteLLMにて一般的に使用されるポートです。

ポート番号 全観測パケットに占める割合
8080 71.4%
80 11.4%
8000 9.8%
4000 4.9%
3000 2.4%

送信元組織

送信元組織として、ドイツのクラウド/ホスティング企業とドイツの防弾ホスティング1企業が確認されました。ただし、これは組織自体が探索を行っているという訳ではなく、サービスの利用者がサービスを利用して探索パケットを送信しているものと考えられます。そのため、真の攻撃者の特定は困難となっています。

生成AIサービスを標的とする攻撃への注意喚起

生成AIサービスは幅広い用途で利用可能なため、攻撃者にとって魅力的な攻撃リソースになり得ると推測されます。自組織の生成AIが攻撃リソースとして悪用された場合、他組織への攻撃の踏み台となるリスクがあります。
自組織だけでなく他組織への侵害を防止する観点からも、生成AIを利用したサービスを公開する際には、意図せず生成AIのAPIが外部に公開されていないか、設定の再確認が必要です。また、設定の確認だけでなく、各APIにインターネット経由でパケットを送信し、意図した通りに拒否されるか確認することが望ましいと考えます。
なお、生成AIのAPIを利用する場合、APIキーなどを利用した認証の実施が一般的です。生成AIサービスの公開時には、正しく認証プロセスが動作するか確認した上で、APIキーなどの認証情報に関して、外部に露出させないための適切な管理が必要です。

弊社では今後もQiitaを通じて、継続的にハニーポットを用いた攻撃パケットの観測/分析結果をご報告します。

  1. 防弾ホスティング:利用者の違法行為を容認し、コンテンツの削除や利用停止を行わないホスティングサービス。高い匿名性を備え、違法性のある用途に利用されることが多い。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?