Cacti项目是一个开源平台,可为用户提供强大且可扩展的操作监控和故障管理框架。

近日,奇安信CERT监测到Cacti存在命令执行漏洞(CVE-2022-46169),攻击者可通过构造恶意请求在无需登录的情况下向函数中注入命令,达到命令执行的目的。鉴于此漏洞影响范围较大,建议客户尽快做好自查,及时更新至最新版本。

漏洞名称

Cacti命令执行漏洞

公开时间

2022-12-05

更新时间

2022-12-06

CVE编号

CVE-2022-46169

其他编号

QVD-2022-45075

威胁类型

命令执行

技术类型

命令注入

数据过滤不恰当

厂商

Cacti

产品

Cacti

风险等级

奇安信CERT风险评级

风险等级

高危

蓝色(一般事件)

现时威胁状态

POC状态

EXP状态

在野利用状态

技术细节状态

未发现

未发现

未发现

已公开

漏洞描述

攻击者可通过控制由get_nfilter_request_var()函数检索的参数$poller_id,来满足poller_item =POLLER_ACTION_SCRIPT_PHP条件,触发proc_open()函数,从而导致命令执行。

影响版本

Cacti == 1.2.22

不受影响版本

Cacti == 1.2.23

Cacti == 1.3.0

其他受影响组件

威胁评估

漏洞名称

Cacti命令执行漏洞

CVE编号

CVE-2022-46169

其他编号

QVD-2022-45075

CVSS 3.1评级

高危

CVSS 3.1分数

9.8

CVSS向量

访问途径(AV

攻击复杂度(AC

网络

所需权限(PR

用户交互(UI

不需要

不需要

影响范围(S

机密性影响(C

不改变

完整性影响(I

可用性影响(A

危害描述

未经授权的远程攻击者可构造恶意请求在目标服务器上执行任意命令。

处置建议

1、安全升级

目前Cacti官方已发布安全补丁,但暂未发布版本更新,建议受影响用户关注官方更新或参考官方补丁代码进行修复:

https://github.com/Cacti/cacti/commit/7f0e16312dd5ce20f93744ef8b9c3b0f1ece2216

https://github.com/Cacti/cacti/commit/b43f13ae7f1e6bfe4e8e56a80a7cd867cf2db52b

注意:对于在 PHP < 7.0 下运行的 1.2.x 实例,还需要进一步更改:

https://github.com/Cacti/cacti/commit/a8d59e8fa5f0054aa9c6981b1cbe30ef0e2a0ec9

2、缓解方案

(1) 通过更新 lib/functions.php 中 get_client_addr 函数防止授权绕过,可参考官方补丁代码;

(2) 通过更改remote_agent.php文件防止命令注入,检索$poller_id参数时使用get_filter_request_var函数代替get_nfilter_request_var:

    $poller_id = get_filter_request_var("poller_id");

    (3) 在参数$poller_id传入proc_open()函数之前通过escapeshellarg()函数进行转义:

      $cactiphp = proc_open(read_config_option("path_php_binary")."-q".$config["base_path"]."/script_server.php realtime".escapeshellarg($poller_id),$cactides,$pipes);

      参考资料

      [1]https://github.com/Cacti/cacti/security/advisories/GHSA-6p93-p743-35gf

      声明:本文来自奇安信 CERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。