Wordpress

你的 WordPress 外掛更新得越勤,為什麼反而越可能被供應鏈攻擊盯上?

多數網站管理者以為外掛安全,靠的是程式碼裡有沒有漏洞、有沒有按時更新;真正麻煩的情況,是外掛送到你手上的「正版更新」本身,可能早就被動過手腳。2026 年這半年內,至少四起真實案例都是同一種劇本,網站管理者什麼都沒做錯,甚至比誰都勤勞更新,後台卻莫名其妙多出一個自己沒建立過的管理員帳號。

這種攻擊有個名字,叫供應鏈攻擊(supply chain attack),鎖定的不是外掛程式碼本身寫得好不好,而是它從開發到送進你網站這整條路徑上,隨便哪一個環節。WordPress 撐起全球四成左右的網站,只要打穿其中一個熱門外掛開發商,污染的規模就足以讓整個資安圈繃緊神經。

外掛供應鏈攻擊是什麼?受信任的更新管道本身遭入侵

美國網路安全暨基礎設施安全局(CISA)與國家標準暨技術研究院(NIST)聯合發布的資源指出,軟體供應鏈攻擊鎖定的不是最終使用端,而是軟體從開發到送達使用者手中這整段過程裡的任一環節,原始碼、建置系統、更新機制、第三方元件都算在內。只要成功滲透其中一處,惡意程式碼就會跟著看似正常的發布或更新,一起送到所有下游使用者手上。同份資源也提供了 NIST 的網路供應鏈風險管理框架(C-SCRM)與安全軟體開發框架(SSDF),讓軟體供應商與採購方拿去評估、降低這類風險。

這跟「某支外掛程式碼本身有漏洞」是兩個完全不同層次的問題。程式碼漏洞是外掛寫得不夠嚴謹,只要開發商補上、你跟著更新,風險就解除;供應鏈攻擊完全不需要程式碼本身有錯,問題出在送達這一步。開發商的帳號被盜、建置伺服器被入侵、發布管道遭竄改,你收到的那份「正版更新」,打包的時候可能就已經摻了東西。

供應鏈攻擊不是攻擊你的網站本身,而是攻進開發商到你之間的更新管道,讓正版更新夾帶惡意程式碼
一般漏洞攻的是你網站上還沒補的洞;供應鏈攻擊攻在更新與 CDN 管道,正版更新一送達就中毒。

W3Techs 的即時統計顯示,在所有查得出用什麼內容管理系統的網站裡,WordPress 占了 58.8%,算進全體網站,占比也有 40.2%。這個規模讓供應鏈攻擊的算盤特別划算,不必逐一去找成千上萬個網站各自的漏洞,只要打穿一個熱門外掛開發商,就能一次污染幾十萬到上百萬個下游網站。根據 WordPress 官方「State of the Word 2025」年度回顧,光是外掛目錄在 2025 年底就已經超過 6 萬支,累計下載次數逼近 21 億次;連同佈景主題,WordPress.org 官方目錄現況掛著的外掛與佈景主題總數已經超過 8 萬個。這個基數擺著,任何一個環節被攻破都會迅速放大成大規模事件。

WordPress 共同創辦人 Matt Mullenweg 在官方公告裡,把 2026 年定調為「更新要多快」與「更新要多安全」兩種思路互相拉扯的一年,還點名其中一起外掛遭收購後被植入後門的事件,是「WordPress 自己的一次小型供應鏈攻擊」。連創辦人自己都得正面處理這個問題,說明它已經不是少數資安研究者才在意的邊緣風險。

外掛出包的三種情境,只有供應鏈攻擊會讓保持更新變成風險

很多人聽到「小心外掛出問題」,直覺反應是「我有隨時更新就沒事」。這個直覺在兩種情境裡是對的,只有在第三種情境裡,反而會把你往危險裡送。

第一種是外掛程式碼本身有漏洞,攻擊者靠自動化工具大量掃描,找出還沒更新的網站,再拿現成的漏洞下手。這種情況下,保持更新剛好就是解法,開發商補完洞、你按下更新,風險就跟著消失。

