Skip to content
Heist/ feed
Back to feed
High

ZoneMinder: Authenticated RCE via command injection in monitor Device Path

Type: advisorySources: OSV

ZoneMinder is a free, open source closed-circuit television software application. Prior to 1.39.2, 1.38.2, and 1.36.40, ZoneMinder interpolates an unvalidated monitor Device field into shell commands in PHP and Perl control paths when an authenticated user with monitor-create or monitor-edit permission saves a Local monitor whose Device Path contains shell metacharacters and the monitor control or startup path runs. In this attack mechanism, the stored Device value reaches Perl qx() and backtick execution before zmdc.pl argument detainting, while separate PHP command paths use bypassable escapeshellcmd defenses. The attacker can execute arbitrary commands as the web server user. This vulnerability is fixed in 1.39.2, 1.38.2, and 1.36.40.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-30971
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 23:10 UTC · Revision 1

Source evidence

ZoneMinder: Authenticated RCE via command injection in monitor Device Path

core-osv · Original source

Published 16 Oct 2026, 19:40 UTC

ZoneMinder is a free, open source closed-circuit television software application. Prior to 1.39.2, 1.38.2, and 1.36.40, ZoneMinder interpolates an unvalidated monitor Device field into shell commands in PHP and Perl control paths when an authenticated user with monitor-create or monitor-edit permission saves a Local monitor whose Device Path contains shell metacharacters and the monitor control or startup path runs. In this attack mechanism, the stored Device value reaches Perl qx() and backtick execution before zmdc.pl argument detainting, while separate PHP command paths use bypassable escapeshellcmd defenses. The attacker can execute arbitrary commands as the web server user. This vulnerability is fixed in 1.39.2, 1.38.2, and 1.36.40.

osv:CVE-2026-30971
Complete source record
{
  "id": "043c50dbbdd1ed59c82dfc8591135309e3eff7443409570fa37a3609ae2e4c1f",
  "url": "https://osv.dev/vulnerability/CVE-2026-30971",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "ZoneMinder: Authenticated RCE via command injection in monitor Device Path",
    "summary": "ZoneMinder is a free, open source closed-circuit television software application. Prior to 1.39.2, 1.38.2, and 1.36.40, ZoneMinder interpolates an unvalidated monitor Device field into shell commands in PHP and Perl control paths when an authenticated user with monitor-create or monitor-edit permission saves a Local monitor whose Device Path contains shell metacharacters and the monitor control or startup path runs. In this attack mechanism, the stored Device value reaches Perl qx() and backtick execution before zmdc.pl argument detainting, while separate PHP command paths use bypassable escapeshellcmd defenses. The attacker can execute arbitrary commands as the web server user. This vulnerability is fixed in 1.39.2, 1.38.2, and 1.36.40.",
    "evidence": "osv:CVE-2026-30971",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-30971",
      "aliases": [
        "CVE-2026-30971",
        "GHSA-g66m-77fq-79v9"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/zoneminder/zoneminder",
              "type": "GIT",
              "events": [
                {
                  "introduced": "39c2cc997beb038aed2e7f17abf372ee3b32e090"
                },
                {
                  "fixed": "cd256117cf2f2d8fc62f202864a5a61172d34670"
                },
                {
                  "fixed": "419846c8750c3f45b9b8a1df8cd49c189a14dc03"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "1.38.0"
                      },
                      {
                        "fixed": "1.38.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "419846c8750c3f45b9b8a1df8cd49c189a14dc03"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "1.38.1",
            "1.38.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-30971.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:32.128959319Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/30xxx/CVE-2026-30971.json",
        "https://github.com/ZoneMinder/zoneminder/security/advisories/GHSA-g66m-77fq-79v9",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-30971",
        "https://github.com/ZoneMinder/zoneminder/commit/419846c8750c3f45b9b8a1df8cd49c189a14dc03"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-78"
        ],
        "cna_assigner": "GitHub_M",
        "unresolved_ranges": [
          {
            "extracted_events": [
              {
                "range": [
                  {
                    "fixed": "1.36.40"
                  },
                  {
                    "introduced": "1.39.0"
                  },
                  {
                    "fixed": "1.39.2"
                  }
                ],
                "source": "AFFECTED_FIELD",
                "strategy": "StringRangeExpression"
              }
            ]
          }
        ],
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/30xxx/CVE-2026-30971.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-30971",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 499227,
  "published_at": "2026-10-16T19:40:51.681+00:00"
}