デスクトップアプリを社内ネットワークのスキャナーにしない:AI エージェントのための SSRF 対策
AI アシスタントはルーターへのリンクもアプリに渡せてしまいます。ホスト名をブラウザーと同じく解析し DNS も再確認する KwaFlux のしくみと、守りの限界を解説。
要点
- AI アシスタントがデスクトップアプリにリンクの取得を頼めるなら、仕込まれた命令によって、動画の代わりにルーター、ローカルのサービス、クラウドのメタデータのアドレスへ向かわされることがあります。
- 同じアドレスでも書き方はいくつもあります。
127.1、2130706433、0x7f000001、[::ffff:127.0.0.1]は、どれもこのパソコンに届きます。KwaFlux はホスト名をブラウザーと同じ方法で解析するので、どの表記も実際のアドレスとして確認されます。 - ダウンロードを始める直前には、KwaFlux はホスト名の名前解決も行い、その名前がこのパソコンやプライベートネットワークを指していれば拒否します。その際、プロキシツールが fake-IP モードで使うアドレス範囲はブロックしません。
- ダウンロード中のリダイレクトと DNS リバインディングには、まだ対応していません。そのことははっきりお伝えしており、どちらも今後の予定に入っています。
AI アシスタントが KwaFlux にリンクのダウンロードを頼むと、接続するのは KwaFlux のダウンロードエンジンです。このエンジンは、あなたのパソコンの上、つまりあなたのネットワークの内側で動いています。リンクが動画のページではなく http://192.168.1.1/ を指していたら、不用心なアプリはアシスタントの代わりに、何の疑いもなくあなたのルーターへ接続してしまいます。
KwaFlux は、アシスタントが送ったリンクがこのパソコンやプライベートネットワークに届かないようにしています。その方法と、守りがどこまで及ぶのかを説明します。
この記事では、デスクトップアプリにとっての SSRF の意味、ブロックリストがアドレスの別表記に弱い理由、KwaFlux が書かれたホストと名前解決後のホストの両方を確認する方法、そしてまだ対応できていないケースを解説します。
目次
- SSRF とは?
- AI が操作するデスクトップアプリが狙われる理由
- 1 つのアドレス、いくつもの表記
- レイヤー 1:ホストをブラウザーと同じ方法で解析する
- レイヤー 2:名前解決の結果を確認する
- fake-IP の例外
- 守りが及ばないところ
- よくある質問
SSRF とは?
サーバーサイドリクエストフォージェリ(SSRF)とは、攻撃者が選んだ宛先へプログラムにリクエストを送らせる攻撃です。宛先はたいてい、同じマシン上のサービスや社内ネットワークなど、攻撃者が直接はアクセスできない場所です。
名前は Web サーバーに由来しますが、誰かの代わりに URL を取得するプログラムなら、どれにも同じパターンが当てはまります。MCP のセキュリティガイダンスは、よくある標的として、http://192.168.1.1/admin のような内部 IP、http://169.254.169.254/ にあるクラウドのメタデータエンドポイント、http://localhost:6379/ のような localhost のサービスを挙げています。
AI が操作するデスクトップアプリが狙われる理由
3 つの条件がそろっています。
- アプリが URL を取得する。 KwaFlux のファイルダウンロード機能は、渡されたリンクに接続します。
- アプリがあなたのネットワークの内側にある。 あなたのパソコンから見れば、
192.168.x.xはルーターや NAS、プリンターであり、127.0.0.1はローカルで動かしているあらゆるサービスです。 - リンクが、モデルの読んだテキストから来ることがある。 動画の説明文や Web ページが、アシスタントに「まずこのリンクを確認して」と指示できます。そのしくみはWeb の動画タイトルに潜むプロンプトインジェクションをご覧ください。
内部のアドレスを取得したダウンロードエンジンが、その応答を誰にも見せないとしても、エラーメッセージだけで、そのアドレスに機器があるかどうかが攻撃者に伝わることがあります。デスクトップアプリを社内ネットワークのスキャナーにしてしまう、というのはこういう意味です。
1 つのアドレス、いくつもの表記
127.0.0.1 と localhost を文字列の比較でブロックするだけでは足りません。URL パーサーは、同じアドレスをほかにもさまざまな書き方で受け付けます。いくつかの表記を Node.js 20 の WHATWG URL パーサーに通すと、次のようになります。
| リンクに書かれた表記 | 解析後のホスト |
|---|---|
http://127.0.0.1/ | 127.0.0.1 |
http://127.1/ | 127.0.0.1 |
http://2130706433/ | 127.0.0.1 |
http://0x7f000001/ | 127.0.0.1 |
http://0x7f.0.0.1/ | 127.0.0.1 |
http://0177.0.0.1/ | 127.0.0.1 |
http://017700000001/ | 127.0.0.1 |
http://127.0.0.1./ | 127.0.0.1 |
http://[0:0:0:0:0:0:0:1]/ | [::1] |
http://[::ffff:127.0.0.1]/ | [::ffff:7f00:1] |
http://10.1/ | 10.0.0.1 |
http://0xa9fea9fe/ | 169.254.169.254 |
最後の 2 行を除くすべての行が、このパソコンに届きます。10.0.0.1 はプライベートアドレスで、169.254.169.254 はクラウドプラットフォームがインスタンスのメタデータに使うリンクローカルアドレスです。
理由は WHATWG の URL Standard に書かれています。0x で始まる部分は 16 進数、0 で始まる部分は 8 進数として読まれ、部分が 4 つに満たないアドレスでは、最後の部分が残りのバイトを埋めます。OWASP の SSRF 対策ガイドも同じ「Hex, Octal, Dword」のエンコードについて警告しており、MCP のセキュリティガイダンスはこう付け加えています。「IP の検証を自前で実装するのは避けること。攻撃者は、独自のパーサーが見落としがちなエンコードの手口(8 進数、16 進数、IPv4 射影 IPv6)を悪用する」。
レイヤー 1:ホストをブラウザーと同じ方法で解析する
KwaFlux は文字列を比較しません。ブラウザーと同じルールでホストを解析し、その結果を確認します。
- WHATWG のホスト解析によって、短縮形、8 進数や 16 進数の部分、1 つの数値だけのアドレス、末尾のドットを、確認の前に実際のアドレスへ変換します。
- IPv6 は 16 バイトすべてを確認するので、
[::ffff:7f00:1]のような IPv4 射影の形式も、見慣れない IPv6 アドレスとして見過ごされることなく、ループバックとして検出されます。 - **
%を含むホストは拒否します。** これで、IPv6 のゾーン ID や、ホスト部分でのパーセントエンコードを使った手口を排除できます。 - ループバック、プライベート、リンクローカルのアドレスは拒否します。
127.0.0.0/8、::1、10.0.0.0/8、192.168.0.0/16、169.254.0.0/16などです。
これは、ユーザーが入力したテキストではなく、「メソッドやライブラリの出力値を IP アドレスとして使う」ようにという OWASP の助言に沿ったものです。
レイヤー 2:名前解決の結果を確認する
ホスト名は、無害に見えてもネットワークの内側を指していることがあります。router.example.net の DNS レコードが 192.168.1.1 になっていることもありえます。
そこで、ログイン済みのダウンロードをキューに入れる直前に、KwaFlux はホスト名の名前解決も行います(タイムアウトは 2 秒)。名前の解決先がこのパソコンやプライベートネットワークなら、ダウンロードは拒否されます。
DNS レコードが 127.0.0.1 やプライベートアドレスを指している公開ホスト名は、この確認で検出されます。
fake-IP の例外
プロキシツールの中には「fake-IP」モードで動くものがあります。すべての DNS 問い合わせに 198.18.0.0/15 のアドレスで応答し、実際の接続は自分で中継するしくみです。IANA のレジストリはこの範囲を「Benchmarking」(RFC 2544)としており、プライベートやループバックの範囲には分類していません。
KwaFlux がこの範囲を内部として扱うと、こうしたプロキシを使っているパソコンでは、どのダウンロードも失敗してしまいます。そのため、名前解決後のアドレスの確認では、この範囲を対象外にしています。
守りが及ばないところ
SSRF 対策は実際以上に大きく見せやすいので、ここでは正確にお伝えします。
- 対応している範囲: アシスタントが送ったリンク。書かれたままのホストと、その名前の解決先のアドレスの両方を確認します。
- まだ対応していない範囲: ダウンロード中に起きること。確認した時点では公開アドレスに解決されたリンクが、少し後にはプライベートアドレスに解決されることがあります(DNS リバインディング)。また、公開ページが内部のアドレスへリダイレクトすることもあります。MCP のセキュリティガイダンスは前者を TOCTOU(確認時と使用時のずれ)の問題と呼び、OWASP は「検証と接続の間に確認されない 2 回目の DNS 問い合わせがあると、こうしたチェックをすり抜けられる」と指摘しています。
根本的な対策は、ダウンロードエンジンの接続を、リダイレクトのたびの接続も含めて、接続が行われるその時点ですべて確認するコンポーネントに通すことです。これは今後の予定に入っています。まだ実施していないのは、3 つの別々のコードベースでダウンロードエンジンのネットワークへのつなぎ方を変えることになり、あなた自身が始めるものも含めてすべてのダウンロードに影響するため、専用のリリースとテストが必要だからです。
ですから、正確に言えばこうなります。KwaFlux は、AI アシスタントがこのパソコン上やプライベートネットワーク上のアドレスへ KwaFlux を向かわせるのを防ぎます。 どんな接続もそこへ行き着くことはありえない、と約束するものではなく、私たちも「公開インターネット専用」とは説明していません。
それまでの間は、ほかに 2 つの制限が役立ちます。エージェントによるダウンロードは初期設定でオフになっており、毎回確認モードでは、何かが取得される前にあなたがリンクを確認できます。AI がダウンロードを代わりに承認できない理由をご覧ください。
まとめ
確認すべきなのは表記ではなくアドレスです。ホストはブラウザーと同じ方法で解析し、ダウンロードを始める前に名前の解決先を確認し、プロキシの fake-IP の範囲には手を出さず、まだ対応できていないことははっきり伝える。KwaFlux はそうやって、アシスタントのリンクによって自分がネットワークのスキャナーにされるのを防いでいます。
アシスタントに取得させるのは、取得してよいものだけ
KwaFlux のローカル MCP サーバーを使うと、Codex、Claude、Cursor などの MCP アプリからファイルを扱えます。アシスタントが送ったリンクは、すべて KwaFlux が確認します。AI 処理はご自身の GPU 上で実行され、メディアファイルが処理のためにアップロードされることはありません。Windows 10(64 ビット、バージョン 1809 以降)、Windows 11、Apple Silicon 搭載の macOS 12 以降で動きます。ファイルの読み込みやアプリの操作にアカウントは不要です。ログインと有料プランが必要なのは、書き出し、変換、ファイル修復、リンクからのファイルダウンロードだけです。
お手元の素材で効果を試す
KwaFlux を入手し、支払う前にお手元の素材で効果を無料プレビュー。アカウント不要で、処理はお使いの GPU で行い、処理のためにメディアをアップロードすることはありません。 動画のプレビューは 1、3、または5 秒、手ぶれ補正のプレビューは 5、15、または30 秒から選べます。
よくある質問
SSRF とは何か、わかりやすく言うと?
プログラムをだまして、自分では届かない場所、たとえばルーターの管理画面や同じパソコン上のサービスに、代わりにリクエストを送らせることです。誰かの代わりにリンクを取得するプログラムなら、どれもこのように悪用されるおそれがあります。
127.1 が 127.0.0.1 と同じになるのはなぜ?
WHATWG の標準に従う URL パーサーでは、IPv4 アドレスの部分が 4 つに満たなくてもよく、最後の部分が残りのバイトを埋めるからです。127.1 は 127.0.0.1 になります。16 進数や 8 進数の部分も受け付けられます。
プライベート IP アドレスをブロックすれば DNS リバインディングは防げる?
いいえ。リバインディングは、確認から接続までの間に名前の解決先を変えます。防ぐには接続の時点で確認する必要があります。たとえば、解決したアドレスを固定するか、接続のたびに確認する送信プロキシを経由させます。
198.18.0.0/15 の範囲は何に使われる?
RFC 2544 でネットワークのベンチマーク用に予約されています。一部のプロキシツールは fake-IP モードにもこの範囲を使い、DNS 問い合わせにこの範囲のアドレスで応答します。プライベートやループバックの範囲ではありません。
デスクトップアプリでも SSRF を気にするべき?
はい。ほかの誰かが影響を与えられる URL を取得するなら気にするべきです。デスクトップアプリは家庭やオフィスのネットワークの内側にあるので、取得した内部のアドレスから、Web サイトでは届かない機器に届いてしまいます。ローカルの AI チャネルを守る方法をご覧ください。
参考資料
- OWASP, SSRF prevention guide (encodings; DNS rebinding; redirects) (2026-10-25 閲覧)
- WHATWG, "URL Standard" (IPv4 parser; IPv4 number parser; ends-in-a-number checker) (2026-10-25 閲覧)
- IANA, "IPv4 Special-Purpose Address Registry" (198.18.0.0/15 Benchmarking, RFC 2544; 127.0.0.0/8; 169.254.0.0/16; last updated 2025-10-09) (2026-10-25 閲覧)
- Model Context Protocol, security guidance for implementers (2026-07-28; Server-Side Request Forgery) (2026-10-25 閲覧)


