Twig 沙盒多重繞過(CVE-2026-47732):__toString() 政策繞過與 3.26.0 修補
GitHub Advisory Database · 2026-06-05
Twig PHP 模板引擎於 2026 年 6 月 5 日修補 CVE-2026-47732(GHSA-pr2w-4gpj-cpq4),一個允許沙盒(sandbox)模板作者繞過 __toString() 安全政策的高危漏洞,受影響版本為 3.25.0 及以下,修補版本為 3.26.0。Twig 廣泛用於 Symfony、Drupal 等 PHP 框架的模板層,此漏洞讓沙盒模板中的受限代碼可以呼叫未被允許的物件方法。
漏洞機制
Twig 沙盒模式透過 SecurityPolicy 限制模板可以呼叫的類別方法,checkMethodAllowed() 在每次方法呼叫前驗證授權。然而,SandboxNodeVisitor 僅對明確的方法呼叫節點插入政策檢查,對於會觸發 PHP 隱式型別強制轉換(string coercion)的語言結構則有遺漏。
以下 Twig 結構在處理 Stringable 物件時會觸發 PHP 的 __toString() 而不經過政策檢查:
- 條件運算式(三元、null coalesce)在字串上下文中的求值
- 寬鬆比較運算子(
==、!=、<、>)與matches運算子 - Twig 測試函式,特別是
is empty - 被允許方法的引數傳遞
do標籤與範圍運算子(..)
攻擊者只要能在沙盒模板中存取任何 Stringable 物件,就可以透過上述結構隱式呼叫其 __toString() 方法,即便該方法未列在 SecurityPolicy 的允許清單中。
修補方式
Twig 3.26.0 透過兩個機制修補:(1)引入 CoercesChildrenToStringInterface 介面,讓語言結構的節點可以宣告哪些子節點需要插入政策守衛;(2)在 CoreExtension::getAttribute() 中新增執行期檢查,確保隱式型別轉換路徑也通過政策驗證。
注意:此漏洞在 3.26.0 修補後仍發現兩個殘留繞過——CVE-2026-48806(動態 mapping key 的 __toString 繞過)與 CVE-2026-48807(join/replace 和 in/not in 運算子透過 Traversable 的繞過),均在 3.27.0 中修補。建議直接升級至 3.27.0 而非 3.26.0。此漏洞由 Anthropic Glasswing 安全團隊發現。
DbGate 遠端程式碼執行(GHSA-hv83-ggc4-v385):functionName 注入繞過沙盒
GitHub Advisory Database · 2026-06-05
資料庫管理工具 DbGate 修補 CVE-2026-48017(GHSA-hv83-ggc4-v385),一個在 /runners/load-reader 端點的 RCE(遠端程式碼執行)漏洞,任何已登入的 DbGate 使用者(無需特殊權限)均可利用,影響版本低於 7.1.9 的所有 dbgate-api。
漏洞機制
漏洞根源是 functionName 參數被直接插入 JavaScript 程式碼模板而未經任何清理。POST /runners/load-reader 端點接受 JSON 請求體中的 functionName 欄位,後端將其用於動態建構 JavaScript 執行字串:
// 後端代碼(示意)
const code = `
const require = null;
const fn = require('dbgate-plugin-${functionName}').default;
fn(options);
`;
eval(code);攻擊者透過控制 functionName 可以注入任意 JavaScript:
// 惡意 functionName(示意)
"x'); process.binding('spawn_sync').spawn({file:'/bin/sh',args:['-c','id > /tmp/pwned']});//"require = null 的沙盒限制被 process.binding('spawn_sync') 輕易繞過——process.binding() 是 Node.js 的底層內建 API,不受 require = null 影響,可直接存取作業系統的 spawn 功能。端點缺少 /runners/start 端點存在的權限檢查,任何已認證用戶均可觸發。
受影響版本與修補
- 受影響:
dbgate-api低於 7.1.9 的所有版本 - 修補版本:
7.1.9 - 修補方式:
functionName改為白名單驗證(只允許已知外掛名稱),並新增與/runners/start相同等級的授權檢查
DbGate 是 GitHub 上 15,000+ star 的開源資料庫客戶端,支援 MySQL、PostgreSQL、MongoDB 等多種資料庫,常被工程師用於在開發環境中管理資料庫。在暴露於網路的 DbGate 實例上,此漏洞對攻擊者幾乎無門檻——登入即可 RCE。
Cisco SD-WAN 零日 CVE-2026-20245:命令注入無補丁,CVSS 7.8
BleepingComputer · 2026-06-05
Cisco 確認 Catalyst SD-WAN Manager 存在一個正在被積極利用的零日漏洞 CVE-2026-20245,截至 2026 年 6 月 5 日尚無補丁。CVSS 評分 7.8,為高危(High)。Mandiant 首先發現並向 Cisco 回報此漏洞,確認已有真實攻擊案例造成邊緣設備配置變更。
漏洞細節
根因在 Cisco Catalyst SD-WAN Manager CLI 的輸入驗證不足。持有 netadmin 權限的本地攻擊者可透過上傳精心構造的檔案,在系統中執行任意命令並提升至 root 權限。初始的 netadmin 存取通常透過鏈式漏洞取得:先利用 CVE-2026-20182 或 CVE-2026-20127(已有修補)取得初始 netadmin shell,再以 CVE-2026-20245 提升至 root。
受影響部署類型:
- On-Premises 部署
- Cisco SD-WAN Cloud-Pro
- Cisco SD-WAN Cloud(Cisco Managed)
- Cisco SD-WAN for Government(FedRAMP)
緩解措施
在正式補丁發布前,Cisco 建議:
- 升級至針對
CVE-2026-20182發布的修補版本(2026 年 5 月 14 日),可切斷最常見的漏洞鏈初始進入點 - 執行
request admin-tech指令備份系統日誌,保留取證證據 - 在
/var/log/scripts.log中搜尋上傳租戶配置至 vSmart 控制器的異常記錄 - 若懷疑已被入侵,聯繫 Cisco TAC 取得具體補救步驟
這是 2026 年 Cisco SD-WAN 被積極利用的第七個零日漏洞,說明 SD-WAN 管理面板持續是高價值攻擊目標。無修補窗口下,最有效的緩解是限制 SD-WAN Manager 管理介面的存取,僅允許來自受控 IP 範圍的連線。