// 威脅簡報
Kobako Ruby 沙箱逃脫:沙箱內的腳本可透過綁定的 Service 物件在宿主程式執行任意程式碼
- CVSS
- 10.0 CRITICAL
- CISA KEV
- 未列入
- 弱點類型
- CWE-94 · CWE-470
- 主題
- AI 安全
AI 審稿 2026-10-07(未經人工)指令測試:未提供漏洞重現:未進行驗證紀錄 ↓
Kobako 0.1.0 到 0.9.0 的沙箱可被逃脫:沙箱內的腳本能透過任何一個綁定的 Service 物件,在宿主程式中執行任意 Ruby 程式碼。0.9.1 已修補。
| 誰會中 | 使用 kobako gem 0.1.0 到 0.9.0、讓不受信任或可被攻擊者影響的腳本在 Kobako 中執行,而且至少綁定了一個宿主 Service 物件的應用程式。 |
|---|---|
| 後果 | 腳本可以完全跳出沙箱,在宿主程式(嵌入 Kobako 的那個應用程式)裡執行任意 Ruby,讀取或修改宿主狀態、啟動其他程式。 |
| 現在該做什麼 | 升級 kobako 到 0.9.1 以上。還不能升級時,官方建議不要把任何宿主 Service 物件綁定到執行不受信任腳本的沙箱。 |
| 受影響版本 | 0.1.0 到 0.9.0(所有在 0.9.1 之前釋出的版本) |
| 修好的版本 | 0.9.1 以上(0.25.0 另有進一步強化) |
| CVSS 向量 | 顯示完整向量CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| 時間點 |
|
藍隊應對手冊
確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。
- 01確認版本與曝險條件
kobako 0.1.0 到 0.9.0、會執行不受信任的腳本、而且綁定了至少一個 Service 物件,三者同時成立就受影響。
唯讀查詢grep -n 'kobako' Gemfile.lock - 02留意應用程式產生的異常子程序
TheHackerWire 建議注意應用程式主程序產生預期外的子程序。這是第三方的一般性建議,不是維護者提供的偵測方法,沒有發現也不代表沒被利用。
- 01升級到 0.9.1 以上
0.9.1 讓分派器拒絕呼叫屬於核心模組的方法。
唯讀查詢bundle info kobako - 02還不能升級:不要綁定任何宿主 Service 物件
官方表示受影響版本內沒有其他繞道方法;在升級前,不要把任何宿主 Service 物件綁定到執行不受信任腳本的沙箱。
- 01懷疑遭利用時,把宿主視為已被入侵
這是 PlainCVE 的建議:逃脫後的程式碼以宿主程式的身分執行,所以該程式能讀到的資料與憑證都應視為可能外洩,調查並輪替。PlainCVE 在審閱的資料中沒有找到官方的事件回應指引。
- 01限制誰能提交腳本
PlainCVE 的建議:CVSS 把它評為「不需權限、可經網路」,但實際上要看應用程式是否讓未登入的遠端使用者提交腳本。加上登入與權限控管,可縮小曝險面。
- 02只暴露必要的物件,宿主以最小權限執行
PlainCVE 的建議(非維護者公告):只綁定真正需要的 Service;宿主程式不要持有用不到的憑證或權限,沙箱萬一再被突破,損害也有限。新版 0.25.0 進一步限制綁定物件只暴露它自己類別定義的公開方法;注意 0.25.0 的釋出說明把這個變更標為「BREAKING CHANGES」(破壞性變更),繼承自父類別、混入模組或 Ruby 內建的方法都會被拒絕,可能讓既有腳本無法使用原本的方法。PlainCVE 建議先確認相容性再跟進。
完整修復步驟與說明
# 查看目前版本
grep -n 'kobako' Gemfile.lock
# 升級(Gemfile 中的版本限制需允許 0.9.1 以上)
bundle update kobako
bundle info kobako
| 版本 | 狀態 |
|---|---|
| 0.1.0 – 0.9.0 | 受影響 |
| 0.9.1 | 修補本漏洞 |
| 0.25.0 以上 | 進一步限制綁定物件可暴露的方法;釋出說明標為破壞性變更(BREAKING CHANGES)。PlainCVE 建議確認相容性後跟進 |
- 官方表示受影響版本內沒有其他繞道方法。升級前唯一的做法是不要把任何宿主 Service 物件綁定到執行不受信任腳本的沙箱;PlainCVE 提醒,這可能讓腳本失去需要的功能,只宜當短期措施。
- CVSS 把它評為「經網路、不需權限」。PlainCVE 的判斷:Kobako 是函式庫,實際風險取決於你的應用程式是否讓未登入的遠端使用者提交腳本(TheHackerWire 也指出認證與網路可達性取決於應用程式設計)。PlainCVE 的判斷:即使需要登入,只要是被允許提交腳本的使用者都可能利用,不應延後升級。
攻擊流程
從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。
由上到下是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。
- 攻擊者
攻擊者把一段腳本交給應用程式,在 Kobako 沙箱裡執行
受影響的前提是應用程式會執行不受信任或可被攻擊者影響的腳本。是否需要登入、能否從網路送出,取決於應用程式怎麼設計腳本提交功能。
防禦: PlainCVE 的建議(非維護者公告):限制誰能提交腳本,並要求登入。
- 你的系統
腳本呼叫綁定進沙箱的宿主 Service 物件
只要綁定了任何一個 Service 物件就夠,不需要這個 Service 有什麼特殊行為。
防禦: 還不能升級時(官方建議):不要把任何宿主 Service 物件綁定到執行不受信任腳本的沙箱。
- 你的系統
分派器照單全收腳本指定的方法名稱
舊版直接把腳本給的方法名稱交給宿主物件的 public_send 呼叫,沒有限制只能呼叫 Service 自己提供的功能。
防禦: 升級到 0.9.1+:分派器會拒絕來自 BasicObject、Kernel、Object、Module、Class 這些核心模組的方法。
- 攻擊者
任意 Ruby 程式碼在宿主程式中執行
沙箱完全失效。程式碼可以讀取或修改宿主狀態、啟動其他程式。
防禦: PlainCVE 的建議(非維護者公告):讓宿主程式以最小權限執行。TheHackerWire 建議監控應用程式是否產生預期外的子程序(第三方建議,非維護者提供)。
影響範圍
Kobako 是一個 Ruby gem(Ruby 的套件)。它把 mruby(精簡版 Ruby 直譯器)關在 Wasm 隔離環境裡,讓應用程式可以直接在自己的程式裡,於隔離的沙箱中執行不受信任的 Ruby 腳本。
| 條件 | 是否受影響 |
|---|---|
| kobako 0.1.0 到 0.9.0 + 執行不受信任或可被攻擊者影響的腳本 + 至少綁定一個宿主 Service 物件 | 受影響 |
| kobako 0.9.1 以上 | 已修補 |
| kobako 0.25.0 以上 | 已修補,另有進一步強化(官方沒有把它和本 CVE 連結) |
| 受影響版本、但沒有綁定任何 Service 物件 | 官方建議的暫時做法正是不綁定;仍應升級 |
只要綁定任何一個 Service 物件就足以觸發,不需要這個 Service 有特殊行為。官方表示 0.1.0 到 0.9.0 每一個釋出版本都受影響;CVE 紀錄寫成「>= 0.1.0, < 0.9.1」,兩者一致。TheHackerWire 把「0.9.1」列為受影響版本,與維護者指出 0.9.1 是修補版相衝突,PlainCVE 判斷是該站的錯誤。
原理
沙箱內的腳本(稱為 guest)需要宿主提供的功能時,會呼叫被綁定進沙箱的 Service 物件。宿主端的「分派器」負責把這些呼叫轉給真正的 Ruby 物件。
舊版的分派器直接把腳本給的方法名稱交給 public_send(Ruby 依名稱呼叫公開方法的機制)。問題在於:Ruby 物件不只有 Service 自己定義的方法,還帶著從 Kernel、Object 等核心模組繼承來的通用公開方法。結果就是腳本能在宿主程式裡執行任意 Ruby,沙箱的核心保證完全失效。這對應 CWE-94(程式碼注入)與 CWE-470(不安全反射)。
有問題的思路(概念示意,不是原始程式碼):
展開程式碼範例(ruby)
def dispatch(service, method_name, args)
# 腳本說要呼叫什麼,就呼叫什麼
service.public_send(method_name, *args)
end修好的思路(概念示意):
展開程式碼範例(ruby)
META_OWNERS = [BasicObject, Kernel, Object, Module, Class].freeze
def dispatch(service, method_name, args)
owner = service.method(method_name).owner
# 屬於核心模組的方法一律拒絕
raise Rejected if META_OWNERS.include?(owner)
service.public_send(method_name, *args)
end0.25.0(2026-09-14)又進一步收緊:綁定物件只暴露它自己類別與物件本身在原始碼中定義的公開方法,透過 method_missing 動態回應的名稱也一律拒絕。PlainCVE 的判斷:這表示 0.9.1 仍允許經由 method_missing 處理的名稱,0.25.0 看起來補上了這塊剩餘面向;但官方沒有說這和本 CVE 有關。
時間軸
| 日期 | 事件 |
|---|---|
| (日期未載明) | 0.1.0:OSV 把受影響範圍的起點對應到 commit 631ddc7f |
| 2026-06-11 | 維護者在 GitHub 專案發布安全公告 GHSA-7pwq-q9jf-539h(02:26 UTC) |
| 2026-06-11 | 釋出 v0.9.1(釋出頁只顯示「11 Jun」;專案 CHANGELOG 把 0.9.1 標為 2026-06-11) |
| 2026-06-16 | 保留 CVE 編號 |
| 2026-08-18 | GitHub Advisory Database 發布審核後的公告 |
| 2026-09-14 | 釋出 v0.25.0,進一步限制暴露給沙箱的方法(未與本 CVE 連結) |
| 2026-09-30 | CVE 紀錄公開 |
| 2026-10-01 | 仍未列入 CISA KEV |
延伸閱讀
- 評分: CNA 評分為 CVSS 3.1 10.0(
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)。NVD 的分析狀態為「Deferred」(延後),沒有自己的分數。 - 利用狀況: 截至 2026-10-01 未列入 CISA KEV。沒有資料顯示曾遭實際利用或在修補前被利用;沒列入 KEV 不代表沒被利用。CISA 的 SSVC 評估把它標為可自動化、技術影響為「完全」。
- 概念驗證(PoC)說法不一: CISA 的 SSVC 把利用狀態標為「poc」,官方公告也含 PoC 說明;TheHackerWire 則稱沒有收錄公開 PoC。
- 公開日期說法不一: 維護者的公告在 2026-06-11 公開;TheHackerWire 寫 2026-09-30,那其實是 CVE 公開日。本頁採用較早的 6 月 11 日。
- 修補 commit: 官方公告列出 commit 64f8470,0.9.1 釋出說明引用的是 dd08166。PlainCVE 的判斷:兩者很可能是同一變更的合併 commit 與原始 commit,但沒有資料確認。
- 偵測: TheHackerWire 建議留意應用程式主程序產生預期外的子程序;這是第三方的一般性建議,不是維護者提供的方法。
- 回報與修補者:Ahmed Al Hafoudh。
驗證紀錄 AI 依審稿規則逐項核對來源,全部通過;未經人工審稿,也尚未在我們的環境重現
| AI 審稿 | 2026-10-07 · 審稿規則 |
|---|
驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.
來源
- 安全公告GHSA-7pwq-q9jf-539h — Sandbox escape: guest eval reaches host RCE via method_missing → public_send · elct9620/kobako (GitHub), 2026-06-11 · 查閱 2026-10-01
- CVE / NVD / OSVCVE-2026-55107 record (CVE Services API) · CVE Program, 2026-09-30 · 查閱 2026-10-01
- CVE / NVD / OSVNVD API - CVE-2026-55107 · NIST · 查閱 2026-10-01
- 安全公告GitHub Advisory Database - GHSA-7pwq-q9jf-539h · GitHub, 2026-08-18 · 查閱 2026-10-01
- 修補 commit / 版本Fix commit 64f8470 (transport dispatcher meta-owner blocklist) · elct9620/kobako (GitHub) · 查閱 2026-10-01
- 修補 commit / 版本kobako v0.9.1 release · elct9620/kobako (GitHub), 2026-06-11 · 查閱 2026-10-01
- 修補 commit / 版本kobako v0.25.0 release · elct9620/kobako (GitHub), 2026-09-14 · 查閱 2026-10-01
- 修補 commit / 版本kobako CHANGELOG · elct9620/kobako (GitHub) · 查閱 2026-10-06
- 廠商說明Kobako repository · elct9620 (GitHub) · 查閱 2026-10-01
- 其他OSV - CVE-2026-55107 · OSV · 查閱 2026-10-01
- 新聞報導CVE-2026-55107: Kobako Ruby gem sandbox escape enables host process RCE · TheHackerWire · 查閱 2026-10-01
- 新聞報導TheHackerWire - CVE-2026-55107 · TheHackerWire · 查閱 2026-10-01
媒體簡報
一句話
Kobako 是一個 Ruby 套件,讓應用程式在隔離的沙箱(Wasm/mruby)裡執行不受信任的 Ruby 腳本。0.1.0 到 0.9.0 的所有版本都有一個缺陷,沙箱內的腳本可以完全跳脫,在宿主應用程式裡執行任意程式碼。維護者在 2026 年 6 月 11 日釋出修補版 0.9.1;CVE 編號則到 9 月 30 日才公開,評分為最高的 10.0。
關鍵數字
- 嚴重度
- CVSS 3.1 10.0(CNA 評分;NVD 尚未分析) cveawg.mitre.org
- 受影響版本
- 0.1.0 到 0.9.0 github.com
- 修補版本
- 0.9.1(2026-06-11) raw.githubusercontent.com
- 維護者安全公告
- GHSA-7pwq-q9jf-539h,2026-06-11 公開 github.com
- CVE 公開
- 2026-09-30 cveawg.mitre.org
- 回報與修補者
- Ahmed Al Hafoudh github.com
已確認
- 0.1.0 到 0.9.0 中,沙箱內的腳本可透過任何綁定的 Service 物件在宿主程式執行任意 Ruby。
- 0.9.1 已修補,分派器會拒絕屬於核心模組的方法。
- 截至 2026-10-01,未列入 CISA 已知遭利用漏洞清單(KEV)。
尚未確認 / 說法不一
- 是否曾遭實際利用、是否在修補前就被利用,都沒有資料;沒列入 KEV 不代表沒被利用。
- 是否有公開的概念驗證(PoC)說法不一:CISA 的評估標為 poc、官方公告含 PoC 說明,TheHackerWire 則稱沒有收錄公開 PoC。
- 公開日期說法不一:維護者公告是 2026-06-11,TheHackerWire 寫 2026-09-30(那是 CVE 公開日)。
- 0.25.0 的後續強化是否與本漏洞有關,官方沒有說明。
可引用的一句話
沙箱的牆本身沒有破洞,問題出在牆上那扇服務窗口:它不問來者要什麼,就把整個廚房交了出去。
圖片
引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.
Kobako Ruby 沙箱逃脫:沙箱內的腳本可透過綁定的 Service 物件在宿主程式執行任意程式碼 Kobako 是一個 Ruby 套件,讓應用程式在隔離的沙箱(Wasm/mruby)裡執行不受信任的 Ruby 腳本。0.1.0 到 0.9.0 的所有版本都有一個缺陷,沙箱內的腳本可以完全跳脫,在宿主應用程式裡執行任意程式碼。維護者在 2026 年 6 月 11 日釋出修補版 0.9.1;CVE 編號則到 9 月 30 日才公開,評分為最高的 10.0。 關鍵數字: - 嚴重度:CVSS 3.1 10.0(CNA 評分;NVD 尚未分析)(https://cveawg.mitre.org/api/cve/CVE-2026-55107) - 受影響版本:0.1.0 到 0.9.0(https://github.com/elct9620/kobako/security/advisories/GHSA-7pwq-q9jf-539h) - 修補版本:0.9.1(2026-06-11)(https://raw.githubusercontent.com/elct9620/kobako/main/CHANGELOG.md) - 維護者安全公告:GHSA-7pwq-q9jf-539h,2026-06-11 公開(https://github.com/elct9620/kobako/security/advisories/GHSA-7pwq-q9jf-539h) - CVE 公開:2026-09-30(https://cveawg.mitre.org/api/cve/CVE-2026-55107) - 回報與修補者:Ahmed Al Hafoudh(https://github.com/elct9620/kobako/security/advisories/GHSA-7pwq-q9jf-539h) 已確認: - 0.1.0 到 0.9.0 中,沙箱內的腳本可透過任何綁定的 Service 物件在宿主程式執行任意 Ruby。 - 0.9.1 已修補,分派器會拒絕屬於核心模組的方法。 - 截至 2026-10-01,未列入 CISA 已知遭利用漏洞清單(KEV)。 尚未確認 / 說法不一: - 是否曾遭實際利用、是否在修補前就被利用,都沒有資料;沒列入 KEV 不代表沒被利用。 - 是否有公開的概念驗證(PoC)說法不一:CISA 的評估標為 poc、官方公告含 PoC 說明,TheHackerWire 則稱沒有收錄公開 PoC。 - 公開日期說法不一:維護者公告是 2026-06-11,TheHackerWire 寫 2026-09-30(那是 CVE 公開日)。 - 0.25.0 的後續強化是否與本漏洞有關,官方沒有說明。 「沙箱的牆本身沒有破洞,問題出在牆上那扇服務窗口:它不問來者要什麼,就把整個廚房交了出去。」— PlainCVE https://plaincve.date/vulns/cve-2026-55107-kobako-ruby-sandbox-escape
如何引用本頁
本文採 CC BY 4.0,轉載請保留署名與連結。
PlainCVE 團隊(2026)。《Kobako Ruby 沙箱逃脫:沙箱內的腳本可透過綁定的 Service 物件在宿主程式執行任意程式碼》。PlainCVE。https://plaincve.date/vulns/cve-2026-55107-kobako-ruby-sandbox-escape(查閱日期:YYYY-MM-DD)BibTeX
@misc{cve202655107kobakorubysandboxescape2026,
title = {Kobako Ruby 沙箱逃脫:沙箱內的腳本可透過綁定的 Service 物件在宿主程式執行任意程式碼},
author = {PlainCVE 團隊},
year = {2026},
howpublished = {PlainCVE},
url = {https://plaincve.date/vulns/cve-2026-55107-kobako-ruby-sandbox-escape},
note = {更新於 2026-10-07}
}