資安

Splunk Enterprise CVE-2026-20253(CVSS 9.8):一個沒有任何驗證的 Postgres sidecar,把寫檔變成免登入 RCE

2026.06.19 · 105 次瀏覽
Splunk Enterprise CVE-2026-20253(CVSS 9.8):一個沒有任何驗證的 Postgres sidecar,把寫檔變成免登入 RCE

6 月 10 日揭露、10.2.4/10.0.7 修補,PoC 已在 GitHub 流通。它不需要任何帳密——而你的監控主機,會變成攻擊者的跳板。

分享:

如果你的環境裡有一台 Splunk Enterprise 10,這週請把它排到清單最上面。CVE-2026-20253 於 2026 年 6 月 10 日由 Splunk 揭露,CVSS 9.8(Critical),是一個免登入的遠端攻擊:根因在 Splunk 10 引入的 PostgreSQL sidecar 服務,它的還原端點完全沒有任何驗證控制(CWE-306)。任何能連到這台機器的人,不需要帳密,就能在 Splunk 主機上建立或截斷任意檔案——研究者已示範把這個「寫檔原語」串成遠端執行程式碼(RCE)。更糟的是,公開 PoC 已在 GitHub 流通。

用人話講這條攻擊鏈。Splunk 10 為了支援新的資料服務,附帶一個 PostgreSQL「sidecar」小服務,它有兩個還原端點(/v1/postgres/recovery/backup/v1/postgres/recovery/restore),原本應該只給內部用——但它們沒做任何身分驗證,而且可以透過 Splunk 主 Web 應用的代理機制從外面被打到。攻擊者先用無認證的檔案寫入落地一個檔案,再濫用 PostgreSQL 的 lo_export 函式把惡意腳本寫到磁碟並觸發執行,整條鏈不需要任何憑證、不需要使用者互動。它是 S:U / C:H / I:H / A:H——機密、完整、可用性全高。

影響範圍很具體:Splunk Enterprise 10.2.0–10.2.3(修補版 10.2.4)10.0.0–10.0.6(修補版 10.0.7)。10.4.0 不受影響;Splunk Cloud 不受影響(不使用 PostgreSQL sidecar)。要特別注意:這個 sidecar 在 AWS 上的 Splunk Enterprise 預設啟用,等於雲端部署「開箱就暴露」。揭露時間軸是:6/10 廠商公告 → 數日內公開 PoC → 6/15 多家安全廠商發出分析與外部攻擊面偵測,把「網際網路可達的舊版」直接列為高風險。

接下來我會解:漏洞類型與攻擊路徑、三類角色今天該做什麼、補丁與(在 PHP/Nginx/Linux 環境也通用的)緩解對照、可監看的指標,以及為什麼「監控主機被打」比一般 RCE 更危險。

技術細節:漏洞類型與攻擊路徑

分類上這是 Missing Authentication for Critical Function(CWE-306),再鏈到任意檔案寫入與 RCE。攻擊複雜度低、無需認證、無需互動。攻擊者打 sidecar 還原端點 → 無認證寫/截斷檔案 → 用 lo_export 把 payload 寫到可執行路徑 → 觸發執行。Splunk 明說沒有 workaround,補丁是唯一根治。即使你不是 Splunk 用戶,這個模式對 Laravel/Nginx 團隊也是一記警鐘:內部服務端點絕不該透過反向代理在無認證下被外部打到。在補丁落地前,可在代理層先把還原端點擋掉、把管理介面鎖進信任網段:

# nginx 緩解:擋掉 PostgreSQL sidecar 還原端點(暫時,非根治)
location ~* ^/v1/postgres/recovery/(backup|restore) {
    deny all;
    return 403;
}

# 管理/sidecar 只開放信任網段
location /en-US/manager/ {
    allow 10.0.0.0/8;   # 你的內網
    deny  all;
}

同理,任何用 PostgreSQL/MySQL 的應用都該檢查:DB 帳號是否擁有不必要的 lo_export/檔案寫入權限?把「資料庫能寫檔」這條路徑收掉,能擋掉一大類「SQL→寫檔→RCE」攻擊。

三類讀者的立刻行動

  • 系統管理員:盤點所有 Splunk Enterprise 版本,受影響的升到 10.2.4 或 10.0.7。AWS 上的部署優先,因為 sidecar 預設開。無法立即補的,先用網段隔離把 sidecar/管理面從公網收回。
  • 開發者:檢查你維護的服務裡,有沒有「內部端點被反向代理意外曝光」的同類問題;收緊 DB 帳號權限,移除非必要的檔案寫入能力(如 PostgreSQL lo_export、MySQL FILE 權限)。
  • 接案商/顧問:對有跑 Splunk 或任何自架監控/log 平台的客戶,寄一封通告:說明 CVE、是否受影響、你建議的補丁與隔離步驟、以及你何時可協助處理。範本見下方聯絡資訊。

