近日,亞信安全CERT監(jiān)控到Cacti存在命令執(zhí)行漏洞(CVE-2022-46169),漏洞細節(jié)已公開。該漏洞存在于remote_agent.php文件中,無需身份驗證即可訪問此文件,攻擊者可通過設(shè)置網(wǎng)絡(luò)頭HTTP_變量繞過身份驗證,觸發(fā)polldata功能,當get_nfilter_request_var()函數(shù)檢索的參數(shù)$poller_id滿足特定條件時,可觸發(fā)proc_open()函數(shù),從而導(dǎo)致命令執(zhí)行。此命令注入漏洞允許未經(jīng)身份驗證的用戶在構(gòu)造惡意請求的情況下執(zhí)行任意命令。
對此,目前廠商已發(fā)布修復(fù)補丁,但暫未發(fā)布版本更新。鑒于該漏洞受影響面較大,亞信安全CERT建議使用Cacti的用戶及時關(guān)注官方更新,參照官方修復(fù)方案盡快采取相關(guān)措施,做好資產(chǎn)自查以及預(yù)防工作,以免遭受黑客攻擊。
Cacti是一套基于PHP,MySQL,SNMP及RRDTool開發(fā)的開源網(wǎng)絡(luò)流量監(jiān)測圖形分析工具,提供了非常強大的數(shù)據(jù)和用戶管理功能。
漏洞編號和等級
CVE-2022-46169
CVSS3.1 9.8分
漏洞狀態(tài)

受影響版本
Cacti = 1.2.22
修復(fù)建議
臨時緩解措施
1. 禁止lib/functions.php文件中的get_client_addr函數(shù)返回任意IP地址來防止授權(quán)繞過,設(shè)置不遵循HTTP_... $_SERVER變量。若無法修改,應(yīng)禁止偽造運行Cacti的服務(wù)器的IP地址。
2. 對remote_agent.php文件進行修改以防止命令注入,變量$poller_id應(yīng)該是一個整數(shù),因此應(yīng)該通過函數(shù)get_filter_request_var代替get_nfilter_request_var進行檢索:

3. 為了進一步加強對命令注入的防御,$poller_id參數(shù)應(yīng)該在傳遞給proc_open之前使用escapeshellarg進行轉(zhuǎn)義:

安全補丁修復(fù)
目前Cacti官方已發(fā)布安全補丁,建議受影響用戶盡快安裝修復(fù)補丁。
1.2.x版本補丁:https://github.com/Cacti/cacti/commit/7f0e16312dd5ce20f93744ef8b9c3b0f1ece2216
1.3.x版本補?。?/p>
https://github.com/Cacti/cacti/commit/b43f13ae7f1e6bfe4e8e56a80a7cd867cf2db52b
對于在PHP < 7.0下運行的1.2.x實例,還需要進一步更改:
https://github.com/Cacti/cacti/commit/a8d59e8fa5f0054aa9c6981b1cbe30ef0e2a0ec9
參考鏈接
https://github.com/Cacti/cacti/security/advisories/GHSA-6p93-p743-35gf