裝了 Wordfence 還是被駭?一次真實 WordPress 外掛漏洞事件告訴你的事

很多 WordPress 網站都會安裝 Wordfence。

但這是不是代表,只要 Wordfence 有裝,網站就安全了?

最近我們實際處理的一起 WordPress 資安事件,可以回答這個問題。這個網站原本就有安裝 Wordfence,也有其他基本的網站防護,但攻擊者仍然成功利用一個尚未更新的 WordPress 外掛漏洞,在網站內建立了 11 個具有 administrator 權限的管理員帳號

Unknown administrators

其中至少一個惡意帳號成功登入後台,接著安裝 WP File Manager,並建立可以操作網站檔案的 local.php。

所以這次真正值得討論的,不只是「Wordfence 有沒有用」,而是:

我們是不是因為網站裝了安全外掛,就低估了 WordPress 外掛沒有及時更新的風險?

這次不是密碼被破解

發現網站突然多出 11 個陌生管理員帳號時,一般第一個反應很容易是:「是不是 WordPress 密碼、cPanel 或 FTP 帳號被破解了?」

但我們交叉比對 HTTP、WordPress、PHP、資料庫以及相關登入紀錄後,並沒有找到已知攻擊來源成功登入這些管理帳號的證據。

真正的入口,高度指向 Pods 3.3.9 的權限驗證漏洞

也就是說,攻擊者不是先取得既有管理員密碼,而是直接利用外掛漏洞,在 WordPress 裡建立新的 administrator 帳號。

這也是網站被駭後很容易出現的誤判:

看到陌生管理員帳號,不代表一定是密碼被破解;真正要查的是,這個帳號究竟是怎麼被建立的。

真正危險的是取得管理員權限之後

這次攻擊並沒有停在建立帳號。

調查紀錄顯示,其中一個惡意帳號後來成功登入 WordPress 後台,接著安裝 WP File Manager,這是一個可以直接在 WordPress 後台管理網站檔案的外掛,駭客再利用它上傳了一個後門程式 local.php。

換句話說,外掛漏洞只是入口,administrator 權限才是攻擊者真正想取得的東西。

一旦取得 WordPress 管理員權限,就可能進一步安裝外掛、修改設定,甚至取得網站檔案的寫入能力。

所以網站被駭之後,只把陌生帳號或眼前看到的可疑檔案刪掉,並不代表事情就已經結束。

網站明明有 Wordfence,為什麼還是被駭?

這正好呼應我們之前寫過的文章:

你以為 WordPress 裝了 Wordfence 防火牆就安全了嗎?

Wordfence Free 確實有防火牆、惡意程式掃描及登入安全等功能,但免費版本取得新的防火牆規則與惡意程式特徵,和付費版本之間存在 30 天的時間差。

上一篇我們談的是這個時間差可能產生的風險;這次的實際案例,則帶出另一個更重要的問題:

就算網站裝了 Wordfence,也不能因此認為有漏洞的外掛可以晚一點再更新。

這次攻擊利用的是外掛本身的權限驗證問題。對安全工具而言,並不是所有外掛程式內部的邏輯漏洞,都一定能事先辨識並阻擋。

因此,Wordfence 可以降低很多攻擊風險,但它不能替代外掛本身的安全更新。

真正該問的是:外掛為什麼沒有更新?

Pods 3.3.9 的安全問題後來已經有修補版本,但網站遭到攻擊時,仍然使用存在問題的舊版本。

這其實正好反映很多 WordPress 網站的維運現況。

很多站長不是不知道外掛需要更新,而是不敢更新:怕 WooCommerce 出問題、怕外掛衝突、怕版面跑掉,最後就變成「網站現在還能用,所以先不要動」。

如果又裝了 Wordfence,更容易產生另一種安全感:

反正有防火牆,晚幾天更新應該沒關係。

但安全更新和一般功能更新的風險完全不同。

一般新功能晚幾天更新,可能只是不會用到新功能;但如果是已經公開的安全漏洞,繼續使用舊版本,就可能代表網站仍然暴露在已知的攻擊方式之下。

因此,這次事件真正值得注意的,不是「Wordfence 要不要換掉」,而是:

不要把安全外掛,當成延後安全更新的理由。

Wordfence 有它的用途,但如果外掛官方已經發布安全修補,真正把漏洞關起來的,仍然是更新本身。

Wordfence 不是沒有用,這次反而是它先發出警告

講到這裡,也不能因此把 Wordfence 說成「裝了沒用」。

這次事件之所以能很快被發現,其中一個重要原因,就是 Wordfence 發出了管理員登入警示

Wordfence alert

網站管理者收到通知後,注意到後台出現不應該存在的管理員帳號,才進一步展開事件檢查。原始調查紀錄中,也能對應到惡意帳號登入後緊接著出現 Wordfence 管理員登入警示。

這其實正是安全外掛很重要的一個功能:

安全工具不只是要阻擋攻擊,也要在網站出現異常時,讓管理者盡快知道。

但如果把焦點往前移一步,我們更希望在「漏洞真的被利用之前」就收到提醒。

Wordfence 本身有弱點掃描與安全通知功能,不過在我們實際的網站維運流程裡,會另外推薦 NinjaFirewall 來補強外掛與佈景主題的安全更新通知。

NinjaFirewall 可以針對管理員登入、帳號異動、外掛與佈景主題變更等事件發出通知,也能特別提醒:

外掛或佈景主題有待處理的安全更新。

這個差異很重要。

因為一般的:

「有新版本可以更新」

和:

「你目前使用的版本有安全問題,需要優先處理」

其實是兩件不同的事。

對網站維運來說,我們希望安全工具不只是告訴你「有人已經登入了」,更希望它能提早告訴你:

這一次更新不是新功能,而是安全修補。

所以我們並不把 Wordfence 與 NinjaFirewall 單純看成誰取代誰。

Wordfence 的登入警示、掃描與網站狀態檢查仍然很有價值;而 NinjaFirewall 對安全更新事件的通知,則更符合我們希望「在漏洞被利用以前就先處理」的維運方式。

那網站到底應該多久更新一次?

知道「有安全更新」只是第一步。

接下來真正困難的是:

收到更新通知之後,到底多久之內要處理?

難道 WordPress 後台只要出現更新通知,就應該全部立刻按下去?

當然也不是。

一般功能更新、安全更新、重大版本升級,本來就不應該用完全相同的方式處理。

真正困難的是:

哪些更新應該立即處理?哪些可以先觀察?如果怕更新後網站壞掉,又該怎麼辦?

這也是接下來我們想要繼續討論的問題:

WordPress 外掛到底該多久更新一次?安全更新要多快處理,又怎麼避免「不更新怕被駭,一更新又怕網站壞掉」的兩難。

輸入您的信箱訂閱電子報