資安雷達 2026 年 5 月 22 日

2026-05-22 — CVE-2026-47243 Kata Containers virtiofs 逃脫、CVE-2026-46680 containerd runAsNonRoot 繞過、Twig 三連沙箱 CVE

primary=https://www.openwall.com/lists/oss-security/2026/05/21/ primary=https://github.com/advisories/GHSA-fqw6-gf59-qr4w primary=https://github.com/advisories/GHSA-45vw-wh46-2vx8 primary=https://github.com/advisories/GHSA-mm6w-gr99-p3jj primary=https://github.com/advisories/GHSA-7fxw-r6jv-74c8

CVE-2026-47243:Kata Containers runtime-rs virtiofsd 符號連結逃脫,容器可讀取宿主機任意檔案

oss-security 郵件列表 · 2026-05-21

Kata Containers runtime-rs 3.30 於 2026 年 5 月 21 日揭露 CVE-2026-47243,漏洞位於 virtiofsd 元件,允許容器內的來賓 root(guest-root)透過符號連結逃逸取得宿主機 root(host-root)等級的檔案系統存取。Kata Containers 以虛擬機器隔離為賣點,此漏洞是一個設計上的邊界突破。

漏洞機制

virtiofsd 是 virtio-fs 的守護行程,負責將宿主機目錄以 VirtIO 協定掛載到客戶端 VM 內。CVE-2026-47243 的根本原因是 virtiofsd 在處理從客戶端 VM 傳來的路徑時,未能在路徑解析過程中正確防範符號連結(symlink)跳出預期目錄樹的情況。

攻擊者控制客戶端 VM 後,可在共享目錄中建立精心構造的符號連結鏈,誘使 virtiofsd 在宿主機側解析到授權掛載目錄範圍之外的路徑。這違反了 virtiofs 的安全假設:宿主機側的守護行程應作為信任邊界,防止客戶端 VM 存取宿主機任意位置。

受影響版本

  • Kata Containers runtime-rs 3.30(確認受影響)
  • 建議檢查所有使用 virtiofsd 進行目錄共享的 Kata Containers 部署

修補與緩解

建議升級至含修補的版本(詳見 Kata Containers 官方安全公告)。緩解措施包括:限制容器內的 root 權限(使用 rootless 容器)、避免對不受信任的工作負載掛載宿主機目錄,或改用不依賴 virtiofsd 的隔離方式。

原始來源:oss-security 郵件列表


CVE-2026-46680:containerd 使用者 ID 解析缺陷允許繞過 Kubernetes runAsNonRoot

GitHub Security Advisories · 2026-05-21

containerd 於 2026 年 5 月 21 日修補 CVE-2026-46680(CVSS 7.3,High),影響 containerd v1.7.27–1.7.31 及 v2.x 多個版本。漏洞允許攻擊者透過精心構造的容器映像繞過 Kubernetes 的 runAsNonRoot 安全限制,以 root(UID 0)執行容器。

漏洞機制

問題根源在 containerd 對 User 指令的解析邏輯:當 Dockerfile 中的 USER 值為超出 32 位元整數上限的大型數字字串時,containerd 錯誤地將其當作使用者名稱而非數字 UID 處理(CWE-843 類型混淆)。攻擊者在映像的 /etc/passwd 中加入一筆將該大數字字串對應到 root 的記錄,就能使容器最終以 UID 0 執行。

這繞過了 Kubernetes Pod Security Context 的 runAsNonRoot: true 設定——Kubelet 在啟動容器前會檢查 UID,但 containerd 的錯誤解析導致 UID 判斷失真,Kubelet 收到的是「非 root」的假象。

受影響版本

  • containerd 1.7.27–1.7.31 → 修補版本:1.7.32
  • containerd/v2 2.0.4–2.0.8 → 修補版本:2.0.9
  • containerd/v2 2.1.x(全部)→ 已 EOL,無修補
  • containerd/v2 2.2.x–2.2.3 → 修補版本:2.2.4
  • containerd/v2 2.3.0-beta → 修補版本:2.3.1

修補與緩解

立即升級至對應的修補版本。緩解措施:在 Kubernetes Pod Security Context 中明確指定數字 runAsUser(如 runAsUser: 1000),這比依賴 runAsNonRoot 更可靠,可避免此類解析歧義。

原始來源:GHSA-fqw6-gf59-qr4w


Twig 三連 CVE:沙箱繞過任意 PHP 執行、物件解構繞過、快取模板 checkSecurity 失效

GitHub Security Advisories · 2026-05-21

PHP 模板引擎 Twig 於 2026 年 5 月 21 日修補三個安全漏洞,全部影響 twig/twig 3.x,修補版本為 3.26.0。三個 CVE 均屬於沙箱機制繞過,在允許不受信任使用者編寫模板的場景下(多租戶 CMS、使用者自定義模板等)具有嚴重影響。

漏洞機制

CVE-2026-46640(CVSS 8.7,High,版本 3.15.0–3.25.x):_self.(<string>) 巨集參考語法。DotExpressionParser 遇到 _self 作為接收者且括號內是字串字面值時,走的是巨集呼叫路徑,將攻擊者控制的字串直接插入 MacroReferenceExpression 名稱,未做識別符號驗證。編譯後的 PHP 程式碼在沙箱安全檢查之前就已執行任意程式碼。

CVE-2026-46639(CVSS 8.7,High,版本 3.24.0–3.25.x):物件解構指定({% do %} 標籤)。ObjectDestructuringSetBinary::compile() 在呼叫 CoreExtension::getAttribute() 時,$sandboxed 參數被硬編碼為 false,與正確實作的 GetAttrExpression::compile() 不同,導致 SecurityPolicy 的屬性和方法白名單形同虛設。

CVE-2026-46638(CVSS 5.8,Moderate):{% sandbox %}{% include %} 快取模板的 checkSecurity() 不執行。若模板在同一 Environment 實例中已在非沙箱情境下載入過,建構函式(含 checkSecurity() 呼叫)已執行完畢,之後在沙箱情境下 include 時不再重新執行安全檢查。這是 CVE-2024-45411 的不完整修補。

修補

全部三個問題均在 Twig 3.26.0 中修補。對於無法立即升級的部署,應避免讓不受信任使用者提供包含 _self.()、物件解構、或 {% sandbox %}{% include %} 語法的模板內容。

原始來源:GHSA-45vw-wh46-2vx8GHSA-mm6w-gr99-p3jjGHSA-7fxw-r6jv-74c8


End of article
0
Would love your thoughts, please comment.x
()
x