
2025年4月,Orange Cyberdefense在一次事件調查中發現Craft CMS存在關鍵漏洞,該漏洞現已編號為CVE-2025-32432。此缺陷允許未經認證的遠端程式碼執行(RCE),其嚴重程度經國家漏洞資料庫(NVD)評定為最高等級,CVSS v3.1評分達10.0(關鍵級)。
OPSWAT 基礎設施網路安全研究生獎學金計畫的一環,我們的研究員對此漏洞進行了全面研究,包括重現攻擊手法、驗證其影響範圍、評估組織風險,以及分析建議防護策略。
本部落格深入剖析CVE-2025-32432漏洞,全面解析其根本成因、攻擊流程及廣泛的安全影響,同時為組織機構提供可執行的防護指引,協助抵禦此項威脅。
CVE-2025-32432 簡介
CVE-2025-32432 影響 Craft CMS 版本 3.0.0-RC1 至 3.9.14、4.0.0-RC1 至 4.14.14,以及 5.0.0-RC1 至 5.6.16。 此漏洞歸類為 CWE-94:程式碼注入,源於對未經信任輸入的不當處理,最終導致未經認證的遠端程式碼執行(RCE)漏洞。

Craft CMS 與 Yii 框架
Craft CMS 是一款現代化內容管理系統,讓開發人員與內容團隊能夠打造靈活且完全客製化的網站,而非依賴僵化的預設模板。該系統在全球超過 46,000 個網站中被採用,不僅應用廣泛,更是攻擊者尋求高影響力漏洞的常見目標。
Craft CMS 建立於Yii 框架之上,這是一個專為現代網頁開發打造的快速且強大的 PHP 框架。Yii 提供核心架構與工具,而 Craft CMS 則在此基礎上進行擴展,以實現靈活的內容管理系統。

Yii 框架的核心功能之一是其依賴注入(DI)容器。依賴注入是一種設計模式,它為元件提供所需資源,而非要求元件自行建構這些資源。Yii 的 DI 容器具備高度靈活性,能夠透過相對簡單的配置規則建構複雜物件。
然而,這種靈活性伴隨著風險。在 CVE-2025-32432 的案例中,DI 容器被誤用並結合不可信的用戶輸入,從而形成遠端程式碼執行的途徑。此案例表明,即使是安全且強大的框架功能,若在未完全理解其安全影響的情況下進行整合,也可能成為潛在威脅。
深入解析 CVE-2025-32432
Craft CMS 具備名為「影像轉換」的功能,旨在透過在伺服器端直接生成調整尺寸的影像來優化效能。系統不會傳送 4.5 MB 的大型影像來顯示 300×300 像素的縮圖,而是自動創建並提供較小且經過優化的版本。此方法能減少頻寬使用量,並顯著提升頁面載入速度。
為使此功能廣泛可用,Craft CMS 公開了無需驗證即可存取的actions/assets/generate-transform端點。此設計雖確保驗證用戶與匿名用戶皆能受益於優化圖像,卻也形成公開可用的攻擊面,任人向應用程式提交精心設計的輸入。

透過對此工作流的詳細分析,我們的研究員發現每當向公開端點發送 POST 請求時,都會觸發AssetsController::actionGenerateTransform方法。此函式會直接從請求本體擷取 handle 參數,並將其轉發至下游進行後續階段的處理。

在下一步驟中,將呼叫ImageTransforms::normalizeTransform()方法。此方法會接收使用者提供的句柄參數,並將其轉換為ImageTransform物件。由於該物件是直接從未經信任的輸入建立,這代表執行流程中的關鍵風險點。

在此過程中,所有來自使用者控制的$transform陣列(源自 handle 參數)的鍵值對皆會合併至配置陣列中。隨後normalizeTransform方法將此陣列傳遞給Craft::createObject(),該方法負責實例化新的ImageTransform物件。

此漏洞源於Craft::createObject()(封裝Yii 的 Yii::createObject())處理配置陣列的方式。由於該機制直接從未經驗證的陣列中使用 DI 容器來實例化並配置物件,攻擊者可能藉此掌控物件建構過程。

當惡意有效負載被傳入時,該物件的建構函式(繼承自Model類別)會呼叫App::configure()方法。

此方法會遍歷攻擊者控制的陣列中的每個屬性,並將其賦值給新物件。

When App::configure() assigns properties from the attacker-controlled configuration array, most keys are mapped directly onto the object. However, if a key begins with the prefix as, the assignment is routed through Component::__set, Yii’s magic setter. This method interprets as <name> as an instruction to attach a behavior (mixin) to the object.
其中一種惡意有效載荷可被設計為利用Component::__set處理以as 為前綴的屬性之方式,例如as 漏洞利用程式碼:

