觀點 · 資訊分享
Postiz 上傳漏洞:登入者就能傳 HTML 攻擊同團隊,請升級 2.21.6(專案 4/12 已公告)
自架社群排程工具 Postiz 2.21.6 修補了 CVE-2026-40487:登入的使用者可偽造檔案類型上傳 HTML 或 SVG,造成儲存型 XSS。專案早在 4 月 12 日就已發布安全公告與修補版,NVD 到 4 月 18 日才收錄這筆 CVE。
- 發布
- 2026-04-19
- 篇幅
- 約 4 分鐘 · 1,818 字
- 結構
- 9 節 + 4 題常見問題
- 標籤

一句話看懂:自架的社群排程工具 Postiz 有個上傳漏洞,任何登入的人都能偽造檔案類型,傳上惡意的 HTML,攻擊同團隊的其他人;專案早在 4 月 12 日就修好了,但 CVE 資料到 4 月 18 日才出現。

先用白話講:儲存型 XSS 是什麼?
想像一間公司有個公布欄,任何員工都可以貼東西。有人貼了一張看起來正常的紙,背面卻藏了機關,誰把它翻過來看,就會被偷偷拿走身上的通行證。更糟的是,這張紙會一直貼在那裡,之後每個看到的人都可能中招。
這就是儲存型 XSS:攻擊者把惡意內容放進網站,之後每個打開它的人,瀏覽器都會替攻擊者執行惡意程式碼。
發生什麼事(先看時間軸)
這則新聞有個容易誤會的地方:它不是 4 月 18 日才發現的。
| 日期 | 事件 |
|---|---|
| 4 月 10 日 | Postiz 收到漏洞通報 |
| 4 月 12 日 | Postiz 完成修補、發布 2.21.6,並公開安全公告 |
| 4 月 14 日 | GitHub 核發 CVE-2026-40487 |
| 4 月 18 日 | NVD 收錄這筆 CVE |
所以如果你是在 4 月 12 日之後才更新的,其實早就修好了;如果你還沒更新,現在就是最好的時機。
漏洞是怎麼回事?
- 前提:只要是登入的使用者,不需要管理員權限。
- 做法:偽造上傳檔案的
Content-Type標頭,就能上傳 HTML、SVG 等本來不該收的檔案。 - 後果:伺服器(nginx)會依照原本的副檔名回應,例如
text/html,瀏覽器就會把它當網頁執行,形成儲存型 XSS。 - 影響:官方說可能造成工作階段被劫持(session riding)、帳號被接管,甚至完全控制其他使用者的帳號。
公告提到的實際危害
- 受害者點開上傳連結後,攻擊者可以把自己邀請成團隊管理員。
- 刪除團隊所有貼文與整合。
- 取得完整 API 權限並冒用受害者。
- 公告也提到:登入用的 JWT 沒有到期時間(永不過期),上傳的檔案也永久保存且不用登入就能存取,所以任何人都可能隨時被鎖定為目標。
該怎麼辦?
| 做法 | 說明 |
|---|---|
| 升級到 2.21.6 以上 | 官方的修補方式 |
| 暫時停用檔案上傳 | 官方列的部分緩解做法 |
讓 /uploads/ 以下載方式回應 |
加上 Content-Disposition: attachment 與嚴格的 CSP,避免瀏覽器直接顯示 |
官方明說:2.21.6 之前沒有可靠的替代方案,上面兩項只是部分緩解。
給開發者的技術細節
- 弱點類型:檔案上傳驗證不足(信任客戶端傳來的 Content-Type)。
- 嚴重度:GitHub 公告列為 Critical、CVSS 9.0;NVD 收錄的 GitHub 評分為 8.9(CVSS 3.1,需要使用者互動)。
- 啟示:檢查上傳檔案時,不要只看客戶端宣告的類型,要看副檔名與實際內容,並且上傳目錄的回應標頭要設成不會被當成網頁執行。
我的看法
我自己做網站時也常寫上傳功能,這類漏洞特別眼熟:只檢查 Content-Type 就放行,看似合理,卻很容易被偽造。比較穩的做法是副檔名白名單加內容檢查,而且上傳目錄一律用下載方式回應、並放在和主網站不同的網域,這樣就算有人傳了 HTML,也不會在主站的身分下執行。
另外,如果你有自架服務,這則新聞也提醒一件事:安全公告不一定同步出現在 CVE 資料庫,等 CVE 才更新就慢了。訂閱專案的 GitHub Release 與 Security Advisories 比較實際。
名詞小辭典
- XSS(跨站腳本):讓網站在受害者的瀏覽器裡執行攻擊者寫的程式碼。
- Content-Type:告訴瀏覽器或伺服器「這個檔案是什麼類型」的標頭,可以被客戶端偽造。
- CSP(內容安全政策):網站用來限制瀏覽器能載入或執行哪些內容的規則。
- GHSA:GitHub Security Advisory,專案在 GitHub 上發布的安全公告編號。
資料來源
常見問題
Postiz 是什麼?
它是一套 AI 社群貼文排程工具,可以自己架在伺服器上,用來規劃與發布社群平台的貼文。
XSS 是什麼?為什麼是「儲存型」?
XSS 是讓網站在受害者的瀏覽器裡執行攻擊者的程式碼。「儲存型」指惡意內容被存在伺服器上,之後每個點開的人都會中。
這個漏洞什麼時候公開的?
專案在 2026 年 4 月 12 日就公開了安全公告並發布 2.21.6,GitHub 4 月 14 日核發 CVE 編號,NVD 到 4 月 18 日才收錄。所以這不是 4 月 18 日才被發現的新漏洞。
升級之前可以怎麼降低風險?
官方說沒有可靠的替代方案。可部分緩解的做法是停用檔案上傳,或讓 /uploads/ 的回應加上 Content-Disposition: attachment 與嚴格的內容安全政策(CSP),避免瀏覽器直接顯示上傳的檔案。
接著讀
全部觀點 →自架 Postiz 連修 2 個高危漏洞:註冊帳號就能偽造登入權杖、讀走伺服器檔案,請升到 v2.25.3開源社群貼文排程工具 Postiz 在 10 月 24 日發布 v2.25.3,修正兩個 CVSS 9.6 以上的漏洞:一般註冊用戶可以偽造登入權杖接管別人的組織,也可能讀走伺服器上的檔案。開放註冊預設是開啟的。閱讀 →Nextcloud 內建的 Collabora 伺服器漏洞已遭利用:CISA 列入清單,26.4.303 以前都要更新Nextcloud 的 Collabora Online 內建 CODE 伺服器有個作業系統指令注入漏洞(CVE-2026-110447),已在實際攻擊中被利用。CISA 在 10 月 23 日把它列入已知遭利用漏洞清單,版本低於 26.4.303 的自架主機要更新並檢查。閱讀 →Plex 媒體伺服器 4 個漏洞串連遭大規模利用:舊版又對外開放,官方說先當作已被入侵Plex 公布 4 個串在一起就能免登入執行程式的漏洞,公開攻擊程式釋出後已遭大規模利用,被入侵的主機被拿去挖礦與當代理跳板。1.43.3.10861 以前的版本都受影響,NAS 使用者要特別留意。閱讀 →