Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to ShowDoc with Mock access
-
ExploitStore crafted mockjs template with escaped parentheses
-
ExecutionTrigger render via infoByKey, mockjs eval() fires
-
ImpactExecute shell commands as root
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must be an authenticated ShowDoc user able to create or edit a Mock entry (MockController::add) and later trigger its rendering (MockController::infoByKey); the Node-based mock service (mock/index.js) must be running. The root-level impact is specific to the official Docker image, where the pre-patch mock service ran as root - the fix adds a de-privileged 'mockmock' user, so even post-patch Docker runs mock unprivileged. Limiting factors: valid credentials with Mock-feature permission are required (PR:L, not unauthenticated), so multi-tenant or publicly-registerable instances are most at risk; non-Docker or wordpress-base deployments that do not start the mock service are not exposed via this path. |
| Impact | This is a genuine, actionable priority rather than CVSS inflation, but its severity is gated by one real precondition: authentication. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) describes a network-reachable, low-complexity attack that any authenticated user with access to the Mock feature can perform, yielding full vulnerable-system impact (VC:H/VI:H/VA:H) - effectively OS command execution, and specifically as root in the official Docker image. The vendor decision label is 'this_week', consistent with a serious RCE that is not an active-exploitation emergency. Signals are incomplete: no EPSS score and no KEV listing are present in the input, so exploitation probability cannot be quantified and active in-the-wild use is not confirmed. A public PoC reference exists (a GitHub gist) but is not verified as working exploit code, so it should raise urgency over a theoretical bug without being treated as confirmed weaponization. Net: treat as a high-priority patch for any internet-exposed or multi-tenant ShowDoc instance, tempered by the fact that an attacker must first hold a valid account able to create Mock entries. |
| Exploit ScenarioDerived | An attacker who holds any authenticated ShowDoc account that can use the Mock feature submits a crafted mockjs template via MockController::add, using escaped parentheses so the payload survives storage but is later evaluated by mockjs's eval()-backed placeholder handling. When the mock is rendered through MockController::infoByKey, the embedded code executes shell commands on the host - as root in the official Docker image. A public PoC reference (gist) exists but is not verified as working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 31, 2026
ShowDoc releases from 2.8.14 up to (but not including) 3.9.6 let an authenticated user turn the Mock feature into a shell-command execution primitive: a crafted mockjs template stored through MockController::add is later evaluated by mockjs's eval()-based placeholder handler when MockController::infoByKey renders it, and because the mock service in the official Docker image ran as root, the commands execute with root privileges. The assessed vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (vendor score 8.7 under CVSS 4.0), so the barrier is credentials with Mock-feature permission rather than network position - publicly registerable or multi-tenant instances carry the most exposure. A public PoC reference (a Gist linked from the CVE record) exists but is not verified as working exploit code, no CISA KEV listing or confirmed in-the-wild exploitation is reported, and the vendor has shipped a fix in ShowDoc 3.9.6 (Docker image 3.4.3) that adds a template whitelist and runs the mock service as a de-privileged 'mockmock' user; the vuln.today priority is this_week.
RemediationAI
Vendor-released patch: upgrade to ShowDoc 3.9.6, or pull Docker image SHOWDOC_DOCKER_VERSION 3.4.3, which contains the fix commit https://github.com/star7th/showdoc/commit/5a2087a3f408f5266f61e9e2fb98845ef4788288 - this adds a mockjs placeholder whitelist in mock/index.js that rejects property chains, backtick/tagged-template forms, \u escapes and non-literal placeholder arguments, and de-privileges the mock service by creating a 'mockmock' user and launching it with su-exec (HOME=/tmp) instead of root, so post-patch Docker deployments run mock unprivileged even if a template bypass were found. Updating is the complete fix; as compensating controls on instances that cannot be updated immediately, restrict the Mock feature to trusted accounts only (the vuln requires a user who can create a Mock entry), and stop or firewall the mock service on its non-privileged port 7123 so stored templates cannot be rendered - with the trade-off that mock rendering stops working for legitimate API consumers, and note that only stopping the container-level mock service removes the root execution context, since the pre-patch service runs as root inside the official image.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is CWE-94 code injection against mockjs, a JavaScript library that generates mock data from templates: when a placeholder such as @name(args) is encountered, mockjs's handler.placeholder splices the argument text into a JavaScript eval() context, so any string content reaching that handler is interpreted as code rather than data. ShowDoc exposes this through its Mock feature - MockController::add persists an attacker-supplied template, and MockController::infoByKey later triggers rendering - so a template containing escaped parentheses is decoded before evaluation and escapes the intended data-literal context. The upstream fix in commit 5a2087a3 (ShowDoc v3.9.5 -> v3.9.6, Docker SHOWDOC_DOCKER_VERSION 3.4.2 -> 3.4.3) addresses the root cause class in two ways: mock/index.js gains a recursive whitelist validator (isSafePlaceholderString / isSafeMockTemplate) that runs on the JSON-decoded template, rejects backticks, \u escapes, property chains and any @name(...) argument that is not a number, quoted string, true/false/null, bare token or flat literal array, and probes with mockjs's real placeholder name character set so forms like @0(...) cannot slip through; and entrypoint.sh switches the mock service from root to a dedicated 'mockmock' user via su-exec with HOME=/tmp, added in the Dockerfile only for the default Alpine base image (wordpress:* bases do not start mock). The affected CPE is cpe:2.3:a:showdoc:showdoc:*:*:*:*:*:*:*:*.
Know when Showdoc gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Authenticated user (PR:L) reaches the Mock feature over the network (AV:N) with no special timing (AC:L) and gains full command execution (C/I/A:H); impact stays within the running component so S:U.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
ShowDoc 2.8.14 before 3.9.6 contains a code injection vulnerability in its Mock feature that allows authenticated users to execute shell commands through mockjs templates. Attackers can store a template via MockController::add with escaped parentheses that mockjs evaluates with eval(), then trigger it through MockController::infoByKey to run commands, as root in the official Docker image.
Executive ViewAI
A high-severity vulnerability in ShowDoc versions 2.8.14 through 3.9.5 allows authenticated users with Mock feature access to execute shell commands as root in the official Docker image, potentially leading to full system compromise. Organizations using ShowDoc for documentation-especially those with public registration or multi-tenant setups-should prioritize remediation because attackers with low-privilege accounts could gain root control, risking data confidentiality, integrity, and availability.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Unrestricted File Upload in ShowDoc v2.9.5 allows remote attackers to execute arbitrary code via the 'file_url' paramete
showdoc is vulnerable to Cross-Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is remote
showdoc is vulnerable to Cross-Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is remote
Unrestricted Upload of File with Dangerous Type in Packagist showdoc/showdoc prior to 2.10.2. Rated high severity (CVSS
There is a Unrestricted Upload of File vulnerability in ShowDoc v2.10.3 in GitHub repository star7th/showdoc prior to 2.
showdoc is vulnerable to Cross-Site Request Forgery (CSRF). Rated medium severity (CVSS 6.5), this vulnerability is remo
showdoc is vulnerable to Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG). Rated medium severity (CVS
showdoc is vulnerable to Cross-Site Request Forgery (CSRF). Rated medium severity (CVSS 6.5), this vulnerability is remo
server/index.php?s=/api/teamMember/save in ShowDoc 2.4.2 has a CSRF that can add members to a team. Rated medium severit
ShowDoc 2.4.1 allows remote attackers to obtain sensitive information by navigating with a modified page_id, as demonstr
File Upload Restriction Bypass leading to Stored XSS Vulnerability in GitHub repository star7th/showdoc prior to 2.10.4.
showdoc is vulnerable to URL Redirection to Untrusted Site. Rated medium severity (CVSS 6.1), this vulnerability is remo
EUVD-2026-114724
GHSA-fm4v-42hr-rpgp
NVD
CVE.org
EPSS
VulDB
Exploit-DB