Skip to main content

ShowDoc EUVDEUVD-2026-114724

| CVE-2026-120203 HIGH
Code Injection (CWE-94)
2026-10-31 VulnCheck GHSA-fm4v-42hr-rpgp
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate to ShowDoc with Mock access
  2. Exploit
    Store crafted mockjs template with escaped parentheses
  3. Execution
    Trigger render via infoByKey, mockjs eval() fires
  4. Impact
    Execute 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

ShowDoc 2.8.14 <3.9.6

Affected Packages

euvd showdoc fix: 3.9.6

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

Vendor (VulnCheck) PRIMARY 8.7 HIGH
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
vuln.today AI 8.8 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Low
niche self-hosted API/documentation tool, limited enterprise production footprint
Social Media
2
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

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.

CVE-2021-36440 CRITICAL POC
9.8 Sep 08

Unrestricted File Upload in ShowDoc v2.9.5 allows remote attackers to execute arbitrary code via the 'file_url' paramete

CVE-2021-4168 HIGH POC
8.8 Dec 26

showdoc is vulnerable to Cross-Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is remote

CVE-2021-4017 HIGH POC
8.8 Dec 01

showdoc is vulnerable to Cross-Site Request Forgery (CSRF). Rated high severity (CVSS 8.8), this vulnerability is remote

CVE-2022-0409 HIGH POC
7.8 Feb 19

Unrestricted Upload of File with Dangerous Type in Packagist showdoc/showdoc prior to 2.10.2. Rated high severity (CVSS

CVE-2022-1034 HIGH POC
7.2 Mar 22

There is a Unrestricted Upload of File vulnerability in ShowDoc v2.10.3 in GitHub repository star7th/showdoc prior to 2.

CVE-2021-3993 MEDIUM POC
6.5 Dec 01

showdoc is vulnerable to Cross-Site Request Forgery (CSRF). Rated medium severity (CVSS 6.5), this vulnerability is remo

CVE-2021-3990 MEDIUM POC
6.5 Dec 01

showdoc is vulnerable to Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG). Rated medium severity (CVS

CVE-2021-3683 MEDIUM POC
6.5 Nov 13

showdoc is vulnerable to Cross-Site Request Forgery (CSRF). Rated medium severity (CVSS 6.5), this vulnerability is remo

CVE-2018-19621 MEDIUM POC
6.5 Nov 28

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

CVE-2018-19609 MEDIUM POC
6.5 Nov 27

ShowDoc 2.4.1 allows remote attackers to obtain sensitive information by navigating with a modified page_id, as demonstr

CVE-2022-0951 MEDIUM POC
6.1 Mar 15

File Upload Restriction Bypass leading to Stored XSS Vulnerability in GitHub repository star7th/showdoc prior to 2.10.4.

CVE-2021-4000 MEDIUM POC
6.1 Dec 03

showdoc is vulnerable to URL Redirection to Untrusted Site. Rated medium severity (CVSS 6.1), this vulnerability is remo

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy