ZoneMinder: OS command injection via monitor name in event export
Summary
ZoneMinder stores monitor names that are placed into shell commands during event export. Because the name is wrapped in manual single quotes instead of being escaped, shell metacharacters in the name can break out of the command. An authenticated user with permission to create or edit monitors and another user with Events View permission can trigger arbitrary command execution as the web server user when the events of that monitor are exported.
Affected
- ZoneMinder versions 1.37.48 up to 1.38.3 (exact lower bound unconfirmed; sources differ)
- Installations before 1.38.3 should be treated as potentially affected
Fixed in
- ZoneMinder 1.38.3
Workaround
- Unknown.
Exploitation
- CISA SSVC: exploitation none, automatable no, technical impact total.
- No public exploitation confirmed in the sources reviewed.
- Attack requires authenticated users with monitor-create or monitor-edit permission and Events View permission.
Our recommendation
- Update ZoneMinder to version 1.38.3 or later.
- Until patched, review which users hold monitor create or edit permissions and restrict them to trusted staff.
- Check monitor names for shell metacharacters and review export logs for unusual activity.
- Run the web server with minimal privileges and monitor for unexpected processes.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-88m4-hrgp-m9v3 github.com
- ZoneMinder release 1.38.3 github.com
- Fix commit 2de2ae4 github.com
- Fix commit b3a7c05 github.com
- Fix commit b5605e0 github.com
- Scriptkittens: Two sinks, one shell www.scriptkittens.com
- Ubuntu CVE-2026-102608 ubuntu.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 31 Oct 2026, 08:06.
Original description (NVD)
ZoneMinder is a free, open source closed-circuit television software application. Prior to 1.38.3, downloadEvents() manually wraps a monitor Name value in single quotes instead of using escapeshellarg() before placing it in shell commands when a user with monitor-create or monitor-edit permission stores a monitor Name containing shell metacharacters and a user with Events View permission exports that monitor's events. In this attack mechanism, the stored monitor Name reaches both the ffmpeg concatenation command and the tar or zip archive command and breaks out of manual quoting. Arbitrary commands execute as the web server user. This issue is fixed in version 1.38.3.
NVD references (6)
- https://github.com/ZoneMinder/zoneminder/commit/2de2ae44a1d751bad4b020c5573b2d58c59c1525
- https://github.com/ZoneMinder/zoneminder/commit/b3a7c05f079c87badf4b0ce052da0acfd4047a4b
- https://github.com/ZoneMinder/zoneminder/commit/b5605e01c14354fc8e2dcae8cefd90c3674880d9
- https://github.com/ZoneMinder/zoneminder/releases/tag/1.38.3
- https://github.com/ZoneMinder/zoneminder/security/advisories/GHSA-88m4-hrgp-m9v3
- https://www.scriptkittens.com/blog/two-sinks-one-shell
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
