← All posts / Research

824 個 IP 偽裝成 GPTBot 與 ClaudeBot 獵取你的 .env 檔案:GreyNoise 揭露假 AI 爬蟲攻擊行動

GreyNoise 指出,來自 824 個位址的掃描器偽造了 13 個 AI 爬蟲身分,專門請求 .env 檔案、雲端金鑰與密碼庫——而這些位址沒有一個落在 OpenAI、Anthropic、Google、Perplexity 或 Amazon 公布的官方範圍內。

824 個 IP 偽裝成 GPTBot 與 ClaudeBot 獵取你的 .env 檔案:GreyNoise 揭露假 AI 爬蟲攻擊行動

2026 年經營網站的人應該對這句話感到不安:你的伺服器 log 裡幾乎肯定有來自 GPTBot、ClaudeBot 與 Google 爬蟲的流量,而在今年夏天某個為期四週的區間內,其中一部分流量一直在謊報自己的身分。

2026 年 8 月 28 日,威脅情資公司 GreyNoise 發表了一份調查,讀起來像是一場針對基礎設施(而非收件匣)的網路釣魚。在 7 月 28 日至 8 月 23 日之間,一個自動化掃描器叢集偽造了隸屬於八家公司、共 13 個 AI 爬蟲的 User-Agent 字串——包括 OpenAI、Anthropic、DeepSeek、Google 與 Perplexity——並利用這些竊取來的身分,去請求任何正當爬蟲都不會碰的檔案:.env 設定檔、雲端存取金鑰、私鑰與密碼庫。

數據相當精確。有六個偽造的爬蟲名稱(分屬四家 AI 公司)從同樣 824 個 IP 位址、以幾乎一致的流量抵達,全部 riding 在單一 HTTP 用戶端指紋上。GreyNoise 指出,這個指紋在之前 90 天內曾攜帶超過 1,500 種不同的 User-Agent 字串——其中大多數偽裝成普通瀏覽器。活動量最大的一天是 8 月 23 日,顯示觀測窗口結束時,這場行動仍在加速。

偽裝為什麼有效

這個手法的機制簡單到令人尷尬。每個造訪網站的程式都會在 HTTP 請求的一行裡自我介紹——也就是 User-Agent。Chrome 說自己是 Chrome;Googlebot 說自己是 Googlebot;Anthropic 的爬蟲說自己是 ClaudeBot。但正如 GreyNoise 研究人員所寫的,請求本身沒有任何東西能證明這是真的。User-Agent 是客戶端自行填寫的 header,任何腳本都能在毫秒之間把它設成任何字串。

這個謊言此刻特別危險的原因在於:過去兩年,AI 公司一直在說服網站經營者把他們的爬蟲加入白名單。希望內容出現在 ChatGPT 回答裡的出版商會放行 GPTBot;WAF 規則、機器人管理政策與限流豁免越來越常以爬蟲名稱為依據。這場假爬蟲行動正是把這份信任武器化:研究人員寫道,「只檢查名稱、不檢查來源位址的控制措施,可以透過偽造被繞過」。

而且偽造得很細心。冒牌者的 ClaudeBot 字串與 Anthropic 官方公布的 User-Agent 逐字元完全一致。任何以 User-Agent 為依據的規則都無法區分兩者,因為標籤本身一模一樣。

GreyNoise 如何確定它們是假的

三條獨立的證據線讓這場戲穿幫。

第一,行為不對勁。 真正的爬蟲幾乎第一件事就是讀 /robots.txt——那是網站宣示規則的檔案;Anthropic 的真爬蟲在同一期間對它的請求量高於任何其他路徑,佔總流量的 12%。而這六個偽造名稱從未請求過一次 /robots.txt。它們要求的是憑證路徑:/.env、/app/.env、/api/.env、/backend/.env、/.env.local、/.env.production、/.env.old、/.env.bak、/.aws/credentials,甚至還有 /.env.swp——vim 的交換檔。在這個指紋的全部流量中,針對機密檔案的請求「以百萬計」。

