
總結
2023 年底,安全研究人員發現一個影響 Cisco IOS XE Web UI 的重要連鎖漏洞,允許未認證的攻擊者完全控制受影響的裝置。該攻擊連鎖漏洞結合了兩個安全漏洞 -CVE-2023-20198和CVE-2023-20273,當這些漏洞一起被利用時,會導致在執行 IOS XE 的底層 Linux 主機上執行 root 級指令。這樣就能完全接管裝置、進行持續存取,並在企業網路中進行潛在的橫向移動。
- CVE-2023-20198:在 Cisco IOS XESoftware 版本 16.0.x 至 17.9.x 中,此漏洞允許未認證的攻擊者取得初始存取權,並透過 Web UI 建立權限等級 15 (administrator) 帳戶。一旦建立,攻擊者可在裝置上執行任何管理動作,造成嚴重的安全風險。

- CVE-2023-20273:影響相同軟體版本,此漏洞允許具有 15 級權限的認證使用者,透過軟體管理元件中的指令注入漏洞,在底層 Linux 作業系統上以 root 權限執行任意指令。

在OPSWAT 研究員計畫期間,我們的研究員 Hoa X.Nguyen 和 Nhan Nguyen 對這個攻擊鏈進行了深入的技術分析。在我們的研究中,我們在執行IOS XE 17.01 的 Cisco Catalyst 9300-24T-E交換器上重現了這些漏洞,展示了在真實世界條件下,如何將漏洞串連起來,以達到完全入侵系統的目的。
背景
Cisco IOS XE 概觀

Cisco IOS XE 是現代化、模組化的網路作業系統,為 Cisco 的許多企業平台(包括路由器、交換器和無線控制器)提供動力。它將經典 Cisco IOS 的豐富功能與更安全、可程式化且以 Linux 為基礎的架構相結合,為網路管理員提供彈性及更高的效能。
IOS XE 的核心是以Linux 作業系統的方式執行,其主程式稱為IOSd (IOS Daemon)。這個守護程式處理傳統的網路任務,例如路由、CLI 管理和組態控制。在 IOS XE 17.01 中,IOSd 的二進位檔位於/usr/binos/bin/x86_64_crb_linux_iosd_ngwc-universalk9-ms。
與傳統的 Cisco 系統不同,透過 SSH 連線的 IOS XE 使用者會被放置在受限制的 IOSd 子系統 Shell 中,而不是底層的 Linux 環境。此設計隔離了作業系統的真正 root 層級存取,大幅強化使用者互動與主機核心之間的整體安全邊界。
思科權限等級
Cisco 裝置實施分層權限模型來控制使用者權限:
- 層級 0 - 零層級存取:這是最受限制的等級。它通常只允許有限的基本命令集,例如登出、啟用、停用、幫助和退出。
- 層級 1 - 使用者 EXEC 模式:標準登入的預設存取權限,允許基本的系統檢視,但不能變更組態。
- 第 15 級 - 特權 EXEC 模式:這是最高權限等級,可完全控制裝置。此層級的使用者可以執行所有指令,包括組態指令,並可以重新載入裝置。
中階層級 (2-14) 可以自訂,以授予特定權限。權限是繼承的,這表示較高層級的使用者會自動擁有較低層級的權限。
Cisco Web UI 架構
Cisco IOS XE Web UI 為管理和監控設備提供了一個基於瀏覽器的介面 - 提供配置和診斷功能,而不需要命令列存取。在內部,Web UI 利用 NGINX 作為中間件代理,將使用者請求路由到各種內部服務,包括 Web 服務管理代理 (WSMA)。
WSMA 元件作為 Web UI 與底層 IOSd daemon 之間的通訊橋樑,將基於 Web 的動作轉換為相應的 IOS XE 配置命令。

為了強制執行存取控制,每個要求都必須透過專用的 HTTP 標頭 (Priv-Level) 進行以 SOAP 為基礎的驗證和權限驗證,以確保只有授權使用者才能執行權限操作。

技術分析
CVE-2023-20198 - 驗證繞過和權限升級
我們的研究人員發現,此漏洞源自 Cisco IOS XE 的Web UI HTTP 端點。當處理傳入的要求時,Web UI 會將指令及其相關的使用者權限傳送到內部端點 (/lua5),然後由NGINX將其路由到兩個 WSMA 處理器之一 - /webui_wsma_http 或 /webui_wsma_https - 取決於通訊協定。


IOSd 二進位的靜態分析也顯示 NGINX 設定包含預設的回退處理程式:

