Command InjectionWeakness · CWE-77

CVE-2024-29895

CRITICAL · 10.0 CVSS v3.1 Published 2024-05-14
Patch available
A vendor patch is available. No clean upgrade release — apply the published patch.
See remediation →
100/100
Remediation priority · Urgent
High EPSS Remotely reachable No privileges Zero-click Patch available

Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.

NVD · unedited
Cacti provides an operational monitoring and fault management framework. A command injection vulnerability on the 1.3.x DEV branch allows any unauthenticated user to execute arbitrary command on the server when `register_argc_argv` option of PHP is `On`. In `cmd_realtime.php` line 119, the `$poller_id` used as part of the command execution is sourced from `$_SERVER['argv']`, which can be controlled by URL when `register_argc_argv` option of PHP is `On`. And this option is `On` by default in many environments such as the main PHP Docker image for PHP. Commit 53e8014d1f082034e0646edc6286cde3800c683d contains a patch for the issue, but this commit was reverted in commit 99633903cad0de5ace636249de16f77e57a3c8fc.

Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.

dbcve analysis · high confidence

Cacti 1.3.x DEV branch contains an unauthenticated command injection vulnerability in cmd_realtime.php line 119. The $poller_id parameter is sourced from $_SERVER['argv'] which can be controlled via URL when PHP's register_argc_argv is On (default in PHP Docker images). An attacker can inject arbitrary commands via this vector.

MitigationDisable register_argc_argv in php.ini (set to Off) as an immediate workaround; apply vendor patch when available; restrict network access to cmd_realtime.php until fixed.

Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.

CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.

From the vector
Attack vector
Network
Complexity
Low
Privileges
None
User interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.

dbcve checks

Work through these to decide whether this CVE applies to you.

  1. Identify Cacti installation and version
    Locate the Cacti web application directory and check for version.php or similar version indicator files. Cacti 1.3.x DEV branch is the affected version.
    Affected if The installed Cacti version is 1.3.x DEV branch (development version)
  2. Locate cmd_realtime.php file
    Search for cmd_realtime.php in the Cacti installation directory, typically under the Cacti root or scripts folder.
    Affected if cmd_realtime.php exists and is web-accessible in the Cacti installation
  3. Check PHP register_argc_argv setting
    Review php.ini or run 'php -i | grep register_argc_argv' or check via phpinfo() to determine if register_argc_argv is set to On.
    Affected if PHP register_argc_argv is On (this is the default in PHP Docker images and enables the attack vector)
  4. Inspect vulnerable code in cmd_realtime.php
    Examine line 119 of cmd_realtime.php for $_SERVER['argv'] usage being passed to shell execution functions without sanitization.
    Affected if The $poller_id parameter is sourced from $_SERVER['argv'] and used in command execution without proper validation

The environment is affected if running Cacti 1.3.x DEV branch with cmd_realtime.php accessible and PHP register_argc_argv enabled, allowing unauthenticated command injection via the poller_id parameter.

Generated from the published advisory. Verify against your own configuration.

Check your environment

Paste your version and any relevant configuration and it will be compared against the affected criteria above. Do not include secrets or credentials.

AI-assisted, checked against the advisory. Informational, not a guarantee.

Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.

From vendor data
Patch available Apply the vendor patch
Vendor patch github.com →
Interim mitigation

Disable register_argc_argv in php.ini (set to Off) as an immediate workaround; apply vendor patch when available; restrict network access to cmd_realtime.php until fixed.

Have this fixed Scoped from the published advisory
  • Consultation4.0 h
  • Implementation6.0 h
  • Testing6.0 h
  • Review / QA3.0 h
19.0 hours of engineering $3,320
Get the patch applied

An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $5,312.

Scan for this in your stack

Free · runs locally
dbcve dependency scanner

Check whether your project pulls in CVE-2024-29895 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.

References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.

Primary sources

Practitioner notes

Contributed

Peer-ranked notes from engineers who’ve handled CVE-2024-29895 in production — separate from our analysis above.

No notes yet

Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.

What this is

A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.

What belongs here
  • Verified mitigations, workarounds, and config changes
  • Version or environment caveats, and links to real fixes
  • No weaponised exploit code, or anything meant to cause harm
  • No spam, self-promotion, credentials, or personal data