CVE-2022-46169 — Cacti Command Injection Vulnerability
Cacti is an open source platform which provides a robust and extensible operational monitoring and fault management framework for users. In affected versions a command injection vulnerability allows an unauthenticated user to execute arbitrary code on a server running Cacti, if a specific data source was selected for any monitored device. The vulnerability resides in the `remote_agent.php` file. This file can be accessed without authentication. This function retrieves the IP address of the client via `get_client_addr` and resolves this IP address to the corresponding hostname via `gethostbyaddr`. After this, it is verified that an entry within the `poller` table exists, where the hostname corresponds to the resolved hostname. If such an entry was found, the function returns `true` and the client is authorized. This authorization can be bypassed due to the implementation of the `get_client_addr` function. The function is defined in the file `lib/functions.php` and checks serval `$_SERVER` variables to determine the IP address of the client. The variables beginning with `HTTP_` can be arbitrarily set by an attacker. Since there is a default entry in the `poller` table with the hostname of the server running Cacti, an attacker can bypass the authentication e.g. by providing the header `Forwarded-For: <TARGETIP>`. This way the function `get_client_addr` returns the IP address of the server running Cacti. The following call to `gethostbyaddr` will resolve this IP address to the hostname of the server, which will pass the `poller` hostname check because of the default entry. After the authorization of the `remote_agent.php` file is bypassed, an attacker can trigger different actions. One of these actions is called `polldata`. The called function `poll_for_data` retrieves a few request parameters and loads the corresponding `poller_item` entries from the database. If the `action` of a `poller_item` equals `POLLER_ACTION_SCRIPT_PHP`, the function `proc_open` is used to execute a PHP script. The attacker-controlled parameter `$poller_id` is retrieved via the function `get_nfilter_request_var`, which allows arbitrary strings. This variable is later inserted into the string passed to `proc_open`, which leads to a command injection vulnerability. By e.g. providing the `poller_id=;id` the `id` command is executed. In order to reach the vulnerable call, the attacker must provide a `host_id` and `local_data_id`, where the `action` of the corresponding `poller_item` is set to `POLLER_ACTION_SCRIPT_PHP`. Both of these ids (`host_id` and `local_data_id`) can easily be bruteforced. The only requirement is that a `poller_item` with an `POLLER_ACTION_SCRIPT_PHP` action exists. This is very likely on a productive instance because this action is added by some predefined templates like `Device - Uptime` or `Device - Polling Time`. This command injection vulnerability allows an unauthenticated user to execute arbitrary commands if a `poller_item` with the `action` type `POLLER_ACTION_SCRIPT_PHP` (`2`) is configured. The authorization bypass should be prevented by not allowing an attacker to make `get_client_addr` (file `lib/functions.php`) return an arbitrary IP address. This could be done by not honoring the `HTTP_...` `$_SERVER` variables. If these should be kept for compatibility reasons it should at least be prevented to fake the IP address of the server running Cacti. This vulnerability has been addressed in both the 1.2.x and 1.3.x release branches with `1.2.23` being the first release containing the patch.
Who exploits it and how urgent it is
A 0–100 score combining confirmed exploitation, ransomware and APT use, public exploits, EPSS and severity.
How the score was calculated
- Confirmed exploitation (CISA KEV)+35
- Public exploit/PoC (nuclei, metasploit, exploitdb, github)+20
- EPSS 99.8% (30-day exploitation probability)+15
- Technical severity (critical)+10
The score orders the patch queue; it does not replace your asset context (internet exposure, criticality, compensating controls).
Triage
Is it exploited, how likely is exploitation, what does it touch, and how severe do the sources call it.
CISA SSVC assessment CISA
Three decision points CISA publishes for the CVEs it assesses (SSVC 2.0.3). A stakeholder decision, not a severity score.
Remediation
Fixes and mitigations documented by the sources — linked to the original advisory.
- Documented patch — github.com (NIST National Vulnerability Database)
- Documented patch — github.com (NIST National Vulnerability Database)
- Documented patch — github.com (NIST National Vulnerability Database)
- Documented patch — github.com (NIST National Vulnerability Database)
CISA required action CISA
Apply updates per vendor instructions.
US federal deadline: Mar 9, 2023 — passed 1316 day(s) ago
First 24 hours
Ordered from the record’s own fields — exposure first, because you cannot patch what you have not found. A rule-generated starting point.
- Identify exposed assets running the affected vendor/product/version combinations (Cacti Cacti).
- Treat as emergency remediation: the CVE is in CISA KEV (confirmed exploitation).
- The attack is network-based and needs no privileges: restrict exposure (ACLs, VPN, WAF) until patched.
- Apply the fixed version or the patch documented under Remediation.
- EPSS ahead of 100% of scored CVEs: prioritize it in the patch queue.
- Search available logs for exploit probes matching the vulnerability class (injection), errors and authentication anomalies.
Affected scope
Vendor, product and versions as the sources word them.
Attack characteristics
The CVSS vector, decoded. It describes the attack, not your exposure to it.
Every base score collected
Sources score independently and may disagree; each row says who scored it and under which version.
| Score | Version | Severity | Expl. | Impact | Scored by |
|---|---|---|---|---|---|
| 9.8 | CVSS 3.1 | Critical | 3.9 | 5.9 | security-advisories@github.com via NIST National Vulnerability Database |
| 9.8 | CVSS 3.1 | Critical | 3.9 | 5.9 | nvd@nist.gov via NIST National Vulnerability Database |
| 9.8 | CVSS 3.1 | Critical | — | — | GitHub_M via CVE Program (cve.org) e CISA ADP |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (score shown at the top: nvd@nist.gov) Weakness MITRE
Weakness class according to MITRE’s CWE catalog.
CISA KEV details CISA
CISA lists a CVE once it has evidence of exploitation against real targets.
CISA records ransomware use only for campaigns it has confirmed, so “Unknown” means unrecorded, not ruled out. The deadline binds US federal agencies; for everyone else it is a reference date.
Public exploits, PoCs and detection templates
Public code that demonstrates or tests the flaw raises the odds of mass exploitation — and Nuclei templates help find vulnerable assets in your environment.
- Cacti 1.2.22 unauthenticated command injection excellent Dec 5, 2022
- Cacti v1.2.22 - Remote Command Execution (RCE) Mar 31, 2023
- CVE-2022-46169 Cacti remote_agent.php Unauthenticated Command Injection. ★ 47 Dec 8, 2022
- This is a exploit of CVE-2022-46169 to cacti 1.2.22. This exploit allows through an RCE to obtain a reverse shell on your computer. ★ 42 May 1, 2023
- PoC for CVE-2022-46169 - Unauthenticated RCE on Cacti <= 1.2.22 ★ 29 Jan 5, 2023
- This is poc of CVE-2022-46169 authentication bypass and remote code execution ★ 15 Mar 11, 2023
- Exploit to CVE-2022-46169 vulnerability ★ 9 Jan 13, 2023
- Cacti Unauthenticated Command Injection ★ 3 Jan 2, 2023
- RCE POC for CVE-2022-46169 ★ 3 Jan 16, 2023
- Fixed exploit for CVE-2022-46169 (originally from https://www.exploit-db.com/exploits/51166) ★ 3 Apr 13, 2023
- Exploit for cacti version 1.2.22 ★ 3 May 1, 2023
- Cacti: Unauthenticated Remote Code Execution Exploit in Ruby ★ 2 Jan 15, 2023
Warning: public PoCs are sometimes disguised malware. Use them only for authorized testing in an isolated environment. This portal does not host exploit code — it only points to the sources.
EPSS over time FIRST
Oct 12, 2026 → Oct 14, 2026 · 3 reading(s) · max 99.83%
Detection
Read off the CVSS vector and the weakness class. Starting points, not tested rules.
- Prioritize edge telemetry for the network-reachable component (proxy, WAF, IDS/IPS).
- Look for parameters with command/query metacharacters and unexpected child processes of the service.
- Hunt retroactively in logs from before Feb 16, 2023 (KEV listing): exploitation may have started earlier.
Timeline
What happened to this CVE, newest first.
- 2026
- Affected products added · cacti/cacti
- SSVC assessment updated
- Record published
- Fix documented
- Affected products added · cacti/cacti
- CVSS changed · 9.8
- Source status changed · → Analyzed
- Added to CISA KEV (detected)
- Record created in this database
- 2023
- Added to CISA KEV catalog
- 2022
- CVE published
Source activity
Repeated readings are counted rather than listed.
- 1× References added · Oct 13, 2026 – Oct 13, 2026
- 1× Official description updated · Oct 13, 2026 – Oct 13, 2026
References
5 on the record
- github.com/Cacti/cacti/commit/b43f13ae7f1e6bfe4e8e56a80a7cd867cf2db52b
- github.com/Cacti/cacti/commit/7f0e16312dd5ce20f93744ef8b9c3b0f1ece2216
- github.com/Cacti/cacti/security/advisories/GHSA-6p93-p743-35gf
- github.com/Cacti/cacti/commit/a8d59e8fa5f0054aa9c6981b1cbe30ef0e2a0ec9
- www.cisa.gov/known-exploited-vulnerabilities-catalog
Elsewhere on this site
Related CVEs (same products)
- Medium CVE-2026-40941 Cacti: Package Import Signature Validation Bypass Allows Self-Signed Packages Jun 25, 2026
- Medium CVE-2026-40084 Cacti: Arbitrary File Read via Path Traversal in Report `format_file` Parameter Jun 25, 2026
- Medium CVE-2026-40082 Cacti: Session Fixation via missing session_regenerate_id() after login Jun 25, 2026
- Medium CVE-2026-40080 Cacti: Open Redirect via HTTP_REFERER substring check in auth_login_redirect Jun 25, 2026
- High CVE-2026-40083 Cacti: SQL Injection in managers.php Jun 25, 2026
- High CVE-2026-39951 Cacti: Stored SQL Injection via graph_name_regexp in Reports feature Jun 24, 2026
Not in any source we poll
Listed rather than left blank: an empty field and an unmeasured one look identical on screen, and only one is a reason to look elsewhere.
- No confirmed IOCs, IP addresses, domains, file hashes, or malware artifacts supplied.
- No organization-specific asset inventory, compensating-control status, or patch deployment evidence supplied.
- No exploit packet captures, log samples, or incident case IDs supplied.
Answered from this record
Text assembled only from the fields above — no additional claims.
What should defenders know first?
CVE-2022-46169 is "Cacti Command Injection Vulnerability", rated Critical. It affects Cacti (Cacti); versions are in the scope table. It is in CISA KEV: there is evidence of real-world exploitation. CVSS 9.8 describes technical severity. EPSS 99.83% estimates the probability of exploitation in 30 days; neither replaces your asset context. First verify whether exposed or business-critical assets run the affected versions, apply vendor fixes or mitigations, and preserve logs for review.
Comments
Moderated technical discussion. Read the community guidelines.
No comments yet.
Sign in or create an account to comment and suggest corrections.