萬聖節特惠不給糖,就修片!三檔同時降價,永久授權立省 $30截至 11 月 2 日 23:59(美西時間)

查看定價

別讓桌面應用程式變成內網掃描器:AI Agent 的 SSRF 防護

AI 助理可能把指向你家路由器的連結交給桌面應用程式。KwaFlux 如何像瀏覽器一樣解析主機、再次檢查 DNS 解析結果,以及防護範圍到哪裡為止。

重點速覽

  • 如果 AI 助理能要求桌面應用程式抓取連結,一段被動過手腳的指令,就能讓它連向你的路由器、本機服務或雲端中繼資料位址,而不是影片。
  • 同一個位址有很多種寫法:127.1、2130706433、0x7f000001 和 [::ffff:127.0.0.1] 都會連到這台電腦。KwaFlux 用瀏覽器的方式解析主機名稱,所以每一種寫法都會還原成它真正代表的位址再檢查。
  • 下載即將開始時,KwaFlux 還會解析主機名稱;如果名稱指向這台電腦或私人網路,就會拒絕,但不會擋到代理工具在 fake-IP 模式下使用的位址範圍。
  • 下載過程中的重新導向和 DNS rebinding 目前尚未涵蓋。我們直接說清楚,這兩項已列入我們的開發計畫。

AI 助理要求 KwaFlux 下載連結時,負責連線的是 KwaFlux 的下載引擎。這個引擎在你的電腦上、在你的網路裡執行。如果連結指向的是 http://192.168.1.1/,而不是影片頁面,不夠謹慎的應用程式就會二話不說,替 AI 助理連到你的路由器。

KwaFlux 會阻止 AI 助理提交的連結連到這台電腦和私人網路。以下說明做法,以及這項防護在哪裡止步。

本文會說明:SSRF 對桌面應用程式代表什麼、為什麼封鎖清單擋不住同一位址的其他寫法、KwaFlux 如何同時檢查寫出來的主機和解析後的位址,以及哪些情況仍有缺口。

目錄

  1. 什麼是 SSRF?
  2. 為什麼由 AI 操作的桌面應用程式會暴露在風險中
  3. 同一個位址,很多種寫法
  4. 第 1 層:用瀏覽器的方式解析主機
  5. 第 2 層:檢查名稱解析到哪裡
  6. fake-IP 例外
  7. 防護在哪裡止步
  8. 常見問題

什麼是 SSRF?

伺服器端請求偽造(SSRF)是一種攻擊:有人讓某個程式把請求送到攻擊者指定的目的地,通常是攻擊者自己無法直接連到的地方,例如同一台機器上的服務或內部網路。

這個名稱源自網頁伺服器,但只要是替別人抓取 URL 的程式,都適用同樣的模式。MCP 的安全指引列出了常見的目標:像 http://192.168.1.1/admin 這樣的內部 IP、位於 http://169.254.169.254/ 的雲端中繼資料端點,以及像 http://localhost:6379/ 這樣的 localhost 服務。

為什麼由 AI 操作的桌面應用程式會暴露在風險中

有三個條件同時成立:

  1. 應用程式會抓取 URL。 KwaFlux 的檔案下載功能,會連到交給它的任何連結。
  2. 應用程式位在你的網路裡。 從你的電腦看出去,192.168.x.x 是你的路由器、NAS 或印表機,而 127.0.0.1 則是你在本機執行的每一項服務。
  3. 連結可能來自模型讀到的文字。 影片說明或網頁可以叫 AI 助理「先檢查這個連結」。這是怎麼發生的,請見網路影片標題中的提示詞注入。

抓取內部位址的下載引擎,也許不會把回應顯示給任何人看,但即使只是一則錯誤訊息,也能讓攻擊者知道那個位址上有沒有裝置。這就是我們說的,把桌面應用程式變成內網掃描器。

同一個位址,很多種寫法

用字串比對封鎖 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

除了最後兩列,每一列都會連到這台電腦。10.0.0.1 是私人位址,而 169.254.169.254 是雲端平台用來提供執行個體中繼資料的鏈路本機位址。

WHATWG URL 標準說明了原因:以 0x 開頭的部分以十六進位解讀,以 0 開頭的部分以八進位解讀,而不滿四段的位址,會由最後一段補滿剩下的位元組。OWASP 的 SSRF 防範指南也針對同樣的「Hex、Octal、Dword」編碼提出警告,MCP 的安全指引則補充:「避免自行實作 IP 驗證。攻擊者會利用自訂解析器經常漏掉的編碼技巧(八進位、十六進位、IPv4 對映的 IPv6)。」

第 1 層:用瀏覽器的方式解析主機

KwaFlux 不比對字串。它用和瀏覽器相同的規則解析主機,再檢查解析結果:

  • WHATWG 主機解析會在任何檢查之前,把簡寫、八進位與十六進位的部分、單一數字的位址,以及結尾的點,轉換成真正的位址。
  • 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。

