SaltStack 遠程命令執行漏洞分析(CVE-2020-16846、17490、25592)
漏洞描述
2020年11月4日,SaltStack 官方發布了一則安全更新公告,涉及3個 CVE 漏洞。
CVE-2020-16846:
未授權賬戶可通過 Salt API 的 SSH 功能連接到客戶端,進而利用 shell 功能執行任意命令。此漏洞影響所有開啟 Salt API 的用戶。
CVE-2020-17490:
當應用在 TLS 執行模塊中使用了 create_ca, create_csr, 和 create_self_signed_cert 函數時,存在此漏洞的系統將無法保證 key以正確的權限被創建。
CVE-2020-25592:
由于 Salt-netapi未能正確驗證 eauth 憑證和令牌,導致攻擊者能夠繞過身份驗證,通過salt-ssh 連接目標主機。此漏洞同樣影響所有開啟 Salt API 的用戶。

風險等級
CVE-2020-16846:嚴重
CVE-2020-17490:低危
CVE-2020-25592:嚴重
漏洞詳情
從 CVE-2020-16846 和 CVE-2020-17490 補丁的 commit 來看,SaltStack 之前在處理 SSH 功能時,需執行 ssh-keygen 系統命令。
由于此命令中的部分參數,是把用戶從前端接口傳入的代碼直接拼接到cmd 中執行,因此攻擊者便可以通過傳入形如 aaaa &attach_cmd 的代碼參數造成任意命令執行。

從 CVE-2020-25592 模塊的 commit 中可以看到,NetapiClient 類在處理 SSH 執行命令時并未進行身份校驗,這會導致攻擊者可以直接通過NetapiClient 提供的 API 進行 SSH 連接。

分析后,構造 exp 成功復現。

產品側解決方案
針對上述三個漏洞,阿里云 WAF 已默認更新防御策略,用戶無需操作即可享受防護。