觀點 · 資訊分享
WordPress 活動行事曆外掛 The Events Calendar 兩個 9.8 分漏洞:活動頁開著留言就可能被遠端控制
9 月 12 日公開的 CVE-2026-78159 與 CVE-2026-78006,都是 The Events Calendar 外掛的遠端程式碼執行漏洞,未登入的人就能觸發,前提是活動頁面開著留言。外掛的更新日誌顯示,相關的強化修正已在 6.17.4.1 釋出,建議升到更新的版本。
- 發布
- 2026-09-13
- 篇幅
- 約 4 分鐘 · 2,011 字
- 結構
- 7 節 + 3 題常見問題
- 標籤

一句話看懂:WordPress 的活動行事曆外掛 The Events Calendar 有兩個 CVSS 9.8 的遠端程式碼執行漏洞,沒登入的人只要在開著留言的活動頁面送出特製留言,就可能在伺服器上執行程式;更新外掛是最直接的處理方式。

先用白話講:留言怎麼會讓網站被控制?
想像網站是一間餐廳,留言區像門口的意見箱。通常你只會把紙條投進去,店員唸一唸就好。但這個外掛處理活動頁面的方式,有點像店員拿到紙條後,不只唸出來,還把紙條上特殊格式的內容當成「指令」去照著做;攻擊者只要寫一張格式特製的紙條,就能叫店員做不該做的事。
專業一點說:外掛在顯示單一活動頁面時,會把頁面(包含留言區)裡的區塊(block)標記拿去解析。如果留言裡夾帶特製的區塊內容,驗證又沒做好,就會走到會執行程式碼的地方。
發生什麼事
2026 年 9 月 12 日,NVD 公開兩筆 The Events Calendar 的 CVE,由 Wordfence 提報,CVSS 評分都是 9.8,攻擊者不需要登入:
| 編號 | 影響版本 | 重點 |
|---|---|---|
| CVE-2026-78159 | 6.17.3 以下 | 小工具的 classes 欄位驗證不足,簡單陣列內容能繞過物件檢查,走到會呼叫函式的地方;需要活動頁面開著留言,且已有人送出含特製 legacy widget 區塊的留言 |
| CVE-2026-78006 | 6.17.4 以下 | 檢查複製小工具的 is_safe_widget_instance 可以被繞過;外掛的單一活動模板會對留言的 HTML 做區塊處理,而 WordPress 又會讓未登入的留言者立刻看到自己「待審」的留言,所以特製內容在審核前就被處理了;同樣需要留言開啟且顯示在活動頁面 |
我該怎麼辦?
- 先看版本:到後台的外掛頁面,確認 The Events Calendar 的版本
- 更新外掛:外掛的更新日誌中,6.17.3(8 月 20 日)、6.17.3.1(8 月 26 日)、6.17.4.1(9 月 10 日)都有「強化複製的小工具實例驗證」的安全條目;更新日誌沒有直接寫 CVE 編號,所以這是依描述的推測。建議至少升到 6.17.4.1,實際上直接升到最新版最保險
- 檢查是否需要留言:活動頁面如果本來就不需要訪客留言,把留言關掉;官方沒有把這個列為解法,這是我依觸發條件做的判斷
- 後續(9 月 17 日、24 日):外掛又釋出 6.17.5 與 6.17.5.1,內容包含 REST API 存取檢查、QR Code 小工具渲染等更多安全強化
給開發者的技術細節
- 兩個漏洞的核心都跟小工具(widget)資料的驗證有關:攻擊者把特製的區塊標記放進留言,外掛在處理活動頁時呼叫
do_blocks(),讓標記進入有風險的程式路徑;其中 CVE-2026-78006 的描述還提到反序列化(unserialize()) - 值得學的一點:「待審留言」不等於安全。WordPress 會替留言者產生審核用的連結,讓他在審核前也能看到自己的留言,如果外掛在這個階段就處理留言內容,審核機制就形同虛設
- 如果你自己寫外掛或主題,凡是會對「使用者提供的 HTML」呼叫
do_blocks()或unserialize(),都要特別小心,輸入要先過濾,並避免讓使用者控制要被反序列化的內容
我的看法
幫中小企業做 WordPress 網站時,最常見的情況是:客戶裝了一堆外掛,裝完就沒人更新。這種「漏洞公開了,但站台沒人看」的狀況,正是攻擊者最喜歡的目標。這次的漏洞有條件限制(要開著留言),但也提醒我:外掛的預設功能,不見得都是網站真的需要的。
我的習慣是兩件事:第一,外掛排進定期更新,而不是等出事;第二,用不到的功能(例如活動頁留言)就關掉,攻擊面越小越好。接案的人也可以把「外掛更新與盤點」寫進維運合約的條款,不然客戶出事時,常常會變成雙方都說不清楚責任歸屬。
名詞小辭典
- 遠端程式碼執行(RCE):攻擊者能讓你的伺服器執行他指定的程式碼,風險最高的一類漏洞。
- CVE / NVD:CVE 是漏洞的公開編號;NVD 是美國政府維護的漏洞資料庫,會收錄並提供各漏洞的詳細資料。
- 區塊(block):WordPress 區塊編輯器用來組成頁面的內容單位。
- 反序列化(unserialize):把儲存或傳輸的資料還原成程式物件,處理不安全的輸入時可能被利用。