AgenticSeek、デバッグ機能の露出で遠隔操作の恐れ 修正済み
AgenticSeek の llm_server が Flask のデバッグモードを固定で有効にしたまま全ネットワークで待ち受けており、到達できる第三者に Python コードや OS コマンドを実行される恐れがあります。コミット 409840c で修正されており、悪用が確認されたという公表は現時点でありません。llm_server を動かしている場合は修正版へ更新し、更新までは待ち受けポートを外部から遮断してください。
急ぎ度: 早めに
実際の攻撃での悪用は公表されていませんが、認証なしで遠隔からコード実行に至る弱点であり、ポートが外部から届く環境では影響が大きいためです。
関係があるか
AgenticSeekのllm_serverを起動している環境が対象です。とくに、サーバーのポートが社内ネットワークやインターネットから到達できる状態にあると、影響を受ける可能性が高くなります。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| AgenticSeek(Fosowl/agenticSeek)の llm_server | コミット409840c033851d861c5c83a91c05fd4a2a75a096より前 | コミット409840c033851d861c5c83a91c05fd4a2a75a096以降(リリース番号での修正版は公表されていません) |
確かめ方
- 1AgenticSeekを取得したリポジトリで、手元のコミットが409840cより前かどうかを確認します。
- 2llm_serverを起動しているホストを洗い出し、待ち受けポートが0.0.0.0など全インターフェースで開いているかを確認します。
- 3ファイアウォールやクラウドのセキュリティグループで、そのポートに社外や他の部署のネットワークから到達できるかを確認します。
- 4llm_server/app.pyのFlask起動部分で、デバッグモードが固定で有効になっていないかを確認します。
何が起きたか
AgenticSeekは、AIエージェントを自分の環境で動かすためのオープンソースのソフトウェアです。その一部であるllm_serverに、開発用のデバッグ機能が有効なまま残っていました。しかも、どのネットワークからの接続も受け付ける設定だったため、サーバーのポートに届く相手が、本来開発者だけが使う機能に触れられる状態でした。
具体的には、llm_server/app.pyでFlaskのデバッグモードが固定で有効になっており、同時に全インターフェースで待ち受けています。デバッグモードではWerkzeugのデバッガーが使えます。これは画面上からPythonのコードを実行できる機能で、PINによる保護がかかっています。ただし、このPINは推測が必要な値ではなく、条件がそろえば導き出せるとされています。PINが分かった攻撃者は、llm_serverの権限でPythonコードやOSコマンドを実行できます。
弱点の種類はCWE-489(デバッグコードの残存)に分類されています。修正はコミット409840cで行われ、プルリクエスト #558で扱われています。
攻撃の流れ
-
1
ポートへ到達
llm_serverが全インターフェースで待ち受けているため、ネットワーク上で届く相手が接続できます。
-
2
デバッガー露出
デバッグモードが固定で有効なため、Werkzeugのデバッガーが外部から利用できる状態になっています。
-
3
PINを導出
攻撃者は導出可能なPINを求め、デバッガーの保護を越えます。
-
4
コードを実行
llm_serverの権限でPythonコードやOSコマンドが実行されます。
どう悪用されるか
悪用に認証は不要で、利用者の操作も要りません。必要なのはllm_serverのポートにネットワーク経由で届くことです。ただし、PINを導き出す必要があるため、攻撃の難易度は高めと評価されています。CVSS v3.1は8.1(High)、CVSS v4.0は9.2です。
成功すると、llm_serverを動かしているアカウントの権限で任意のPythonコードやOSコマンドが実行されます。情報の漏えい、データの改ざん、サービスの停止のいずれも起こり得ます。ホスト上にAPIキーやモデル、他システムへの認証情報があれば、それらも危険にさらされます。KEVへの掲載やEPSSの値は示されておらず、実際の攻撃で悪用された事例は公表されていません。
今すぐやること
-
1
修正版へ更新する
AgenticSeekのリポジトリを、コミット409840c以降を含む状態まで更新し、llm_serverを再起動します。リリース番号での案内は公表されていないため、コミットで確認してください。
git log --oneline | grep 409840c -
2
待ち受けポートの公開範囲を確認する
llm_serverのポートが社外や不要なネットワークに開いていないかを確認します。必要がなければファイアウォールで遮断し、利用元を限定します。
-
3
デバッグモードの設定を確認する
llm_server/app.pyでdebugが有効のまま起動していないかを確認します。独自に改変している場合は、修正が反映されているかも見ます。
grep -n "debug" llm_server/app.py -
4
露出していた期間の痕跡を調べる
ポートが外部に届いていた場合は、見覚えのない接続元からのアクセス、予期しないプロセスの起動、ログの不審な記録がないかを確認します。侵害が疑われる場合は、ホスト上のAPIキーなどの認証情報を差し替えます。
すぐ更新できないとき
すぐに更新できない場合は、llm_serverのポートをファイアウォールやセキュリティグループで遮断し、必要な端末からだけ届くようにします。ローカル環境だけで使うなら、外部に公開しない構成にします。これは一時しのぎであり、修正版への更新が根本的な対策です。
背景
llm_serverのような、AIモデルの推論を受け持つ社内向けのサーバーは、試験的に立てた環境が部署の枠を越えて使われたり、そのまま長く残ったりしがちです。こうしたサーバーは、モデルの動作を試すためのものとして、認証や公開範囲の管理が後回しにされることがあります。
FlaskなどのWebフレームワークで、開発用のデバッグモードを有効にしたまま公開してしまう問題は、以前から繰り返し指摘されてきました。デバッガーは画面からコードを実行できるため、外部に届くと遠隔コード実行につながります。PINによる保護はありますが、あくまで補助的なもので、公開してよい理由にはなりません。
よくある質問
Q.自分の端末だけで動かしている場合も対象ですか。
Q.PINがあれば安全ではないのですか。
Q.実際に攻撃されていますか。
まだ分かっていないこと
- 実際の攻撃での悪用の有無は公表されておらず、悪用される見込みを示すEPSSの値も示されていません。
- リリース番号での修正版は公表されておらず、修正はコミット単位で示されています。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| Fosowl | AgenticSeek |
409840c033851d861c5c83a91c05fd4a2a75a096 未満 |
409840c033851d861c5c83a91c05fd4a2a75a096 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
AgenticSeek before commit 409840c contains a remote code execution vulnerability because llm_server/app.py hardcodes Flask debug mode while binding to all interfaces. Attackers who reach the server port and obtain the derivable Werkzeug debugger PIN can execute Python code and operating system commands with llm_server privileges.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- advisory vulncheck.com
- advisory nvd.nist.gov
- advisory github.com
- package github.com
- patch github.com
- patch github.com
- web github.com
- web github.com