Trend Micro 把這個部落格標記為 Disease Vector——鎖定確切 URL 重新分類後解決了
Trend Micro 的 Site Safety Center 把這個部落格的 Service Worker 判定為 Disease Vector。交叉比對另外五個服務並重新分類確切網址後解決了。

本頁目錄
引言
我自己也在用 Trend Micro,所以搜尋結果旁的標記我一向會多看一眼。某天我在 Google 的搜尋結果發現這個部落格被標記為灰色,而不是我平常熟悉的安全綠色標記。

我想要的是綠色勾勾,於是把網域提交給 Trend Micro 的 Site Safety Center 申請重新分類, 結果卻比原本更糟糕,評等變成 Dangerous,內容類型被歸類為 Disease Vector。


這篇文章記錄了後續的調查過程,以及最終把評等改回 Safe 的解決方法。
實測結果:91 家廠商中有 0 家判定為惡意
在繼續調查之前,我想先確認網站是否真的遭到入侵,於是把 https://oharu121.com/ 丟進
VirusTotal 檢查,它會一次比對 91 家獨立的資安廠商。結果每一家都判定為乾淨:91 家中有
0 家認為有問題。

這解答了一個疑問,卻帶出另一個更棘手的問題:為什麼只有 Trend Micro 的判定跟其他所有 服務都不一樣。
逐一檢查其他分類服務:Google、Trellix、McAfee 與 Microsoft
VirusTotal 的 91 家廠商都是惡意程式掃描引擎,跟會在搜尋結果旁顯示標記的信譽與分類資料庫 (Trend Micro 的 Site Safety Center 也是其中之一)並不是同一回事。這些服務跑在各自獨立 的基礎架構上,審核流程也各不相同。所以我一家一家分別去查。
Google Safe Browsing
Google Safe Browsing 決定了 Chrome、Firefox 與 Safari 顯示的警告頁面,對一般訪客來說 影響最大,而 Search Console 的安全性問題報告與公開的 Transparency Report,兩者的結果 一致:沒有偵測到問題,也沒有發現不安全的內容。

Trellix 與 McAfee:分家後的兩個資料庫
McAfee 的網頁信譽資料庫 以前只有這一個,但在 2024 年企業版部門獨立成 Trellix 之後,就不再跟 消費版的 McAfee 品牌共用資料,因此查了其中一邊,並不代表另一邊也是同樣的判定。
Trellix 的 TrustedSource 把這個網域標記為「Uncategorized URL」,風險等級「Medium Risk」,而分家後獨立出來的 McAfee 自家 Site Lookup,則顯示「Uncategorized」,信任等級 「Unverified」。兩邊都沒有判定為危險,但也都完全沒有這個網域的資料。


Microsoft SmartScreen:沒有主動申請的管道
Microsoft 的檔案提交入口一開始看起來像是正確的申請管道,但 wdsi/filesubmission 是設計來
分析執行檔惡意程式的,而不是拿來分析給網址用的。
網站回報表單其實是針對使用者已經看過的警告所設計的申訴機制,沒有任何管道可以主動請 Microsoft 為一個還沒被標記的網站背書,證明它可信。
SmartScreen 本身的信譽是被動累積的,依據網域註冊時間、憑證有效性與爬取歷史而定,所以 既沒有東西可以申訴,也沒有管道可以提交。
自動掃描工具眼中的 Service Worker
前面的檢查都沒能解釋為什麼只有 Trend Micro 把這個部落格標記成危險網站。於是我去分析了離線 閱讀功能背後的程式碼:Service Worker 本身,以及它的註冊腳本。
fetch 處理常式在做任何事之前,會先過濾出同源請求:
if (url.origin !== self.location.origin) return;這段程式碼完全不會呼叫第三方伺服器、注入腳本,也不會執行 eval,只會快取網站自己的
頁面與資源,僅此而已。不過,註冊腳本還會要求永久儲存空間,好讓離線快取撐過 Safari 七天
閒置就清除的機制:
if (!storage?.persist) return;if (await storage.persisted?.()) return;storage.persist().catch(() => {});不管背後是為了離線閱讀而快取文章的 PWA,還是想在分頁關閉後繼續存活的詐騙頁面, 註冊一個 Service Worker、要求永久儲存空間、再提供一個安裝提示,寫出來的程式碼長得 一模一樣。
直接點名 sw.js 的封鎖記錄
幾週後這個猜想得到證實:我自己電腦上那套 Trend Micro 真的擋下了一次連線,而封鎖 記錄明確點名了是哪個資源:
| 欄位 | 值 |
|---|---|
| URL | https://oharu121.com/sw.js |
| 威脅類型 | 不正プログラム配信(惡意程式散布) |
| 掃描類型 | Web レピュテーションの評価(Web 信譽評估) |
| 處理 | ブロック(封鎖) |

這是第一次有檢查工具點名具體的檔案,而不是整個網域;而我第一次提交的重新分類申請是針對 根網域,完全沒有動到 Trend Micro 資料庫裡屬於這個檔案的那筆紀錄。
重新分類的是檔案,不是網域
於是我提交了第二次重新分類申請,這次直接針對 https://oharu121.com/sw.js。備註欄裡
附上了 VirusTotal 的結果,以及這個檔案功能的簡單說明。
| 申請 | 目標 | 結果 |
|---|---|---|
| 第一次,9 月 2 日 | https://oharu121.com/ | Dangerous、Disease Vector |
| 第二次,9 月 3 日 | https://oharu121.com/sw.js | Safe、Computers/Internet;Noteworthy |

改變結果的關鍵,是鎖定確切被標記的資源,而不是整個網域。
總結
PWA 的 Service Worker 被誤判為「惡意程式散布」,追根究柢是特徵比對出了問題,而不是真的 遭到感染。註冊 Service Worker、要求永久儲存空間、提供安裝提示,這些行為在掃描工具眼 中,不管背後是為了離線閱讀還是詐騙頁面想賴著不走,看起來都一樣。
跟其他信譽服務一一比對之後,可以確認這個標記只出現在 Trend Micro,並不是真的遭到 入侵;而最後真正有效的解決方法,範圍比第一次嘗試更窄:重新分類掃描工具點名的那個確切 檔案,而不是它所在的網域。