這符合 OWASP 的建議:檢查時「使用該方法或程式庫的輸出值作為 IP 位址」,而不是使用者輸入的文字。

第 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 防護很容易被講得太過頭。

  • 涵蓋的範圍: AI 助理提交的連結。寫出來的主機,以及名稱解析出的位址,兩者都會檢查。
  • 尚未涵蓋的範圍: 下載過程中發生的事。連結在檢查時可能解析到公開位址,片刻之後卻解析到私人位址(DNS rebinding);公開頁面也可能重新導向到內部位址。MCP 的安全指引把前者稱為檢查時間與使用時間不一致(time-of-check to time-of-use)的問題,OWASP 也指出:「在驗證與連線之間,若再進行一次未經檢查的 DNS 查詢,就可能繞過這些檢查。」

根本的解法,是讓下載引擎的連線都經過一個元件,在每次連線(包括每一次重新導向)建立的當下進行檢查。這已列入我們的開發計畫。我們還沒做,是因為這會改變下載引擎在三個不同程式碼庫裡連上網路的方式,也會影響每一次下載,包括你自己啟動的下載,所以需要獨立的版本和測試。

所以準確的說法是:KwaFlux 會阻止 AI 助理指使它連到這台電腦和私人網路上的位址。 這並不代表任何連線都不可能最後落到那裡,我們也不會把它說成「只連公開網際網路」。

在此之前,還有另外兩項限制可以幫上忙。Agent 下載預設關閉,而在每次確認模式下,任何內容被抓取之前,你都會先看到連結。請見為什麼 AI 不能替你核准下載。

結語

檢查的是位址,不是寫法。用瀏覽器的方式解析主機、在下載開始前檢查名稱解析到哪裡、不去動代理工具的 fake-IP 範圍,並且清楚交代還有哪些缺口。KwaFlux 就是這樣,不讓 AI 助理給的連結把它變成你網路裡的掃描器。

讓 AI 助理只抓該抓的東西

KwaFlux 的本機 MCP 伺服器,讓 Codex、Claude、Cursor 和其他 MCP 應用程式能處理你的檔案,並檢查 AI 助理提交的每一個連結。AI 處理在你自己的 GPU 上執行,媒體檔案不會為了處理而上傳。可在 Windows 10(64 位元,1809 或更新版本)、Windows 11,以及搭載 Apple Silicon 的 macOS 12 或更新版本上執行。匯入檔案和瀏覽應用程式都不需要帳號。僅在匯出、轉換、檔案修復和從連結下載檔案時需要登入並購買付費方案。

下載 KwaFlux · 查看方案

用你自己的素材試試效果

下載 KwaFlux,付費前先用自己的素材免費預覽效果——無需註冊,在你的 GPU 上處理,處理不需要上傳媒體檔案。 影片預覽可選 1、3或5 秒;防抖預覽可選 5、15或30 秒。

常見問題

SSRF 用白話來說是什麼?

就是誘使某個程式替你發出請求,送到你自己連不到的地方,例如路由器的管理頁面,或同一台電腦上的服務。任何替別人抓取連結的程式,都可能被這樣利用。

為什麼 127.1 等於 127.0.0.1?

因為遵循 WHATWG 標準的 URL 解析器,允許 IPv4 位址少於四段,並由最後一段補滿剩下的位元組。127.1 會變成 127.0.0.1。十六進位和八進位的寫法也會被接受。

封鎖私人 IP 位址能防止 DNS rebinding 嗎?

不能。rebinding 會在檢查和連線之間,改變名稱解析的結果。要防止它,就得在連線當下檢查,例如固定使用解析出的位址,或讓連線經過一個逐一檢查連線的出口代理。

198.18.0.0/15 這個範圍是做什麼用的?

它依照 RFC 2544 保留給網路效能測試使用。有些代理工具也把它用在 fake-IP 模式,以這個範圍內的位址回覆 DNS 查詢。它不是私人或迴路範圍。

桌面應用程式也需要擔心 SSRF 嗎?

需要,前提是它會抓取別人能影響的 URL。桌面應用程式位在你的家用或辦公室網路裡,所以被抓取的內部位址,能連到網站連不到的裝置。請見如何保護本機的 AI 通道。

參考資料

  1. OWASP, SSRF prevention guide (encodings; DNS rebinding; redirects) (2026-10-25 查閱)
  2. WHATWG, "URL Standard" (IPv4 parser; IPv4 number parser; ends-in-a-number checker) (2026-10-25 查閱)
  3. 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 查閱)
  4. Model Context Protocol, security guidance for implementers (2026-07-28; Server-Side Request Forgery) (2026-10-25 查閱)
  • 信任
  • MCP 協定

KwaFlux 作者兼編輯。文章經 KwaFlux 編輯部審閱,依據產品研究紀錄與公開發布的規格。