CVE-2026-30971: ZoneMinder command injection in monitor Device Path

CVE-2026-30971 · Severity: high · CVSS 8.8 · Published 2026-10-16

ZoneMinder is open-source video surveillance software used to monitor camera feeds. An authenticated user with permission to create or edit monitors can inject shell commands into the Device Path field, allowing arbitrary code execution on the server as the web server user. This could lead to data theft, system compromise, or lateral movement within the network.

Technologies: Zoneminder. Vendors: Zoneminder.

Quick answers

Is CVE-2026-30971 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-30971 being exploited in the wild.
How severe is CVE-2026-30971?
High severity, with a CVSS score of 8.8, published 16 October 2026.
Which products and versions are affected?
Zoneminder prior to 1.39.2, 1.38.2, and 1.36.40.
Is there a fix for CVE-2026-30971?
Yes: fixed in 1.39.2, 1.38.2, 1.36.40. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-30971 attacked?
It is attacked over the network.
Am I affected by CVE-2026-30971?
Check whether you run Zoneminder at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • Fixed in: 1.39.2, 1.38.2, 1.36.40

Technical details

The vulnerability is an OS command injection (CWE-78) in Perl and PHP code paths that interpolate an unvalidated monitor Device field directly into shell commands via qx(), backticks, and exec() without proper sanitization. An authenticated attacker with monitor-create or monitor-edit permissions can inject shell metacharacters that are executed when the monitor control or startup path runs, bypassing weak escapeshellcmd() defenses in PHP and occurring before zmdc.pl argument detainting in Perl. The fix implements input validation (rejecting Device values not matching /^\/dev\/[\w\/.-]+$/) and output sanitization using escapeshellarg() in PHP and quoting in Perl across all vulnerable code locations.

Affected products

  • ZoneMinder ZoneMinder prior to 1.39.2, 1.38.2, and 1.36.40

Timeline

  • 2026-07-26: disclosed
  • 2026-03-08: patched: Commit 419846c8 merged to master and release-1.38
  • 2026-10-16: advisory: Published to NVD

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.