此漏洞源自NGINX及IOSd處理URL 編碼的方式。兩個元件獨立解碼 URL 路徑,允許攻擊者利用雙重編碼繞過。
例如,如果/webui_wsma_https以/%2577ebui_wsma_https 的方式傳送,NGINX會執行一次解碼,並看到/%77ebui_wsma_https(這並不直接與受保護的內部路由相匹配),因此它會透過限制較少的回退處理程式來分派請求。當請求到達 IOSd 後端時,IOSd 會執行第二次解碼,並將路徑解析為 /webui_wsma_https。

由於 NGINX 一開始是使用預設處理程式來路由此畸形請求,因此無法執行正常的驗證與存取控制邏輯。因此,攻擊者可以注入偽造的 Priv-Level 標頭,為自己分配管理員等級 (15) 的權限。結合 SOAP XML 有效負載,載入建立新使用者的指令,這會導致一個高權限的本機帳戶被無聲地建立。

此攻擊不需要事先驗證,攻擊者可透過 Web UI 對裝置進行完全組態控制- 建立攻擊鏈的第一階段。
CVE-2023-20273 -Software 管理中的指令注入
一旦使用新建立的管理員帳戶進行驗證,攻擊者就可以利用CVE-2023-20273,即軟體管理元件 (/webui/rest/softwareMgmt/*) 中的指令注入漏洞。此端點供合法管理員在裝置上安裝或更新軟體套件。
此漏洞源自 validateSmuRequest(req) 函式中的輸入驗證邏輯,該函式會呼叫validator.validateIPv4IPv6HostNameAddress(req.ipaddress)來驗證要求中提供的 IP 位址。這個驗證步驟的目的是確保所提供的位址格式正確,可以安全使用。
在 validateIPv4IPv6HostNameAddress 中,驗證依賴輔助例行程序utils.isIPv6Address(ip)來評估IPv6語法的合規性。這個函式嘗試透過分開冒號 (:)來解析輸入,並使用正規表達式來評估每個區段,以拒絕無效的十六進位模式或超出範圍的值。此正則表達式的實作缺陷在於:由於過度允許 * 量子符,它會匹配任何輸入,實際上允許畸形或惡意的值在未檢查的情況下通過驗證。

因此,攻擊者控制的資料會被視為有效,並流入下游邏輯,用於指令建構。不受信任的IP 位址值最終會在runPexecCommand()函式中使用,以建立啟動 TFTP 請求的系統指令。由於此操作未經輸入驗證或轉義,攻擊者可在程序中注入任意指令,導致以提升的權限執行指令,並完全入侵 Cisco 裝置。

概念驗證 (PoC)
在OPSWAT 研究員計畫中,我們的研究員 Hoa X. Nguyen 和 Nhan Nguyen 在一個受控、空氣封閉的實驗室中,在執行 IOS XE 17.01 的 Cisco Catalyst 9300-24T-E 上重現了連鎖攻擊。攻擊程序可歸納為以下幾個階段:

- 雙重編碼請求:傳送特製的 POST 到雙重編碼的內部路徑 (例如,/%2577ebui_wsma_https),此路徑經由代理回退路由,並包含偽造的 Priv-Level 標頭和帳戶建立 SOAP 負載。
- 獲取管理員會話:使用已建立的帳戶登入,並收集會話/CSRF 令牌。
- 上傳有效載荷:使用 Web UI 上傳將attacker_shell.sh 置於裝置上(僅限管理員動作)。
- 透過 SMU 執行:以精心製作的 IP 位址提交 SMU 請求 (例如、 100:100:100:$(/bin/sh /bootflash/attacker_shell.sh));驗證會被繞過,上傳的腳本會以 root 身份執行。

修復
思科已發佈 Cisco IOS XESoftware 的修補版本,以處理 CVE-2023-20198 和 CVE-2023-20273。所有操作 16.0.x 至 17.9.x 受影響版本的組織應立即升級至 Cisco 官方安全公告中概述的最新修補版本。應用這些更新可有效移除底層漏洞,並防止透過 Web UI 進行未經授權的權限提升或指令注入。
對於無法立即升級的環境,管理員應該限制或停用來自不受信任網路的 Web UI 存取,對管理介面執行嚴格的驗證控制,並持續監控異常的系統行為,例如未經授權的帳號建立或異常的組態變更。
為了強化整體的網路復原能力,組織可利用OPSWAT的MetaDefender Platform 來補充廠商的修補程式,此統一的安全框架可偵測並預防檔案、裝置及資料流中的威脅,以保護關鍵基礎架構。將MetaDefender 整合至網路與作業工作流程中,可提高能見度、確保更深入的威脅檢測,並針對管理系統的潛在攻擊企圖提供額外的防護。
透過結合及時的 Cisco 更新、穩健的存取控制,以及由MetaDefender 平台支援的分層防禦策略,組織可大幅降低暴露於類似漏洞鏈的風險,並維持更強大、更具彈性的安全勢態。