第二,位址對不上。 這四家 AI 公司(外加 Amazon)都會公布爬蟲使用的 IP 範圍——Anthropic 在 claude.com/crawling/bots.json、OpenAI 在 openai.com/gptbot.json 等等。GreyNoise 抓取了每一份清單,並把 824 個位址逐一拿去比對。沒有一個位址吻合。 與此同時,同一期間確實有數千個帶著 ClaudeBot 名稱的連線來自 Anthropic 真正公布的範圍——真爬蟲與冒牌者並行運作,只有來源位址能區分。

第三,有一個名稱根本不可能。 掃描器還送出了 263,849 個帶著「Google-Extended」的連線——那是出版商寫在 robots.txt 裡、用來退出 AI 訓練的權杖。Google 明確記載它沒有獨立的 HTTP 請求 User-Agent 字串,沒有任何 Google 爬蟲會發送它。這 263,849 個連線在定義上就全部是偽造的。

這些演員還偽造了兩個 Amazon 爬蟲名稱,流量甚至比那六個 AI 名稱更大——用的是 Amazon 根本沒記載的 User-Agent 字串。

為什麼封鎖很難

最直覺的反應——封鎖 IP——在這裡恰好失效,而且很可能是設計好的。824 個位址散布在 795 個不同的 /24 網段,沒有單一網路或 ASN 可以封鎖。GreyNoise 公布了完整位址清單、所有被請求的憑證路徑,以及半遮蔽的冒牌者 JA4H 指紋 ge11nn05enus_f3bb7a...,並建議將它用於調查而非封鎖。

GreyNoise 對於它「沒有」聲稱的事也很謹慎:資料中沒有任何東西顯示有檔案真的被回傳,也沒有指出任何具名組織受到影響,而且該公司不打算歸咎於任何人。

實際上該怎麼做

GreyNoise 的建議按受眾分類,恰好構成 AI 時代最新信任問題的檢查清單:

  • 安防營運(SecOps): 永遠不要把 User-Agent 字串當成身分。將連線位址拿去比對「該名稱對應的」公布清單——每個爬蟲有自己的清單,看到 GPTBot 就對 gptbot.json 查,不要混著查。對任何請求 /.env、/.aws/credentials 或 /.git/config 的行為設警報;沒有任何爬蟲有理由要這些。此外要跨越多天、而非單次造訪來判斷 robots.txt 行為,因為真爬蟲會快取該檔案。
  • 安防主管: 找出所有「User-Agent 字串會授予存取或豁免控制」的地方,在背後加上真正的查核。為每家廠商的位址清單指定負責人與重新抓取排程——過期的清單會把真爬蟲變成誤報。
  • 網站與平台管理員: 從根本把 .env、.git 與雲端憑證檔移出 web root。輪替任何曾可經由網頁路徑讀取的雲端金鑰,並假設可讀的都已經被讀走。研究人員也建議將 Vite 升級到修補版本(6.2.3、6.1.2、6.0.12、5.4.15、4.5.10),以封閉讓這類探測更容易得手的任意檔案揭露漏洞。

更大的圖像

這場行動降臨在一個正在笨拙地重新協商「誰可以爬誰」的網際網路上。AI 公司要存取權;出版商要付費或排除;robots.txt——這個 1994 年建立在君子協定上的慣例——忽然成了 AI 經濟的承重結構。GreyNoise 的發現揭示了當這份握手成為攻擊目標時會發生什麼:為歡迎 AI 爬蟲而建立的白名單變成攻擊面,而 AI 公司公布的驗證清單,成了網站經營者與「穿著友善名稱外衣的憑證獵捕掃描」之間唯一的防線。

破綻本身有種苦澀的諷刺。冒牌者不是被什麼精密指紋抓到的,而是被網路上最古老的規範——好機器人會先讀 robots.txt——出賣的。假貨跳過了這份禮貌,直奔金鑰而去。在 AI 代理 increasingly 憑自報名稱就從正門被放行的時代,這個教訓遠遠超越爬蟲的範疇:你能在 header 裡自行宣稱的身分,不是身分。去驗證位址,否則你信任的只是一個字串。