第二種是假冒官方名義的社交工程,駭客從頭到尾沒有碰到任何一個真正的外掛開發商。台灣電腦網路危機處理暨協調中心(TWCERT/CC)公告過一起實例,駭客寄發偽裝成 WordPress.org 發出的資安更新通知信,信裡恐嚇收件人的網站被掃出可遠端執行任意程式碼的漏洞,誘使對方點擊連結,連過去的網站外觀跟 WordPress.org 幾乎一模一樣,頁面上還偽造了 50 萬次下載紀錄與大量五星好評,誘騙使用者親手把這支假外掛裝上網站。使用者一旦按下安裝,惡意程式才會新增一個隱藏的管理員帳號,把資訊回傳到駭客控制的伺服器,再下載一段以 base64 編碼的後門酬載寫進網站根目錄,讓駭客能用檔案管理工具、SQL 客戶端、PHP 主控台完整操控伺服器。這整個過程裡,WordPress.org 官方跟任何一個合法外掛開發商都沒有被入侵,受害的原因是使用者自己按下了安裝。

第三種才是真正的供應鏈攻擊,開發商自己的帳號、建置系統、CDN 或第三方 API 本身被滲透,你透過官方管道正常拿到的正版更新裡,已經摻進了惡意程式碼。這種情況下,保持更新不但救不了你,反而會變成中毒的原因,愈勤勞更新,惡意程式碼就愈快裝進網站。開發商的防線可以在很多地方失守,光是 2026 年一年,就已經出現建置系統被打穿、外掛易主後被埋後門、派送更新的 CDN 被竄改這三種完全不同的破口。

保持更新在程式碼漏洞是解法、在假冒官方社交工程無關辨識來源、在供應鏈攻擊反而變成中毒原因
「有隨時更新就沒事」只對前兩種情境成立,供應鏈攻擊會把保持更新反過來變成風險。

供應鏈失守的三個常見入口

這三種破口最大的共通點,是網站管理者從頭到尾沒有做錯任何一步,問題全部出在開發商那一端。

供應鏈失守的三個常見入口:官方建置發布管線遭入侵、所有權易主埋延遲後門、CDN 與第三方 API 資料遭竄改
三個入口都出在開發商那一端;前兩者外掛版本號會變,第三種版本號完全不變、最難察覺。

官方建置與發布管線遭入侵後直接夾帶惡意更新

攻擊者連你的網站都不用碰,只要把手伸進開發商用來打包、發布更新的系統,之後每一次透過官方管道送出的付費更新,就會自動夾帶惡意程式碼。2026 年 6 月,WordPress 外掛開發商 ShapedPlugin 就出過這種事,駭客在該公司透過 Easy Digital Downloads(EDD)發布付費外掛更新的管線裡動了手腳,受影響的版本有 Product Slider Pro for WooCommerce 3.5.2、Real Testimonials Pro 3.2.4 與 3.2.5、Smart Post Show Pro 4.0.1。這起事件後來被追蹤代號 CVE-2026-10735,CVSS 嚴重度評分高達 9.8 分。只有透過官方付費更新管道下載或自動更新的使用者中招,WordPress.org 上架的免費版本完全沒受影響,連光看有沒有裝到免費版都無法判斷自己安不安全。

Wordfence 與 The Hacker News 的分析指出,第一起用戶回報出現在 6 月 10 日,資安研究人員 6 月 12 日確認,開發商到 6 月 16 日才公開承認,對外完整揭露則要等到 6 月 18 日。另外要留意的是,Real Testimonials Pro 3.2.5 這個版本號原本在 5 月 23 日發布時是乾淨的,卻在同一個版本號底下被二次竄改,開發商最後只能改發 3.2.6 修正。這代表光看版本號往前跳沒跳,並不足以確認一支外掛乾不乾淨。

竄改後的外掛裡藏了一支名為 LicenseLoader.php 的載入器,只要管理員登入後台就會觸發,連向一組遠端伺服器下載第二階段酬載,再偽裝成一支叫「WooCommerce Subscription」的假外掛裝進網站,跟正牌的「WooCommerce Subscriptions」只差一個字,而且會刻意從外掛清單裡隱藏自己。這支後門實際偷走的東西包括 wp-config.php 的完整內容(資料庫帳密、驗證金鑰)、所有管理員帳號與註冊時間、WP Mail SMTP 等寄信外掛的登入憑證,以及近三個月的 WooCommerce 訂單與付款方式明細。Wordfence 與 ShapedPlugin 都提醒,光是把外掛更新回乾淨版本,並不會移除已經植入、已經跑過的第二階段後門,必須另外做完整清查。

