# Trend Micro 把這個部落格標記為 Disease Vector——鎖定確切 URL 重新分類後解決了

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

- Source: https://oharu121.com/zh-tw/blog/trend-micro-disease-vector-service-worker-false-positive/
- Published: 2026-09-21T03:00:32+09:00
- Tags: 安全, Service Worker

---
## 引言

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

*Image: 兩則 oharu tech blog 的 Google 搜尋結果，每則列表旁都顯示灰色圓形問號標記，而不是綠色勾勾*

我想要的是綠色勾勾，於是把網域提交給 [Trend Micro 的 Site Safety Center](https://global.sitesafety.trendmicro.com/) 申請重新分類，
結果卻比原本更糟糕，評等變成 Dangerous，內容類型被歸類為 **Disease Vector**。

*Image: Trend Micro Site Safety Center 寄來的郵件，顯示 oharu121.com 的重新分類結果：新的安全評等為 Dangerous，新的內容類型為 Disease Vector*

> **挖哩咧**
>
> **事態比想像中嚴重。** 這個部落格的 Google 搜尋結果，每一筆旁邊都開始出現紅色的
> 「×」標記，任何裝了 Trend Micro 瀏覽器擴充功能的訪客都看得到。

*Image: 兩則 oharu tech blog 的 Google 搜尋結果，皆以紅色標示，顯示紅色 X 圖示，而不是綠色勾勾或灰色問號*

這篇文章記錄了後續的調查過程，以及最終把評等改回 Safe 的解決方法。

## 實測結果：91 家廠商中有 0 家判定為惡意

在繼續調查之前，我想先確認網站是否真的遭到入侵，於是把 `https://oharu121.com/` 丟進
VirusTotal 檢查，它會一次比對 91 家獨立的資安廠商。結果每一家都判定為乾淨：**91 家中有
0 家**認為有問題。

*Image: oharu121.com 的 VirusTotal 報告，社群分數為 91 分之 0，列出的每家資安廠商都顯示「Clean」*

這解答了一個疑問，卻帶出另一個更棘手的問題：為什麼只有 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，兩者的結果
一致：**沒有偵測到問題，也沒有發現不安全的內容**。

*Image: Google Transparency Report 的 Safe Browsing 網站狀態頁面，顯示 oharu121.com 目前狀態為「未發現不安全內容」*

### Trellix 與 McAfee：分家後的兩個資料庫

[McAfee 的網頁信譽資料庫](https://sitelookup.mcafee.com/) 以前只有這一個，但在 2024 年企業版部門獨立成 Trellix 之後，就不再跟
消費版的 McAfee 品牌共用資料，因此**查了其中一邊，並不代表另一邊也是同樣的判定**。

[Trellix 的 TrustedSource](https://www.trustedsource.org/) 把這個網域標記為「Uncategorized URL」，風險等級「Medium
Risk」，而分家後獨立出來的 McAfee 自家 Site Lookup，則顯示「Uncategorized」，信任等級
「Unverified」。兩邊都沒有判定為危險，但也都完全沒有這個網域的資料。

*Image: Trellix TrustedSource 的 Customer URL Ticketing System 畫面，顯示 oharu121.com 為「Uncategorized URL」，信譽為「Medium Risk」*

*Trellix 的資料庫。*

*Image: McAfee 的 Customer URL Ticketing System 畫面，顯示 oharu121.com 為「Uncategorized URL」，信任等級為「Unverified」*

*McAfee 獨立出來的資料庫，不受上方 Trellix 結果影響。*

### Microsoft SmartScreen：沒有主動申請的管道

Microsoft 的檔案提交入口一開始看起來像是正確的申請管道，但 `wdsi/filesubmission` 是設計來
分析執行檔惡意程式的，而不是拿來分析給網址用的。

網站回報表單其實是針對使用者已經看過的警告所設計的申訴機制，**沒有任何管道可以主動請
Microsoft 為一個還沒被標記的網站背書，證明它可信**。

SmartScreen 本身的信譽是被動累積的，依據網域註冊時間、憑證有效性與爬取歷史而定，所以
既沒有東西可以申訴，也沒有管道可以提交。

## 自動掃描工具眼中的 Service Worker

前面的檢查都沒能解釋為什麼只有 Trend Micro 把這個部落格標記成危險網站。於是我去分析了離線
閱讀功能背後的程式碼：Service Worker 本身，以及它的註冊腳本。

fetch 處理常式在做任何事之前，會先過濾出同源請求：

```js title="scripts/sw/service-worker.js"
if (url.origin !== self.location.origin) return;
```

這段程式碼完全不會呼叫第三方伺服器、注入腳本，也不會執行 `eval`，只會快取網站自己的
頁面與資源，僅此而已。不過，註冊腳本還會要求永久儲存空間，好讓離線快取撐過 Safari 七天
閒置就清除的機制：

```js title="src/components/ServiceWorkerRegistration.astro"
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 信譽評估） |
| 處理 | ブロック（封鎖） |

*Image: Trend Micro 本機記錄檢視器，顯示一筆 Web 威脅防護記錄：2026 年 9 月 21 日凌晨 1 點 51 分 11 秒，oharu121.com/sw.js 遭到封鎖*

*同一次封鎖，在防毒軟體自己的歷史記錄裡的樣子。*

這是第一次有檢查工具點名具體的檔案，而不是整個網域；而我第一次提交的重新分類申請是針對
根網域，完全沒有動到 Trend Micro 資料庫裡屬於這個檔案的那筆紀錄。

> **話說**
>
> **這個失敗悄無聲息。** `ServiceWorkerRegistration.astro` 把註冊呼叫包在
> `.catch(() => {})` 裡，所以執行 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 |

*Image: Trend Micro Site Safety Center 寄來的郵件，顯示 oharu121.com/sw.js 的重新分類結果：新的安全評等為 Safe，新的內容類型為 Computers/Internet;Noteworthy*

> **讚啦**
>
> **成功了。** 十八天後，確認信寄來了：Trend Micro 已經把 `sw.js` 重新分類為 Safe。

**改變結果的關鍵，是鎖定確切被標記的資源，而不是整個網域。**

## 總結

PWA 的 Service Worker 被誤判為「惡意程式散布」，追根究柢是特徵比對出了問題，而不是真的
遭到感染。註冊 Service Worker、要求永久儲存空間、提供安裝提示，這些行為在掃描工具眼
中，不管背後是為了離線閱讀還是詐騙頁面想賴著不走，看起來都一樣。

跟其他信譽服務一一比對之後，可以確認這個標記只出現在 Trend Micro，並不是真的遭到
入侵；而最後真正有效的解決方法，範圍比第一次嘗試更窄：**重新分類掃描工具點名的那個確切
檔案，而不是它所在的網域**。

## 參考連結

- [在 Trend Micro Site Safety Center 重新分類網址或網站](https://success.trendmicro.com/en-US/solution/KA-0000017)
- [Trend Micro 產品誤判網站的說明](https://success.trendmicro.com/en-US/solution/KA-0003940)
- [VirusTotal](https://www.virustotal.com)
