資安雷達 2026 年 10 月 7 日

2026-10-07 Payload CMS 在 SQLite 與 Postgres 有 CVSS 9.8 SQL 注入

primary=https://github.com/advisories/GHSA-v49j-62m6-pgrr primary=https://github.com/payloadcms/payload/commit/a742140ab4fca3160f7f83e9e7d996552ffc3b5a primary=https://github.com/payloadcms/payload/releases/tag/v3.88.0

Payload CMS 在 SQLite 與 Postgres 上有 CVSS 9.8 的 SQL 注入

GitHub Advisories · 2026-10-06

Payload 的查詢層在 SQLite 與 PostgreSQL 上,會讓未授權的使用者透過動態篩選或 join 參數注入 SQL,MongoDB 後端不受影響。這個漏洞的前提只有一個:你把可查詢的 collection 暴露給不可信的請求。

公告編號為 GHSA-v49j-62m6-pgrr,對應 CVE-2026-105845,嚴重度標為 critical,CVSS v3.1 分數 9.8,弱點分類 CWE-89。向量為 AV:N/AC:L/PR:N/UI:N,也就是網路可達、低複雜度、不需權限、不需使用者互動。

漏洞機制

公告對根因著墨很少,只說「使用者可以送出利用 SQL injection 的請求」。觸發條件是不可信的使用者能用動態 filter 或 join 去查詢可讀的 collection。換句話說,攻擊面是 Payload 內建的查詢參數,不是自訂 endpoint 的拼接字串。

Payload 的 REST、GraphQL 與 Local API 都會把 where 與 join 參數轉成資料庫查詢。只要某個 collection 的讀取權限對公開請求或低權限帳號開放,這些參數就是外部輸入。公告沒有說明是哪一段查詢建構程式碼缺少跳脫,所以這裡不推測具體的注入點。

公告引用的修補 commit 是 a742140。其 commit message 寫的是「prevent multipart content-type backtracking」,與 SQL 注入的描述不一致,v3.88.0 release notes 的條目也只列出同一句話,沒有提到 SQL 注入。要確認實際修了什麼,得自己讀 diff。

受影響版本

分支受影響範圍修補版本
3.x>= 3.0.0, < 3.88.03.88.0
4.0 canary>= 4.0.0-canary.0, < 4.0.0-canary.274.0.0-canary.27

受影響的是 npm 上的 payload 套件。使用 @payloadcms/mongodb 的專案不受影響,因此要先看自己的資料庫 adapter,再決定是否緊急處理。

修補與緩解

v3.88.0 的發布日是 2026-08-11,公告卻在 2026-10-06 才公開。也就是說,已經升到 3.88.0 以上的專案早就在修補版本上,還停在舊版的專案現在才拿到明確的風險說明。

  • 先確認 adapter:檢查 package.json 是否使用 SQLite 或 Postgres 的 adapter,只用 MongoDB 的可以排在後面。
  • 升級:3.x 升到 >= 3.88.0,4.0 canary 升到 >= 4.0.0-canary.27。
  • 無法立刻升級時:不讓不可信的使用者提供動態 query filter 或 join 參數,並限制受影響 collection 的讀取權限。
# 檢查目前安裝的版本
npm ls payload
# 升級到修補版本
npm install payload@^3.88.0

影響範圍

最該優先檢查的是把 collection 設為公開讀取的網站,例如文章、商品、頁面這類 headless CMS 的常見用法,因為這些 endpoint 本來就不需登入。其次是前台允許訪客用查詢字串傳入 where 的應用。

公告沒有說明是否已有公開的利用程式,也沒有列出實際遭利用的案例,這部分資訊目前未公布。由於 CVSS 向量顯示不需權限,建議當作可被直接掃描到的漏洞處理,升級後也順手檢查資料庫日誌是否有異常查詢。

公告的 credits 欄位為空,沒有列出回報者。

原始來源:GitHub Advisory GHSA-v49j-62m6-pgrr、commit a742140、Payload v3.88.0


End of article
0
Would love your thoughts, please comment.x
()
x