補丁 vs 緩解措施對照

方式做什麼效果限制
立即補丁(根治)升級到 10.2.4 或 10.0.7(10.4.0 不受影響)完全消除漏洞,Splunk 表明這是唯一根治需排升級窗口、驗證相容性
網段隔離(緩解)把管理介面與 sidecar 限制在信任 IP,移出公網大幅降低外部可達性內網橫向移動仍可能;非根治
反向代理擋路徑(緩解)在 nginx/WAF deny 還原端點擋掉已知攻擊路徑可能有其他路徑;治標
檔案系統/程序監看(偵測)監看 Splunk 服務帳號的異常寫檔與程序執行能及早發現利用嘗試偵測不等於阻擋

IOC 與威脅情資

Splunk 未公布正式 IOC,偵測以行為為主。可監看的指標:

  • /v1/postgres/recovery/backup/restore 的非預期存取請求。
  • Splunk 服務帳號可寫目錄出現異常的新建/截斷檔案。
  • 非由已知使用者或排程搜尋觸發的程序執行(特別是 Python 腳本)。
  • 非預期的資料庫 backup/restore 操作紀錄。
  • 來自陌生 IP 或雲端託管位址段、針對 Splunk Web 介面的掃描。

不會告訴你的事

  • 「我們是內網」不等於安全。sidecar 可透過主 Web 應用代理被打到,只要有人能到你的 Splunk Web,就可能繞到這條路。內網一旦有一台被釣,整條鏈就成立。
  • 監控主機被打比一般 RCE 更糟。Splunk 蒐集全環境的 log 與憑證碎片,拿下它等於拿到一張環境地圖與橫向移動的起點。把它當「次要系統」延後修補,是最常見也最危險的判斷錯誤。

這代表的更大趨勢

從揭露到公開 PoC 只隔了幾天,這已是 2026 年的常態:邊緣與管理面服務一旦出現「免認證 + 可達」的組合,攻擊產業化的機器會在數日內把它武器化。CWE-306 這種「忘了加驗證」的低級錯誤,在新加入的附屬服務(sidecar、agent、recovery API)上反覆出現——因為它們常被當成「內部用、不會曝光」而跳過認證設計。SecOps 的重點正從「修 CVE」轉向「盤清每一個對外可達的端點到底有沒有驗證」。

常見問題 FAQ

我跑的是 Splunk Cloud,需要動作嗎?

不需要。Splunk Cloud 不使用 PostgreSQL sidecar,不受 CVE-2026-20253 影響。只有自管的 Splunk Enterprise 10.0.x/10.2.x 需要升級。

我把 Splunk 放在內網,還會中嗎?

仍有風險。漏洞可透過主 Web 應用代理被觸發,只要攻擊者能到達 Splunk Web(例如先釣到一台內網機器),就能利用。內網不是豁免,補丁與網段隔離都要做。

沒辦法馬上升級怎麼辦?

Splunk 表明沒有官方 workaround,但你可以先把管理介面與 sidecar 限制到信任網段、在反向代理擋掉還原端點、並加強檔案與程序監看。這些是緩解,不是根治,補丁仍要盡快排。

怎麼判斷有沒有被打過?

檢查 Splunk 服務帳號可寫目錄的異常新檔、非預期的 backup/restore 紀錄、以及非排程觸發的程序執行。發現可疑跡象就走事故應變:隔離、保留證據、輪換該主機可接觸到的憑證。

我的觀點

主流會把這歸類為「又一個該打的 critical CVE,補就對了」。我的判斷是:這顆的真正教訓不在 Splunk,而在「附屬服務免認證」這個正在系統性重演的設計病。sidecar、agent、recovery API 這些近年被塞進產品的小組件,常因為「反正只給內部」而跳過驗證——然後被一個代理路徑曝光,CVSS 直接 9.8。對 ScriptWalker 這種看護客戶系統的工作室,這是一個很實在的看護機會:與其等客戶問「我有沒有事」,不如主動做一輪「對外可達端點 × 是否有驗證」的盤點——把每個經過 nginx 曝光的內部 API、管理面、metrics、recovery 端點列出來,逐一確認驗證與網段。這種主動通報與盤點,正是把一次性接案變成長期信任關係的支點。需要我們替你的環境跑一輪?

資料來源

分享: