最新研究發現 .NET Framework 中存在可被利用的漏洞,攻擊者可以利用這些漏洞攻擊企業級應用程序,從而實現遠端程式碼執行。WatchTowr Labs 將這個「無效型別轉換漏洞(註)」命名為 SOAPwn,並表示問題會影響 Barracuda Service Center RMM、Ivanti Endpoint Manager (EPM) 和 Umbraco 8。但考慮到 .NET 的廣泛使用,受影響的供應商數量可能會更多。
註:
「無效型別轉換漏洞」(Invalid Type Conversion Vulnerability),更準確地說,是「不正確的型別轉換」(Incorrect Type Conversion 或 Type Confusion)錯誤,是一種程式設計缺陷。當程式在不同資料型別之間轉換值時,如果處理不當,可能會導致非預期的行為、程式崩潰或嚴重資安漏洞。
a) 漏洞原理
- 此漏洞的核心問題在於,程式設計師預期某個變數是某種型別(例如:整數 int),但在執行時期,該變數最終被當作另一種不相容的型別(例如:字串 string 或記憶體位址)來存取或處理。
- 這種錯誤可能是顯式轉換 (Explicit Cast) 錯誤,也可能是程式語言隱式轉換 (Implicit Conversion) 機制造成的意外後果。
b) 潛在風險與影響
不正確的型別轉換可能導致以下後果:
- 資料損壞 (Data Corruption):在數值型別轉換(例如從 long 轉換為 int)時,可能會損失資料的精確度或範圍,產生非預期的數值,進而影響程式邏輯。
- 記憶體錯誤 (Memory Errors):如果程式誤將資料視為指標或物件,可能導致緩衝區溢位 (Buffer Overflow) 或其他記憶體損壞錯誤。
- 繞過安全檢查:攻擊者可以精心構造輸入,利用不同程式碼區域對同一變數的不同型別處理方式,繞過輸入驗證或存取控制。
- 任意程式碼執行 (Arbitrary Code Execution):在最嚴重的案例中(例如瀏覽器 V8 JavaScript 引擎中的型別混淆漏洞),攻擊者可以利用此漏洞執行任意程式碼,完全控制受影響的系統。
- 拒絕服務 (Denial of Service, DoS):導致程式崩潰或進入無效狀態。
c) 如何防範
防範此類漏洞的關鍵在於嚴謹的程式設計實踐:
- 嚴格的輸入驗證:在處理所有來自不受信任來源的輸入之前,務必驗證其格式、範圍和類型。
- 避免隱式轉換:盡量使用顯式型別轉換,並仔細檢查轉換後的值是否在預期範圍內。
- 使用型別安全的程式語言:某些程式語言(如 Rust)在設計上強制執行嚴格的型別規則,可以從根本上減少這類漏洞的發生。
- 程式碼審查與測試:進行徹底的靜態和動態程式碼分析,專注於涉及型別轉換和資料處理的程式碼段。
SOAPwn 基本上允許攻擊者濫用 Web 服務描述語言 (WSDL) 匯入和 HTTP 用戶端代理,在基於 .NET 建置的產品中執行任意程式碼,這是由於這些產品處理簡單物件存取協定 ( SOAP ) 訊息的方式存在錯誤。它通常可以透過 SOAP 用戶端進行濫用,特別是當客戶端由攻擊者控制的 WSDL 動態創建時。
在這種技術中,攻擊者可以向易受攻擊的應用程式提供指向其控制的 WSDL 檔案的 URL,並透過投放功能齊全的 ASPX Web Shell 或其他有效載荷(如 CSHTML Web Shell 或 PowerShell 腳本)來取得遠端程式碼執行權限。
研究結果表明,在流行的框架中,預期行為可能成為潛在的攻擊途徑,導致 NTLM 中繼或任意文件寫入。此問題已在 Barracuda Service Center RMM 版本 2025.1.1(CVE-2025-34392,CVSS 評分:9.8)和 Ivanti EPM 版本 2024 SU4 SR1(CVE-2025-13659,CVSS 評分:8.8)中已解決。
我們可以讓 SOAP 代理將 SOAP 請求寫入文件,而不是透過 HTTP 發送。在很多情況下,這會導致透過 webshell 上傳或 PowerShell 腳本上傳進行遠端程式碼執行,具體影響取決於使用代理類別的應用程式。
這個被命名為 SOAPwn 的「無效型別轉換漏洞」是一個典型的邏輯缺陷,它存在於 .NET 應用程式處理 Web 服務描述語言(WSDL)和簡單物件存取協定(SOAP)通訊的機制中。 WSDL 是用於描述 Web 服務介面的 XML 格式文件,而 SOAP 則是基於 XML 的通訊協定。當 .NET 應用程式動態地從外部 URL 匯入攻擊者控制的 WSDL 檔案時,應用程式對其中型別的信任和處理方式存在缺陷。
SOAPwn 漏洞的關鍵在於能夠操縱 SOAP 用戶端代理的行為。透過構造惡意的 WSDL,攻擊者能夠欺騙應用程式將 SOAP 請求的輸出導向至本地文件寫入操作,而不是預期的透過 HTTP 傳送請求。這實質上將 SOAP 代理轉變為一個惡意的文件寫入工具。攻擊者利用這種任意文件寫入(Arbitrary File Write)能力,將惡意有效載荷(Payload),如 ASPX 或 CSHTML 的 Web Shell 程式碼,寫入到 Web 伺服器可執行目錄下。一旦這些惡意的 Web Shell 文件被寫入,攻擊者只需透過瀏覽器存取該文件,即可在伺服器上執行任意程式碼,從而實現完全的遠端程式碼執行(RCE)。
這種 RCE 攻擊對於企業環境的影響極為嚴重。例如,Barracuda RMM 和 Ivanti EPM 都是企業用於遠端管理和部署端點的關鍵基礎設施,CVSS 評分高達 9.8 和 8.8,表明它們的漏洞利用難度低且潛在影響極大。如果這些工具被入侵,攻擊者將獲得對整個客戶網路的控制權,實施橫向移動(Lateral Movement)、數據竊取或部署勒索軟體。此漏洞的修復需要供應商對其處理 WSDL 匯入和 SOAP 代理類別的邏輯進行深度審查和強化,以確保外部數據在應用程式中的行為受到嚴格的沙箱和型別檢查限制。
資料來源:https://thehackernews.com/2025/12/net-soapwn-flaw-opens-door-for-file.html
分析 .NET Framework 中的 SOAPwn(無效型別轉換)漏洞,揭示攻擊者如何濫用 SOAP 代理和惡意 WSDL 檔案,在 Barracuda RMM 和 Ivanti EPM 等企業應用中實現遠端程式碼執行 (RCE) 和任意文件寫入,對企業安全構成極高威脅。