Skip to main content

DokuWiki EUVDEUVD-2026-104927

| CVE-2026-113356 HIGH
Deserialization of Untrusted Data (CWE-502)
2026-10-20 VulnCheck GHSA-9xhj-2fcr-x9j8
7.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate with page-edit rights
  2. Delivery
    Race concurrent draft rewrites to splice serialized payload
  3. Exploit
    Trigger unserialize() in Draft::getDraftText()
  4. Execution
    Instantiate MemoryIndex/Installer POP gadget
  5. Impact
    Arbitrary file write and code execution

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
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

Requires (1) an authenticated DokuWiki account holding edit/write rights on at least one page (PR:L - not anonymous), and (2) winning a race condition by issuing concurrent draft rewrites to splice attacker-controlled serialized data into the draft file consumed by Draft::getDraftText(), which calls unserialize() without an allowed_classes restriction. Successful code execution further depends on a usable PHP POP gadget being present in the DokuWiki codebase (e.g., MemoryIndex or Installer), which ship with the core. Limiting factors: exploitation is gated on prior authentication and edit permission, and the race (CVSS AT:P) is non-deterministic so success may need repeated attempts; instances where only trusted administrators can edit face substantially reduced exposure. This affects default configurations of DokuWiki versions before 2026-07-14c - no unusual non-default setting is required beyond granting edit rights.

Impact

This is a credible but conditional priority rather than a drop-everything emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:N) scores 7.7 High, and the impact triad is maximal (VC:H/VI:H/VA:H) because successful PHP object injection via CWE-502 yields arbitrary file write, deletion, and code execution. Two factors temper the raw score: PR:L means the attacker must already hold an authenticated account with edit rights (not anonymous), and AT:P (Attack Requirements: Present) reflects the need to win a race condition on concurrent draft rewrites, which is non-deterministic and not guaranteed on a single attempt. A publicly available exploit (VulnCheck researcher gist) raises practical risk because it lowers the skill barrier, but there is NO CISA KEV listing and NO EPSS score in the provided data, so there is no evidence of active, widespread exploitation - this is POC-available, not confirmed in-the-wild. Signals are internally consistent (network-reachable code path, authenticated low-privilege actor, race-gated, full host compromise on success); no contradictions between vector and description were found. Net: prioritize patching for any multi-user DokuWiki instance where untrusted or semi-trusted accounts can edit pages, but single-admin or tightly-trusted deployments face lower real-world exposure.

Exploit ScenarioDerived

A low-privileged but authenticated DokuWiki user with page-edit rights repeatedly opens and saves drafts while concurrently writing crafted serialized PHP into the draft file, racing the legitimate rewrite so that Draft::getDraftText() feeds attacker-controlled data to unserialize(). By splicing in a serialized MemoryIndex or Installer gadget, they trigger a POP chain leading to arbitrary file write and remote code execution on the web server. A public proof-of-concept exploit exists (researcher gist linked from the advisory), lowering the effort required, though the race condition (CVSS AT:P) means exploitation may take multiple attempts.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) Patch available 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 20, 2026

PHP object injection in DokuWiki's draft subsystem lets an authenticated user who holds edit rights on any page race concurrent draft rewrites to splice attacker-controlled serialized data into a draft file that Draft::getDraftText() passes to unserialize() without an allowed_classes restriction, enabling arbitrary file write, file deletion, and PHP code execution through core gadgets such as MemoryIndex and Installer. All DokuWiki installations before the 2026-07-14c release are affected in their default configuration, and exploitation is gated on a valid account with write permission plus a non-deterministic race, so repeated attempts may be required; environments where only trusted administrators can edit face substantially reduced exposure. Publicly available exploit code exists (a proof-of-concept gist is linked from the vendor issue), but there is no CISA KEV confirmation of active exploitation. This is a credible but conditional priority rather than a drop-everything emergency.

RemediationAI

