1. 系統架構簡介

本報告詳細技術調查了影響基於Python的軟體定義網路(SDN)控制器用於管理多雲閘道的兩個關鍵漏洞。分析涵蓋了架構設計、底層程式碼結構、利用技術以及對雲端環境的影響。

SDN控制器RCE漏洞解析:如何保護您的雲端環境 | 資訊安全新聞

1. 系統架構簡介

SDN控制器採用雙層架構:一個PHP前端處理網頁請求,以及一個透過PyInstaller封裝成位於 /etc/cloudx/cloudxd 的二進位檔案的 Python-3.10後端控制器。HTTP動作被發送到 api.php ,在 functions.php 中解析,並透過 sudo 轉發到核心可執行檔案。


POST /v2/api HTTP/2
{"action":"login","username":"user","password":"pass"}
  

此請求被轉換為 sudo /etc/cloudx/cloudxd user_login_management get_password ... 的呼叫,突顯了網頁層與系統二進位檔案之間的互動 。

2. 位元碼提取與分析

紅隊分析師使用 pyinstxtractor 提取Python位元碼(Python bytecode)。像 user_login_management.pyc 這樣的模組被定位並透過Python的 dis marshal 進行反組譯,揭示了 os logging 等關鍵模組的導入模式。由於程式碼量大(約6,300行),透過GPT輔助的pseudocode重建加速了弱點的識別—特別是重置邏輯。

3. 漏洞#1:透過弱Token繞過認證

密碼重置邏輯生成了一個6位數的token(111,111–999,999),僅提供888,888種可能的組合。在15分鐘的窗口內沒有速率限制或token失效機制,使得暴力破解攻擊成為可能。

利用工作流程:

  1. 透過API觸發密碼重置
  2. 使用 ffuf seq 進行token暴力破解
  3. 取得正確的token;重置管理員密碼
  4. 獲得完整的管理員權限

此損壞的重置機制被追蹤為 CVE-2025-2171

4. 漏洞#2:認證後的命令注入

雖然重置提供了管理員存取權限,但更深入的利用針對檔案上傳和參數注入漏洞:

  • 檔案上傳在像“ldap_ca_cert”這樣的端點中接受,沒有嚴格的副檔名過濾。
  • 檔案名稱僅針對空格和斜線進行了清理,但允許使用 Tab。
  • 後端使用 subprocess.check_output(shlex.split(cmd)) ,因此 Tab 可以注入額外的CLI參數。

範例:

上傳的檔案名稱: "certfoo{TAB}--option{TAB}value"
結果的       : shlex.split → ["certfoo","--option","value"]
系統執行     :cp certfoo --option value

此注入攻擊 <![CDATA[ --option ]]> 執行系統命令。這允許以root身份進行遠端程式碼執行(RCE),並被追蹤為 CVE-2025-2172

5. 攻擊工作流程與後續攻擊

完整的攻擊鏈:

  1. 暴力破解密碼重置token以取得管理員用戶。
  2. 上傳特別製作的檔案名稱以利用命令注入。
  3. 執行帶有透過 Tab 偷渡參數的命令(例如 cp )。
  4. 升級至root並取得 AWS 實例 metadata。
  5. 使用AWS IMDSv2憑證假設提升的角色( aviatrix-role-app ),實現完整的雲端轉向。

此升級展示了如何利用單一系統導致對多雲基礎設施的全面控制。

6. 技術討論與緩解措施

這些漏洞反映了SDN控制器中常見的設計與實作問題:

  • 不安全的token生成: 低熵值(Low entropy)和缺乏速率限制便於暴力破解。
  • 不當的輸入清理: 檔案名稱過濾忽略了 Tab ,並依賴於空白分詞(Whitespace tokenization)。
  • 不安全的命令執行: 使用帶有攻擊者控制輸入的 shlex.split() 啟用了命令注入。

建議的緩解措施:

  • 使用加密安全的token生成器(例如UUID4),強制執行速率限制或CAPTCHA。
  • 實施嚴格的檔案名稱白名單,禁止所有非字母數字字符。
  • 避免 shell 呼叫:使用直接 API 或驗證過的參數列表。對於 Python,使用 subprocess.run([...], shell=False)
  • 在透過 sudo 執行的二進位檔案上應用最小權限原則,避免root升級。
  • 將控制器隔離在分段網路中,禁用AWS metadata服務或限制IMDS存取。

7. 結論

此分析揭示了token強度和輸入驗證中的小疏忽如何可能導致整個資料中心的危害。SDN控制器作為具有root級操作的系統,需嚴格的安全編碼實踐:

  • 強大的認證機制
  • 安全的輸入處理
  • 明確的子程序呼叫
  • 最小權限執行

對這些領域的適當關注對於防禦複雜的紅隊攻擊或現實世界的threat actors至關重要。

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