近日,8087金沙娱场城CERT监控到Cacti存在命令执行漏洞(CVE-2022-46169),漏洞细节已公开。该漏洞存在于remote_agent.php文件中,无需身份验证即可访问此文件,攻击者可通过设置网络头HTTP_变量绕过身份验证,触发polldata功能,当get_nfilter_request_var()函数检索的参数$poller_id满足特定条件时,可触发proc_open()函数,从而导致命令执行。此命令注入漏洞允许未经身份验证的用户在构造恶意请求的情况下执行任意命令。
对此,目前厂商已发布修复补丁,但暂未发布版本更新。鉴于该漏洞受影响面较大,8087金沙娱场城CERT建议使用Cacti的用户及时关注官方更新,参照官方修复方案尽快采取相关措施,做好资产自查以及预防工作,以免遭受黑客攻击。
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的开源网络流量监测图形分析工具,提供了非常强大的数据和用户管理功能。
漏洞编号和等级
CVE-2022-46169
CVSS3.1 9.8分
漏洞状态
受影响版本
Cacti = 1.2.22
修复建议
临时缓解措施
1. 禁止lib/functions.php文件中的get_client_addr函数返回任意IP地址来防止授权绕过,设置不遵循HTTP_... $_SERVER变量。若无法修改,应禁止伪造运行Cacti的服务器的IP地址。
2. 对remote_agent.php文件进行修改以防止命令注入,变量$poller_id应该是一个整数,因此应该通过函数get_filter_request_var代替get_nfilter_request_var进行检索:
3. 为了进一步加强对命令注入的防御,$poller_id参数应该在传递给proc_open之前使用escapeshellarg进行转义:
安全补丁修复
目前Cacti官方已发布安全补丁,建议受影响用户尽快安装修复补丁。
1.2.x版本补丁:https://github.com/Cacti/cacti/commit/7f0e16312dd5ce20f93744ef8b9c3b0f1ece2216
1.3.x版本补丁:
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