Upgrade to DokuWiki release 2026-07-14c or later - Vendor-released patch: 2026-07-14c (https://github.com/dokuwiki/dokuwiki/releases/tag/release-2026-07-14c), which applies allowed_classes restrictions at inc/Draft.php, inc/Cache/CacheInstructions.php, inc/parserutils.php, and lib/plugins/extension/Repository.php; the underlying change is commit 1531802afb2ac3eea147a887600fa5750e74e681 (https://github.com/dokuwiki/dokuwiki/commit/1531802afb2ac3eea147a887600fa5750e74e681), and if a full upgrade is temporarily impossible that allow-list hardening can be back-ported to the older tree. Because exploitation needs an authenticated editor, the highest-value compensating control is to shrink the editor population: remove write ACLs from untrusted or self-registered accounts, close open registration, and restrict edit permission to a small trusted group (side effect: self-service wikis and community-edited instances lose their normal workflow). If untrusted users must retain write access, disable or throttle draft autosave for them and cap concurrent requests per session at the reverse proxy (side effect: legitimate authors lose draft recovery after session loss, and aggressive rate limits can cause 429s during normal editing), and segregate the data directory so the web user cannot write outside it via open_basedir or a read-only mount of code paths - this blunts the Installer gadget's file-write payoff but does not remove the deserialization primitive. Deploying a PHP-level hardening such as disabling dangerous classes via a custom unserialize callback or an opcache/extension-level allow-list is possible but fragile and must be tested against DokuWiki's cache and metadata paths, which legitimately rely on serialized data. Detection of prior attempts can be approximated by monitoring the data directory for draft files containing serialized object markers (O: followed by a class name) and by looking for unexpected writes or deletions under conf/ and lib/, since the exploit chain ends in filesystem modification rather than a distinct HTTP signature.

Affected VersionsENISA

Dokuwiki 0 <2026-07-14c

Affected Packages

euvd dokuwiki fix: 2026-07-14c

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 root cause is CWE-502 (Deserialization of Untrusted Data). DokuWiki serializes draft state to disk and later restores it in inc/Draft.php at getDraftText(), which called unserialize() on the raw file contents with no class allow-list. Because PHP's unserialize() instantiates whatever classes appear in the payload, an attacker who can influence the bytes on disk gains control over object construction and can chain magic methods (__destruct, __wakeup, __toString) in classes that ship with DokuWiki core - the advisory names MemoryIndex and Installer as usable POP gadgets, with the latter particularly attractive because the installer class performs filesystem operations, turning the deserialization primitive into arbitrary file write, deletion, and ultimately code execution. The draft file is normally written only with the attacker's own content, so the injection requires a race: concurrent draft save requests are issued so that one request's serialized payload lands in the file at the moment another request reads and unserializes it. The vendor patch commit 1531802afb2ac3eea147a887600fa5750e74e681 does not merely fix Draft.php; it hardens four separate unserialize() call sites across the codebase - inc/Draft.php (allowed_classes => false), inc/Cache/CacheInstructions.php (allowed_classes => ['stdClass']), inc/parserutils.php in p_read_metadata() (allowed_classes => false), and lib/plugins/extension/Repository.php in retrieveCache() (allowed_classes => false) - indicating the maintainers treated unsafe deserialization as a systemic pattern rather than a single sink. The assessed vector is CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H, i.e. network-reachable, low-privileged authenticated, no user interaction, high confidentiality/integrity/availability impact; the vendor's CVSS 4.0 score of 7.7 reflects the same profile with AT:P capturing the race requirement.

Know when Dokuwiki 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 7.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Network-reachable code path (AV:N); AC:H because exploitation hinges on winning a non-deterministic draft-rewrite race; PR:L for the required authenticated edit rights; full host compromise via RCE gives C:H/I:H/A:H, scope unchanged.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/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
Present
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

DokuWiki before 2026-07-14c contains a PHP object injection vulnerability in Draft::getDraftText() that passes draft file contents to unserialize() without restricting allowed classes. Authenticated users with edit rights can race concurrent draft rewrites to splice serialized data, instantiating gadgets like MemoryIndex or Installer for arbitrary file write, deletion, and code execution.

Technical POC Analysis

CWE-502 (Deserialization of Untrusted Data), specifically PHP object injection.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Latest POC

1 PoC candidate from github (unverified)

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

DokuWiki installations running releases before 2026-07-14c are exposed to a high-severity draft-handling flaw that can lead to arbitrary file write, file deletion, and PHP code execution on the wiki server. Exploitation requires page edit rights and a race condition, but publicly available exploit code exists, so the exposure is credible for organizations that allow broad editing privileges. Leadership should treat this as a priority patch-and-permission-review item because a successful attack could compromise wiki integrity and the underlying host.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 55% exploitable
Prevalence
Medium
popular open-source PHP wiki, common but not ubiquitous enterprise footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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 Yes
EPSS 0.5%
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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

59
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

CVE-2018-15474 CRITICAL POC
9.6 Sep 07

CSV Injection (aka Excel Macro Injection or Formula Injection) in /lib/plugins/usermanager/admin.php in DokuWiki 2018-04

CVE-2016-7965 MEDIUM POC
6.5 Oct 31

DokuWiki 2016-06-26a and older uses $_SERVER[HTTP_HOST] instead of the baseurl setting as part of the password-reset URL

CVE-2017-12583 MEDIUM POC
6.1 Aug 06

DokuWiki through 2017-02-19b has XSS in the at parameter (aka the DATE_AT variable) to doku.php. Rated medium severity (

CVE-2017-12980 MEDIUM POC
6.1 Aug 21

DokuWiki through 2017-02-19c has stored XSS when rendering a malicious RSS or Atom feed, in /inc/parser/xhtml.php. Rated

CVE-2017-12979 MEDIUM POC
6.1 Aug 21

DokuWiki through 2017-02-19c has stored XSS when rendering a malicious language name in a code element, in /inc/parser/x

CVE-2022-3123 MEDIUM POC
6.1 Sep 05

Cross-site Scripting (XSS) - Reflected in GitHub repository splitbrain/dokuwiki prior to 2022-07-31a. Rated medium sever

CVE-2022-28919 MEDIUM POC
6.1 May 12

HTMLCreator release_stable_2020-07-29 was discovered to contain a cross-site scripting (XSS) vulnerability via the funct

CVE-2023-34408 MEDIUM POC
5.4 Jun 05

DokuWiki before 2023-04-04a allows XSS via RSS titles. Rated medium severity (CVSS 5.4), this vulnerability is remotely

CVE-2019-25338 MEDIUM POC
5.3 Feb 12

Dokuwiki versions up to 2018-04-22b contains a vulnerability that allows attackers to identify valid user accounts (CVSS

CVE-2016-7964 HIGH
8.6 Oct 31

The sendRequest method in HTTPClient Class in file /inc/HTTPClient.php in DokuWiki 2016-06-26a and older, when media fil

CVE-2012-2129 MEDIUM POC
4.3 Aug 27

Cross-site scripting (XSS) vulnerability in doku.php in DokuWiki 2012-01-25 Angua allows remote attackers to inject arbi

CVE-2012-2128 MEDIUM
6.8 Aug 27

Cross-site request forgery (CSRF) vulnerability in doku.php in DokuWiki 2012-01-25 Angua allows remote attackers to hija

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