觀點 · 資訊分享

Dgraph 資料庫爆嚴重漏洞:預設設定下免登入就能讀走整個資料庫,請升級到 25.3.3

圖形資料庫 Dgraph 公布 CVE-2026-41327 等兩個嚴重漏洞:查詢條件欄位被直接拼進查詢語句,在預設(沒開存取控制)的設定下,未登入的人可能讀走資料庫所有內容。v25 系列已在 25.3.3 修正。

發布
2026-04-24
篇幅
約 3 分鐘 · 1,365 字
結構
7 節 + 3 題常見問題
標籤
#Dgraph#CVE-2026-41327#CVE-2026-41328#資料庫安全
Dgraph 資料庫爆嚴重漏洞:預設設定下免登入就能讀走整個資料庫,請升級到 25.3.3

一句話看懂:Dgraph 的 upsert 條件欄位沒過濾就拼進查詢語句,在預設沒開 ACL 的情況下,未登入的人可能讀走整個資料庫;v25 請升級到 25.3.3。

Dgraph 免登入可讀走整個資料庫資訊圖卡:查詢欄位沒過濾,預設設定下未登入也能讀走所有資料

先用白話講:這是什麼類型的漏洞?

想像你在圖書館櫃台填「借書單」,上面有一欄「備註」。如果櫃台人員把你寫的備註原封不動當成指令照做,你就可以在備註裡夾帶「順便把所有書單印給我」。這就是注入(Injection)漏洞:本來應該只當資料的內容,被當成指令執行了。

Dgraph 這次就是類似的情況:一個條件欄位被直接拼進查詢語句,沒有做適當的過濾。

發生什麼事

2026 年 4 月 24 日,Dgraph 專案公布兩份嚴重安全公告:

  • CVE-2026-41327:升級事務(upsert)的 cond 條件欄位被直接串進 DQL 查詢字串,只做了表面轉換,沒有跳脫或參數化
  • CVE-2026-41328:同日公布,涉及 NQuad 的 Lang 欄位,公告標題也是查詢注入造成的整庫外洩

官方說明:在預設設定(沒有啟用 ACL)下,相關的 /mutate 端點不需要驗證,因此未登入的人可以讀取資料庫中的所有資料。CVSS 3.1 分數為 9.1(Critical)。

就算開了 ACL 也要小心

公告還提到:即使啟用了 ACL,只有「寫入」權限的使用者,也可能藉由注入讀取資料,繞過逐欄位的讀取授權,因為被夾帶的查詢不會走正常的授權流程。

情況 風險
預設設定(ACL 未啟用)且連得到 最高:免登入
啟用 ACL,但有只寫帳號 該帳號可能越權讀取
v25 且升級到 25.3.3 修正 CVE-2026-41327

給開發者的技術細節

  • 受影響版本(依公告):v25 在 25.3.3 之前、v24 在 24.1.8 以前,以及 1.2.8 以前
  • v25 的修正版本是 25.3.3;v24 公告沒有列出修正版本
  • 公告以 HTTP 連接埠 8080 為例,建議把資料庫放在內網,用防火牆或反向代理限制來源
  • 共通的防禦觀念:任何從外部傳進來的欄位,都應該用參數化的方式處理,而不是字串拼接

我的看法

自架資料庫的人常會為了方便,直接用預設設定跑起來:不開 ACL、連接埠對外。這次的漏洞就是最典型的「預設設定剛好踩雷」。接案的專案如果用到 Dgraph,現在就該確認三件事:版本、ACL 有沒有開、連接埠有沒有對外。

另外,資料庫本來就不該直接暴露在公網。就算沒有這次的漏洞,也建議放在內網或 VPN 後面,由應用程式代為存取。

名詞小辭典

  • Dgraph:圖形資料庫,專門處理資料之間的關聯。
  • ACL(存取控制清單):規定誰能讀、誰能寫哪些資料的權限機制。
  • 注入(Injection):把外部輸入當成指令執行的漏洞類型。
  • Upsert:有就更新、沒有就新增的資料庫操作。

資料來源

常見問題

Dgraph 是什麼?
一種圖形資料庫,擅長儲存與查詢「資料之間的關聯」,使用名為 DQL 的查詢語言。
我一定會受影響嗎?
官方指出受影響的是預設設定(ACL 未啟用);啟用 ACL 時,沒有帳號的人無法直接利用,但公告說擁有寫入權限的使用者仍可能繞過讀取授權。受影響版本包含 v25 的 25.3.3 之前、v24 的 24.1.8 以前,以及 1.2.8 以前。
該怎麼處理?
v25 升級到 25.3.3;v24 公告沒有列出修正版本,建議關注官方後續說明或升級到 v25。同時啟用 ACL,並避免把 Dgraph 的 HTTP 連接埠直接暴露在公開網路。
LINE