Ruby on Rails修補重大漏洞,攻擊者可上傳圖片讀取伺服器任意檔案

Ruby on Rails 已修補 Active Storage 的重大漏洞 CVE-2026-66066;當應用使用 libvips 處理不受信任的圖片上傳時,未認證攻擊者可能讀取伺服器任意檔案,進而取得金鑰、憑證並擴大攻擊。

事件說明

Ruby on Rails 於 7 月 29 日發布安全公告,修補 Active Storage 元件的重大漏洞 CVE-2026-66066,風險等級為 Critical,CVSS 分數為 9.5。此漏洞的核心問題不是一般的檔案上傳,而是當應用程式使用 libvips 作為圖片處理函式庫,且允許不受信任的使用者上傳圖片時,攻擊者可透過特製檔案讀取伺服器上的任意檔案。若讀到的是 Rails 處理程序可存取的環境資料,風險會直接擴大到金鑰、憑證與雲端權杖外洩。[3][5][7]

根據公開資訊,修補版本包含 Active Storage 7.2.3.2、8.0.5.1 與 8.1.3.1;同時,管理人員還需要將 libvips 升級至 8.13 版或更新版本,才能完成防護鏈。相關說明也指出,單純升級 Rails 版本並不一定足夠,因為漏洞利用條件與圖片處理鏈的實作方式有關。[3][5][7]

技術分析

這起事件的技術重點在於 Active Storage 與 libvips 的交界面。Active Storage 負責檔案上傳、附件管理與圖片變體處理;當其使用 libvips 處理使用者上傳的圖片時,若未正確限制不受信任的輸入,就可能讓攻擊者把「圖片上傳」轉化為「伺服器端任意檔案讀取」的入口。[1][5][9]

公開研究與社群公告都指出,受影響情境有明確條件:必須啟用 Active Storage、variant processor 設為 :vips,且允許不受信任的使用者上傳圖片。Ethiack 與 Ruby on Rails 社群公告也提到,這條風險鏈與 Rails 7.x/8.x 的圖片變體處理密切相關;相對地,Rails 6.x 只有在手動將 Active Storage 設為使用 libvips 且接受不受信任的圖片上傳時,才可能落入風險範圍。[1][5]

從攻擊效果來看,若攻擊者成功讀取 Rails process environment,最有價值的往往是 secret_key_base、Rails master key、資料庫憑證、雲端儲存服務金鑰與第三方 API token。這些資訊不僅可能讓攻擊者持續存取應用資料,也可能成為後續遠端程式碼執行(RCE)或橫向移動的跳板。[2][5][7]

部分研究將此問題描述為任意檔案讀取與遠端程式碼執行風險;這表示文件讀取本身已足以造成嚴重外洩,而一旦後續能利用已洩漏的秘密值控制應用或周邊服務,攻擊就可能進一步升級。[1][2][7]

影響範圍

依據多方資訊,受影響版本主要包含 activestorage < 7.2.3.2、>= 8.0.0.beta1, < 8.0.5.1,以及 >= 8.1.0.beta1, < 8.1.3.1。修補版則為 7.2.3.2、8.0.5.1 與 8.1.3.1。[2][9]

此外,Rails 6.x 在一般預設安裝情境下通常不受影響,但若 Active Storage 被自訂為使用 libvips 且接受不受信任的圖片上傳,仍可能落入風險範圍。這表示實務上不能只看主版本號,還必須檢查實際的 Active Storage 與圖片處理設定。[1][2]

受影響對象主要是那些具備圖片上傳功能、且後端採用 libvips 做變體處理的應用程式。只要應用程式讓未驗證或低信任使用者上傳圖片,就要視為高風險資產。[1][5][7]

防護建議

最直接且必要的措施,是將 Rails 與 Active Storage 更新到已修補版本,並同步確認 libvips 已升級至 8.13 或更新版本。多份公告都強調,補丁不是單點更新,而是要把應用框架與底層圖片處理套件一起納入修補範圍。[3][5][7]

第二步是立即盤點所有可被 Rails process 讀取的秘密值,包含 secret_key_base、Rails master key、資料庫密碼、雲端儲存憑證與第三方權杖,並在修補後完成輪替。因為一旦這些值已可能被讀出,單純封堵漏洞並不足以消除既有曝險。[2][5][7]

第三步是檢查應用是否真的需要讓不受信任的使用者上傳圖片,以及是否必須使用 libvips 做圖片處理。若業務可行,應縮小上傳入口,以減少未來類似攻擊面。[1][5][9]

第四步是回溯檢查是否存在異常上傳、讀檔或憑證使用行為,並同步檢查應用層、儲存層與雲端憑證的使用紀錄。[2][5][7]

5步驟修補清單

  • 確認 Rails、Active Storage 與 libvips 版本是否落在受影響範圍,優先升級至 7.2.3.2、8.0.5.1 或 8.1.3.1。[3][5][7]
  • 將 libvips 升級至 8.13 或更新版本,避免只更新 Rails 而未處理底層函式庫。[3][5][7]
  • 輪替所有可能被 Rails process 讀取的秘密值,包括 secret_key_base、Rails master key、資料庫憑證與雲端 token。[2][5][7]
  • 檢查圖片上傳功能是否接受不受信任來源,必要時收斂上傳入口。[1][5]
  • 回溯檢查是否存在異常上傳、讀檔或憑證使用行為,必要時啟動事件應變。[2][5][7]

參考資料

  • ITNEWS ISC:Ruby on Rails修補重大漏洞,攻擊者可上傳圖片讀取伺服器任意檔案
  • Ruby on Rails 社群公告:CVE-2026-66066
  • JPCERT/CC:Ruby on Rails 的 Active Storage 弱點說明
  • Ethiack:Critical RCE in Rails via Active Storage (CVE-2026-66066)
  • The Hacker News:Critical Rails Flaw Could Let Unauthenticated Attackers Read Arbitrary Files

更多資安新聞