外掛所有權易主後新東家埋下延遲啟動的後門

另一種入口,是外掛的所有權整個被收購轉手,新老闆在後續更新裡埋入後門,而且刻意拖很久才啟動,躲開收購剛發生時最容易被放大檢視的那段時間。2026 年 4 月曝光的 Essential Plugin 系列外掛就是這種手法。這批外掛原本已經被原開發者維護了 8 年,易主之後,新的擁有者大約在收購後半年,才把一段名為 wpos-analytics 的惡意程式碼加進外掛的原始碼裡,之後又沉寂了數個月,直到 2026 年 4 月初才真正啟動。

WordPress.com 的安全團隊在事件揭露後幾個小時內,就在自家平台上找出超過 2,200 個裝有受影響外掛的網站,隨即以 DNS 層級封鎖攻擊者控制的網域 analytics.essentialplugin.com,並把受影響網站裡的 wpos-analytics 整個目錄清除乾淨。WordPress.org 官方也在 4 月 7 日一口氣永久關閉了整組共 31 個受影響外掛。

Matt Mullenweg 後來把這起事件列為促成官方調整外掛與佈景主題發布審查機制的關鍵導火線之一。這個入口特別難防的原因很直接,合法外掛換了老闆,原本的使用者不會收到任何通知,網站上跑的還是同一個外掛名字、同一組版本編號的邏輯,背後的人卻已經換了。

CDN、第三方 API 資料遭竄改後外掛不必更新也會中毒

前兩種入口好歹都留下一個版本號變了的痕跡,這一種更難察覺,因為網站管理者可能什麼都沒更新、外掛版本也完全沒變,卻照樣中招。問題不在你安裝的那份外掛程式碼本身,而在開發商透過 CDN 派送的 JavaScript 檔案,或是外掛內建拿來抓後台宣傳橫幅的第三方 API,被動了手腳。

2026 年 6 月,Sansec 的調查發現,Awesome Motive 旗下 OptinMonster、TrustPulse、PushEngage 這三支外掛,透過 CDN 派送給客戶網站的 JavaScript 檔案遭到竄改,影響大約 120 萬個網站。根本原因不在外掛本身,而是攻擊者先利用 OptinMonster 行銷網站上一套 UpdraftPlus 外掛的既有漏洞入侵了那個網站,在站上找到一組 CDN API 金鑰,再用這組金鑰竄改實際派送給下游客戶的 SDK 檔案。換句話說,受害網站的管理員完全不需要按下任何更新按鈕,只要瀏覽器載入了那支被動過手腳的 JS 檔案就會中招。惡意程式碼只在偵測到已登入的 WordPress 管理員時才會觸發,一旦觸發就會建立新的管理員帳號,安裝一支自我隱藏的後門外掛,曾經偽裝成「Content Delivery Helper」與「Database Optimizer」這類看起來人畜無害的名字,再把偷到的憑證回傳到一個刻意模仿真實線上客服品牌 tidio.com 的假網域。OptinMonster 與 TrustPulse 被動手腳的時間只有短短 25 分鐘,PushEngage 的曝險時間拖得更長,一路持續到 6 月 14 日才被完全清除。

2026 年 8 月曝光的 BdThemes 事件,破口又更隱密一層。Wordfence 的分析指出,WordPress.org 官方倉庫裡的原始碼一行都沒被改過,攻擊者動的手腳是外掛內建、用來從遠端抓取後台推廣橫幅內容的一段資料流,BdThemes 把這個元件叫做 Biggopti,資料存放在一個 DigitalOcean 的雲端儲存桶裡。攻擊者拿到了這個儲存桶的寫入權限,把原本回傳的內容換成夾帶跨站腳本(XSS)的惡意資料,只要有管理員造訪 wp-admin 的任何一頁,惡意腳本就會在瀏覽器裡悄悄執行,接著透過 WordPress 的 REST API 建立新的管理員帳號、上傳一支偽裝過的外掛安裝出後門,還在 mu-plugins(必用外掛)目錄裡植入一個能靠網址參數免帳密登入的模組。受影響的是 Element Pack Addons 等多支 BdThemes 旗下的 Elementor 外掛,其中 Element Pack Addons 的安裝數就超過 10 萬。WordPress.org 外掛團隊在 8 月 7 日、8 日先把這些外掛暫時下架,才進行全面審查。

這兩起事件還有一個共同的巧妙設計,都只在偵測到已登入的管理員時才會發動,一般訪客瀏覽網站完全看不出任何異狀。

中毒後惡意外掛會主動隱藏自己躲過後台檢查

這幾起案例有志一同鎖定已登入的管理員,不是巧合,而是背後有清楚的算計,避開一般訪客與自動化監控工具,同時確保拿到的是網站裡權限最高的那組身分。

惡意程式植入後先偵測是否為登入管理員,再建立隱藏管理員帳號、安裝自我隱藏後門、回傳網站憑證
惡意程式全程只在偵測到登入中的管理員時才發動,一路建帳號、藏後門到把憑證回傳給攻擊者。

鎖定登入中的管理員,一般訪客看不出異狀

Sansec 對 Awesome Motive 那起事件的技術分析指出,惡意腳本執行前會先做一連串環境檢查,偵測到 navigator.webdriver 這個瀏覽器屬性、或判斷是無頭瀏覽器就直接退出,接著檢查視窗尺寸是不是零、有沒有正常顯示,再判斷情境,尋找 wp-admin 路徑、WordPress 後台管理列,或是 wordpress_logged_in_ 這個 cookie 存不存在。確認眼前是一個真人管理員、不是自動化掃描工具之後,它還會用瀏覽器的 localStorage 做 24 小時節流,同一台裝置不會重複觸發,避免管理員起疑。

裝進網站的後門外掛,則會從外掛清單、使用者清單、近期活躍清單,甚至 WordPress REST API 的外掛端點裡主動把自己藏起來。Wordfence 對此下的結論很直接,後台介面顯示的東西不能全信,真正該相信的是硬碟上實際存在哪些檔案。BdThemes 事件的手法可以互相對照,它同樣在 mu-plugins 目錄裡植入一個反分析的隱身模組,直接攔截資料庫查詢,讓惡意帳號不會出現在使用者清單裡,也不會被計入使用者總數。

資料庫密碼、金流訂單與後台憑證都可能外流

這幾起事件實際偷走的東西,不是抽象的網站被駭,而是具體會拿去變賣或濫用的資料。ShapedPlugin 那起案例裡確認被竊的包括 wp-config.php 的完整內容(資料庫帳密、驗證金鑰)、全部管理員帳號與註冊時間、寄信外掛的 SMTP 登入憑證,以及近三個月的 WooCommerce 訂單與付款方式明細。

Awesome Motive 那起案例則確認會建立新的管理員帳號,固定用 developer_api1 這組帳號、或隨機產生 dev_ 開頭的帳號,再把偷到的帳密回傳到一個偽裝成正牌客服品牌的假網域。Patchstack 的防火牆遙測資料顯示,光是 2026 年 6 月 14 日到 15 日這兩天,他們的防護規則就在 13 個網站上攔下 271 次偽造管理員的建立請求,來源分散在 81 個不同 IP,這不是理論上的風險,是當下正在被大規模利用的真實攻擊行為。

一般網站經營者能做的檢查與因應

前面幾起案例雖然入侵管道各不相同,但落到自己網站上該怎麼辦,答案其實可以收斂成幾件成本不高、卻真正有效的動作,不必比照企業資安團隊那套複雜清單。

定期核對後台管理員名單能揪出可疑帳號

不管入侵管道是建置管線、所有權轉手,還是 CDN 竄改,最終幾乎都會留下同一個痕跡,一個你自己沒建立過的管理員帳號。把後台的使用者清單依註冊時間排序,逐一確認每個管理員帳號自己都認得,是成本最低、也最直接的第一道檢查。

後台使用者清單依註冊時間排序後,一個 dev_ 開頭、半夜註冊卻掛管理員權限的可疑帳號被標示出來
把使用者清單依註冊時間排序,一個 dev_ 開頭、半夜註冊的管理員帳號對不上,就是該停下來查的訊號。

