KindaRails2Shell (CVE-2026-66066):透過 Active Storage 上傳的任意檔案讀取與遠端程式碼執行
1. 基本資訊
- 文章標題:Ruby on Rails Active Storage 漏洞警示導致遠端程式碼執行
- 發佈單位:JPCERT/CC
- 發佈與更新日期:2026-07-30
- 原始文章:https://www.jpcert.or.jp/at/2026/at260021.html
- 相關來源:https://github.com/rails/rails/security/advisories/GHSA-xr9x-r78c-5hrm
- 相關實體:CVE-2026-66066、KindaRails2Shell、Ruby on Rails、Active Storage、libvips、ruby-vips
- 嚴重性:嚴重
2. 一句摘要
這是一個結合 Active Storage 直接上傳與 libvips 變體處理的漏洞,攻擊者可未經身份驗證上傳特製檔案,讀取伺服器上的檔案與憑證,並視條件在 Rails 程序權限下執行程式碼。
3. 攻擊流程
- 攻擊者發現或猜測目標 Rails 應用程式使用 Active Storage。
- 攻擊者透過未驗證的直接上傳功能註冊特製檔案。
- 攻擊者觸發變體處理,由有漏洞的 Active Storage 與 libvips 預設建置處理。
- 攻擊者讀取伺服器上的任意檔案。
- 攻擊者取得 Rails 密鑰、雲端憑證、資料庫憑證及其他敏感資料。
- 攻擊者可能利用取得的密鑰或處理鏈達成遠端程式碼執行。
- 攻擊者可能進一步橫向移動至資料庫、儲存體、雲端環境或 CI/CD 管線(推論)。
4. 攻擊者位置與執行位置
攻擊者透過 HTTP 從外部網路上傳檔案。處理發生在 Rails 應用程式伺服器與 libvips 程序。遠端程式碼執行以 Rails 或變體處理服務的作業系統權限執行。
5. 受害者與管理員可見的現象
- 即使沒有面向使用者的上傳畫面,只要啟用 Active Storage 即可能存在漏洞。
- 管理員可在日誌中看到直接上傳、blob 建立、變體請求,以及 libvips 例外或檔案存取。
- 因外觀與正常圖片處理相似,單靠 WAF 難以偵測。
6. 成功與失敗條件
成功條件
- Active Storage 已啟用。
- 變體處理器設為
:vips。 - libvips 使用預設建置,例如來自發行套件。
- 使用有漏洞的版本(早於 7.2.3.2、8.0 至 8.0.5.1,或 8.1 至 8.1.3.1)。
失敗條件
- 已更新至修復版本。
- 已套用 libvips/ruby-vips 條件的官方因應措施。
- 直接上傳與變體處理已停止或網路存取受限。
- 密鑰與檔案分離,並遵循最小權限原則。
7. 成功時的後果
伺服器上的檔案與憑證遭到外洩,導致遠端程式碼執行、資料庫遭入侵、雲端資源濫用,以及原始碼或客戶資料遭竊。JPCERT/CC 建議將所有可讀取的憑證視為已遭入侵而進行更換。
8. 可觀察的日誌
- 電子郵件:通常沒有。
- Proxy/SWG/DNS:應用程式伺服器後續流向未知目的地的流量,下載套件或工具。
- Endpoint/EDR:Rails/libvips 異常檔案存取、子程序、shell,以及讀取機密檔案。
- Identity/IdP:應用程式密鑰、雲端金鑰與資料庫憑證的異常使用。
- SaaS/Cloud:物件儲存 blob/變體、Secrets Manager,以及雲端稽核日誌。
- 網路:直接上傳、特製 blob、變體處理請求,以及遠端程式碼執行後的輸出流量。
9. 攻擊成功判定
- 僅接觸:探測目標端點。
- 使用者動作:不需要。
- 初始執行:註冊特製 blob 與變體處理。
- 惡意軟體或成功驗證:任意檔案讀取、使用密鑰,以及子程序執行。
- 資料竊取 / 工作階段入侵:對密鑰、資料庫與雲端資料的異常存取。
- 確認後續入侵:Web shell、持續性程序、新金鑰、資料庫竄改,以及外部資料外洩。
10. 調查手冊
- 觸發條件:偵測到有漏洞的版本、PoC 風格的上傳、libvips 異常,或機密檔案存取。
-
初始檢查:確認 Rails、
activestorage、libvips與ruby-vips版本、:vips設定,以及直接上傳的可及性。 - 端點:保留 Web、Rails 與 Active Storage 日誌、blob、變體、程序,以及檔案稽核。
- 驗證與雲端:檢查所有密鑰的異常使用,包括 Rails 憑證、環境變數、資料庫與 S3。
- 後續動作:追蹤新程序、cron 工作、服務、web shell、輸出流量,以及資料存取。
- 遏制措施:更新軟體、必要時停止功能、隔離受影響主機、撤銷並輪換所有可讀取的憑證,以及從已知良好版本重建。
- 判定類別:有漏洞 / 已探測 / 惡意上傳 / 檔案讀取 / 憑證使用 / RCE / 下游入侵。
11. 防禦與偵測構想
- 單一事件:直接上傳後出現異常變體、libvips 存取機密檔案,或 Rails 產生 shell。
- 時間軸關聯:Blob 建立 → 變體處理 → 機密檔案讀取 → 新驗證 → 輸出流量。
- 威脅狩獵:跨所有面向網際網路的 Rails 應用程式,交叉比對 Active Storage 設定與過去的 blob/變體請求。
- 日誌不足:若無物件儲存與檔案存取稽核,難以判定檔案讀取是否成功。
- 優先因應措施:更新軟體、安全管理密鑰、套用服務最小權限,以及限制上傳。勿依賴 WAF 取代更新。
12. 事實 / 推論 / 假說
事實
- JPCERT/CC 已確認公開 PoC,並警示大規模利用潛力。
- 即使應用程式沒有面向使用者的上傳功能,仍可能因直接上傳缺乏驗證而遭針對。
- JPCERT/CC 建議更換所有可讀取的憑證。
推論
- 若 Rails 應用程式擁有高雲端權限,僅檔案讀取(尚未執行遠端程式碼)即可導致嚴重雲端入侵。
假說
- 將 Active Storage 事件與主機檔案存取日誌結合,可比單用 WAF 更精準地判定攻擊成功。
13. MITRE ATT&CK 對應
- 高可信度:T1190 利用公開面向應用程式、T1005 從本地系統取得資料、T1552.001 檔案中的憑證。
- 中可信度:T1059 命令與指令碼直譯器、T1078 有效帳戶、T1105 入口工具傳輸、T1041 透過 C2 進行資料外洩。
14. 未知事項與額外調查
- 實際利用的存在與開始時間
- PoC 的確切檔案格式與請求順序
- 可讀取範圍與遠端程式碼執行的完整先決條件
- 對託管服務與衍生框架的影響
15. 對 SOC 與組織的影響
Rails 廣泛用於網路服務,即使沒有可見的上傳功能仍可能遭針對,風險相當高。組織必須對照資產清冊檢查 Gem lockfile 與執行時期設定,並假設已遭入侵而輪換憑證。
16. 依角色摘要
- 針對 SOC:關聯上傳、變體、機密讀取與驗證使用。在 PoC 釋出後調查所有歷史日誌。
- 針對管理員:檢查 Rails 與 libvips 相依性、更新它們,以及輪換所有可讀取的密鑰。
- 針對使用者:不需要使用者動作。若發現服務異常,請回報管理員。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.