根據我們的分析,Component::__set的實作包含一項保護機制:當行為透過此屬性附加時,框架會驗證配置陣列中指定的類別是否為yii\base\Behavior 的有效子類別。此檢查旨在防止任意類別直接附加至元件。

然而,這項保護措施並不如表面那般有效。其弱點源自於Yii::createObject處理配置陣列的方式。
在實例化物件時,Yii::createObject會優先處理特殊的 __class參數。若此鍵存在,其值將作為實例化的目標類別,而設定陣列中的標準 class 鍵值將被忽略。

攻擊者可為漏洞利用行為打造有效載荷,其中包含兩把金鑰:
- 'class' => '\craft\behaviors\FieldLayoutBehavior'- 一個合法的類別,需繼承自 yii\base\Behavior。此值僅為滿足 Component::__set 中的 is_subclass_of 檢查而存在,使執行流程得以繼續進行而不觸發錯誤。
- '__class' => '\yii\rbac\PhpManager' - 攻擊者的實際目標。此為他們欲實例化的「工具程式」類別。
當程式碼執行時,Component::__set會通過安全檢查,因為它僅檢查類別金鑰。然而,當框架後續呼叫Yii::createObject附加行為時,它會優先處理 __class,導致實例化的是攻擊者選擇的\yii\rbac\PhpManager物件。
使用\yii\rbac\PhpManager是刻意為之。僅創建物件不足以實現攻擊;要達成遠端程式碼執行(RCE),必須具備可武器化的副作用裝置類別。 由於其初始化流程,PhpManager 成為 POI(PHP 物件注入)攻擊的常見目標。實例化時,其init()方法會呼叫load(),進而觸發loadFromFile($this->itemFile)。攻擊者若能控制$this->itemFile,即可迫使應用程式載入惡意檔案,將物件建立轉化為程式碼執行。

危險在於 loadFromFile 方法。在 PHP 中,require會將目標檔案作為程式碼執行,因此若攻擊者能控制檔案路徑,便可觸發任意程式碼執行。
攻擊者透過利用PHP 會話檔,將惡意程式碼植入伺服器。當攻擊者將 PHP 程式碼注入請求參數時,Craft CMS 會在重定向過程中將有效載荷儲存至會話檔。後續當PhpManager載入此檔案時,攻擊者的程式碼便可能被執行。

完整的攻擊鏈分為三個階段運作。首先,攻擊者透過發送精心構建的URL植入惡意PHP程式碼,該程式碼將被Craft CMS儲存至會話檔案中。接著,攻擊者利用圖像轉換終端點中的__class繞過漏洞載入PhpManager工具程式,並將其指向受污染的會話檔案。最後,當PhpManager載入該檔案時,攻擊者的有效載荷便會執行,從而取得遠端程式碼執行權限並完全掌控伺服器——通常透過網頁殼層或反向殼層實現。



緩解與補救
為有效降低 CVE-2025-32432 相關風險,組織必須對其開源元件具備可視性與控制力。若缺乏清晰的元件清單,修補作業將淪為猜測。
OPSWAT SBOM作為MetaDefender®平台的專有技術,透過提供所有使用中軟體元件、函式庫、Docker容器及依賴項目的清單來滿足此需求。此技術使組織能夠主動追蹤、保護並更新其元件。


在上例中MetaDefender 的元件清單技術掃描了含有 CVE-2025-32432 漏洞的 nginx-ingress-controller 套件。系統自動將此問題標記為「關鍵」等級,並提供可用修正版的指引,使團隊能迅速優先處理並修補漏洞,避免其遭惡意利用。
OPSWAT 可於以下平台取得 MetaDefender Core 及MetaDefender Software ™中提供,協助安全團隊更快識別並處理漏洞。透過OPSWAT 安全團隊可:
- 快速定位易受攻擊的元件——立即識別受反序列化攻擊影響的開源元件。此舉可確保迅速採取行動,無論是修補漏洞或替換易受攻擊的函式庫。
- 確保主動修補與更新——透過OPSWAT 持續監控開源元件,以防範反序列化漏洞。OPSWAT 能偵測過時或不安全的元件,實現及時更新並降低遭受攻擊的風險。
- 維持合規與報告要求——隨著監管框架日益要求軟體供應鏈的透明度OPSWAT 協助組織滿足合規要求。
準備好強化您的軟體供應鏈,以抵禦新興威脅了嗎?