前面幾起案例裡出現的可疑帳號,註冊時間常落在半夜,帳號名稱也帶著固定套路,像是 dev_ 開頭的一串亂碼、或是 developer_api1 這種聽起來像是系統內部帳號的名字。發現眼生的管理員帳號,第一件事是立刻停用它,接著把網站上所有密碼,包括 WordPress 後台、資料庫、FTP、寄信外掛,全部換過一輪。也要提醒一句,部分後門會把自己從使用者清單裡隱藏,名單看起來乾淨不等於絕對安全,但這仍然是成本最低、效果最好的第一步。

付費外掛更新管道不受 WordPress.org 審查保護

2026 年 6 月 5 日,Matt Mullenweg 宣布了一項名為「Protect The Shire」的計畫,往後透過 WordPress.org 目錄自動更新派送的每一個外掛與佈景主題新版本,都得先經過最長 24 小時的冷卻期,並由一個代號「Gandalf」的 AI 審查工具檢查程式碼變動,才會正式推播給啟用自動更新的網站。Mullenweg 也提到,未來這個審查時間有機會縮短到幾分鐘,但目前傾向保守、寧可多等。

這項機制的保護範圍,只涵蓋 WordPress.org 官方目錄裡的免費、開放原始碼外掛,並不是所有外掛都在這層保護傘底下。前面提到的 ShapedPlugin 事件就是活生生的例子,受害的是透過官方 EDD 商業更新管道發布的付費版,WordPress.org 目錄上的免費版完全沒受影響。換句話說,只要網站上裝的是付費或商用外掛,更新管道本身仍然得靠自己留意,不能預設官方已經幫忙把關了。

外掛作者換人或更新說明含糊,是更新前該注意的警訊

按下更新前,養成一個不需要技術背景就能做的習慣:看一眼外掛頁面上的作者名稱有沒有換過、這次更新紀錄的說明是不是含糊帶過幾個字,或者一支長期沒什麼動靜的外掛忽然又開始頻繁更新。這幾個徵兆,在前面所有權易主那起案例裡都出現過,外掛換了新東家,舊使用者卻完全不會收到任何通知。

這個習慣有它的限制,防不住 CDN 或第三方 API 資料遭竄改這種完全不改版本號的入口,外掛頁面看起來一切正常,問題出在看不到的伺服器那一端。即使如此,它仍然值得養成,因為前面三種入口裡,至少有一種是靠這個習慣能提早發現的。

供應鏈攻擊真正讓人不安的地方,不是它有多高明,而是它把保持更新、相信官方管道這些原本正確的動作,直接變成中招的原因。這幾起案例裡,沒有一個受害者是因為偷懶才出事,差別只在於開發商那一端的某個環節,先一步被攻破了。這也是為什麼後台管理員名單值得養成習慣去核對,不需要懂程式碼,也不需要猜得出這次入侵管道是建置系統、所有權轉手,還是 CDN 竄改,只要有一個帳號對不上,就是該停下來查清楚的時候。

資料來源
  1. Defending Against Software Supply Chain Attacks — CISA
  2. Usage Statistics and Market Share of WordPress, September 2026 — W3Techs
  3. Protect The Shire — WordPress.org
  4. 假冒 WordPress 資安更新,內含惡意後門外掛程式 — TWCERT/CC
  5. ShapedPlugin WordPress Pro Plugins Backdoored in Supply Chain Attack — The Hacker News
  6. PSA: Supply Chain Compromise Targets ShapedPlugin — Backdoored Pro Plugins Distributed via Official Channels — Wordfence
  7. Inside WordPress.com's Security Response to the Essential Plugin Attack — WordPress.com
  8. OptinMonster supply chain attack hits 1.2 million sites — Sansec
  9. BdThemes Supply Chain Attack Poisons JSON to Create Rogue WordPress Admins — The Hacker News
  10. PSA: Supply Chain Compromise in BdThemes Ecosystem via Poisoned API Response — Wordfence
  11. Supply Chain Attack on OptinMonster, TrustPulse, and PushEngage: Tampered CDN Scripts Auto-Creating Rogue Admins — Patchstack
  12. State of the Word 2025: Innovation Shaped by Community — WordPress.org