Wasmtime 沙箱因「結尾斜線」被繞過,同日 Kirby 爆兩起漏洞、Socket.IO 也現阻斷服務洞
RustSec Advisory Database / GitHub Advisory Database · 2026-08-31
2026 年 8 月 31 日,Wasmtime、Kirby 與 Socket.IO 的 engine.io 各自傳出安全公告:Wasmtime 沙箱可因路徑結尾多一斜線遭繞過(RUSTSEC-2026-0269,CVSS 8.8);Kirby 同日修補縮圖路徑穿越(CVE-2026-75594)與分塊上傳漏檢(CVE-2026-71415);engine.io 修補單一封包即可觸發當機的 CVE-2026-59724。三者皆已在當天釋出修補版本,未升級部署應盡速處理。
漏洞機制
Wasmtime 用 cap-std 模擬 Linux openat2+RESOLVE_BENEATH 的「不可逃逸根目錄」解析;macOS 或核心早於 5.6 的 Linux 則退回自製逐段解析。路徑或符號連結帶結尾斜線時,自製邏輯誤判段落而跳出沙箱根目錄,讓具寫入權限的 guest 觸及 host 任意檔案,唯讀情境也可能洩漏檔案。
Kirby 的 CVE-2026-75594 出在 Kirby\Cms\Media::thumb():伺服器允許 URL 含編碼斜線 %2f(如 nginx、PHP 內建伺服器,或啟用 AllowEncodedSlashes 的 Apache)時,縮圖檔名未擋路徑分隔符號。攻擊者可跨目錄產生、存取甚至刪除任意有效縮圖設定(JSON job file)。同日揭露的 CVE-2026-71415 為分塊上傳寫入暫存前未查權限,無權限帳號可持續灌分塊,暫存檔留存 24 小時耗盡磁碟。
Socket.IO 的 engine.io 處理 WebTransport 升級請求時以 clients[sid] 直接查找,未檢查該鍵是否為「自身屬性」(own property)。攻擊者將 session id 設為 __proto__,查找便解析到 Object.prototype 而非 undefined,後續誤當合法用戶端呼叫方法,TypeError 形成未處理 Promise rejection 而讓 Node.js 崩潰。
受影響版本
| 項目 | 識別碼 | 受影響版本 | 已修補版本 |
|---|---|---|---|
| Wasmtime | RUSTSEC-2026-0269 | <24.0.13/25–36.0.13/37–46.0.2/47.0.0–47.0.3 | 24.0.13/36.0.14/46.0.3/47.0.4 |
| Kirby(縮圖穿越/分塊漏檢) | CVE-2026-75594/CVE-2026-71415 | ≤4.9.4、5.0.0–5.5.1 | 4.9.5/5.5.2 |
| engine.io | CVE-2026-59724 | 6.5.0–6.6.6 | 6.6.7 |
修補與緩解
Wasmtime 已在 24.0.13、36.0.14、46.0.3、47.0.4 修正;Linux 5.6 以上核心本不受影響,其餘平台應盡速升級。Kirby 在 5.5.2(舊分支 4.9.5)修掉兩漏洞:Media::thumb()/file::version 擋路徑分隔符號與 ../,分塊端點補上權限檢查(commit 37e206f)。Socket.IO 在 engine.io@6.6.7(commit 1fa1f46)修正查找邏輯,無法立即升級可先停用 WebTransport 或於代理層擋下請求。
原始來源:RustSec、GHSA-9vx2-j98c-p72w、GHSA-67mx-6wf2-92xp、GHSA-gr94-w7qr-f4j3