Skip to main content

WP Photo Album Plus EUVDEUVD-2026-96293

| CVE-2026-96278 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-10 Wordfence GHSA-36x3-mvq9-4q26
7.2
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

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

  1. Access
    Craft REQUEST_URI with entity-encoded script
  2. Delivery
    Submit request to WP Photo Album Plus
  3. Exploit
    Payload stored in session history
  4. Execution
    Victim loads modal container
  5. Persist
    wppaEntityDecode revives HTML
  6. Impact
    Script executes in victim browser

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 the WP Photo Album Plus plugin (<= 9.3.03.002) with its REQUEST_URI session-history logging active and the wppa-modal-container rendering path reachable, so the stored, entity-encoded payload is decoded by wppaEntityDecode() and injected via jQuery .html(). The attacker needs no authentication and no special account, but the script only fires when a user subsequently loads a page that renders the poisoned modal container - that victim page-access is the practical limiting factor, along with the site actually running the affected plugin version. The flaw stems specifically from esc_url_raw() stripping literal angle brackets while retaining HTML entities, so payloads must use entity encoding rather than raw tags.

Impact

The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N, base 7.2 HIGH) indicates a network-reachable, low-complexity, unauthenticated stored XSS with a scope change, which is the standard Wordfence profile for client-side injection in a WordPress plugin. No EPSS score, CISA KEV listing, POC, or SSVC decision data was supplied, so there is no evidence of active exploitation or public weaponization; exploitation status is 'no public exploit identified at time of analysis.' The impact is bounded: C:L/I:L/A:N reflects script execution in a victim's browser session rather than server compromise, so this is a moderate client-side risk rather than a server takeover. One signal to verify: the input vector declares UI:N, yet the description says the payload 'will execute whenever a user accesses an injected page,' which implies a victim must visit the poisoned page - a nuance that slightly tempers the 'no interaction' claim but does not change the unauthenticated-injection concern. Overall this is a credible, patch-worthy issue for sites running the affected plugin, but absent KEV/EPSS/POC it is not an emergency relative to actively exploited vulnerabilities.

Exploit ScenarioDerived

An unauthenticated attacker crafts a request whose REQUEST_URI contains HTML entities that survive esc_url_raw() sanitization; the plugin stores this in its session history. When a user later triggers the WP Photo Album Plus modal, wppaEntityDecode() converts the entities back into live HTML and jQuery('#wppa-modal-container').html() renders them, executing attacker script in the victim's browser. No public exploit code was identified in the provided data.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 10, 2026

Stored cross-site scripting in the WP Photo Album Plus WordPress plugin affects all versions up to and including 9.3.03.002 and can be triggered by remote attackers without authentication, since the assessed CVSS vector is AV:N/AC:L/PR:N/UI:N. The plugin records session history derived from REQUEST_URI without adequate sanitization, and because esc_url_raw() strips literal angle brackets while preserving HTML entities, the plugin's own wppaEntityDecode() routine later converts those entities back into live markup that is rendered through jQuery('#wppa-modal-container').html(). The stored script executes only when a victim subsequently loads a page that renders the poisoned modal container, which is the practical limiting factor; the base score of 7.2 (HIGH) reflects scope change with limited confidentiality and integrity impact, and no public exploit code or confirmed active exploitation was identified at time of analysis.

RemediationAI

No vendor-released patch was identified in the available data for CVE-2026-96278; the advisory references point to the vulnerable 9.3.02.003 source and no fixed version is documented, so site owners should treat 9.3.03.002 and earlier as unfixed and monitor the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/095e93d0-ad0d-4613-887e-5e47a2ef2b96 and the WordPress plugin repository for a patched release, then upgrade to the first version that states a fix. Because the payload is stored and unauthenticated, the highest-value compensating control is to deactivate WP Photo Album Plus entirely on sites that do not depend on it; the trade-off is loss of all galleries, albums, and photo-display functionality. Where the plugin must remain active, disable or avoid the REQUEST_URI-derived session-history logging feature if the plugin exposes a setting for it, accepting that this removes session tracking behavior used for gallery navigation continuity. As a second layer, block or rewrite request URIs containing HTML entity encodings (for example %26%2360 or &#60;/&#62; sequences) and generic entity-encoded tag patterns at the WAF or reverse-proxy layer, with the trade-off that legitimate URLs containing entity references may be rejected and that WAF rules require tuning to avoid bypasses using alternate entity forms. Administrators can also reduce exposure by restricting who can reach pages that render the modal container and by auditing stored session-history records for entity-encoded content, though neither eliminates the underlying decode-then-.html() rendering flaw. Adding an output-encoding filter that escapes the modal container content (or replacing the jQuery .html() sink with .text() via a custom plugin patch) removes the execution path, but such a patch is unsupported and must be re-applied after every plugin update.

Affected VersionsENISA

WP Photo Album Plus 0 ≤9.3.03.002

Affected Packages

euvd wp_photo_album_plus no fix

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

This is a classic CWE-79 improper neutralization of input during web page generation, manifesting as a stored (persistent) XSS in a WordPress plugin. WP Photo Album Plus maintains session history keyed off the HTTP REQUEST_URI, and that attacker-controllable value flows through sanitization paths shown in wppa-input.php, wppa-session.php, and wppa-maintenance.php before reaching the front-end rendering logic. The core bypass is an encoding mismatch: esc_url_raw(), the WordPress-sanctioned URL sanitizer, removes literal '<' and '>' characters and therefore appears to neutralize tag injection, but it leaves HTML entity sequences (such as &#60;script&#62;) intact. The plugin's own wppaEntityDecode() helper then decodes those entities back to live angle brackets, and the resulting string is passed to jQuery('#wppa-modal-container').html(), which parses it as HTML rather than as text. The result is that a payload which survived the URL filter is rehydrated into executable markup client-side. Because the injection rides on a stored session-history record rather than a single request/response cycle, the payload persists and fires for later visitors, and the referenced admin-side script (js/wppa-admin-scripts.js) underscores that the modal rendering path is part of the plugin's normal UI behavior rather than an edge case. The CPE cpe:2.3:a:opajaap:wp_photo_album_plus:*:*:*:*:*:*:*:* confirms the vendor namespace is opajaap and that every shipped release in the affected range is in scope.

Know when Wp Photo Album Plus 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 (Wordfence) PRIMARY 7.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 7.2 HIGH

Unauthenticated network injection via REQUEST_URI (PR:N, AV:N, AC:L); stored XSS crosses into the victim browser (S:C) with limited C/I and no availability impact.

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

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

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

DescriptionCVE.org

The WP Photo Album Plus plugin for WordPress is vulnerable to Stored Cross-Site Scripting via REQUEST_URI Session History in all versions up to, and including, 9.3.03.002 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The bypass works because esc_url_raw() strips literal angle brackets but retains HTML entities, which wppaEntityDecode() silently converts back to live HTML tags before jQuery('#wppa-modal-container').html() renders them.

Executive ViewAI

Why It Matters

WP Photo Album Plus, a WordPress plugin installed on affected sites through version 9.3.03.002, contains an unauthenticated stored cross-site scripting flaw that can persist in the plugin’s modal container. No public exploit identified at time of analysis, and no vendor-released patch identified at time of analysis, leaving all affected installations exposed until mitigation. Leadership should care because successful exploitation could compromise visitor and administrator sessions, damage site trust, and require costly cleanup across multiple WordPress properties.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include disabling or removing WP Photo Album Plus versions up to and including 9.3.03.002, applying WAF/virtual patching rules to block crafted REQUEST_URI payloads, enforcing a strict Content-Security-Policy, restricting administrative access, and monitoring logs for stored script activity or unexpected modal-container content.

Threat Intelligence Overview

EPSS Score
0.3%
Top 84% exploitable
Prevalence
Low
niche WordPress photo-album plugin, modest install base, not core software
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 No
EPSS 0.3%
Patch available No
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
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
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.

CVE-2026-18049 HIGH POC
7.5 Aug 12

Unauthenticated information disclosure in WP Photo Album Plus (WordPress plugin, all versions before 9.2.07.002) allows

CVE-2026-18048 HIGH POC
7.5 Aug 12

Unauthenticated arbitrary file deletion in WP Photo Album Plus (versions before 9.2.07.002) exposes WordPress sites to p

CVE-2026-17013 MEDIUM POC
6.1 Aug 12

Reflected Cross-Site Scripting in the WP Photo Album Plus WordPress plugin (all versions before 9.2.07.002) allows unaut

CVE-2026-6379 HIGH POC
8.6 May 18

SQL injection in the WP Photo Album Plus WordPress plugin before 9.1.11.001 allows unauthenticated attackers to inject a

CVE-2026-18962 MEDIUM POC
4.3 Aug 12

Insufficient authorization in WP Photo Album Plus (all versions before 9.2.09.002) allows any authenticated WordPress us

CVE-2021-25115 MEDIUM POC
6.4 Feb 14

The WP Photo Album Plus WordPress plugin before 8.0.10 was vulnerable to Stored Cross-Site Scripting (XSS). Rated medium

CVE-2026-14922 MEDIUM POC
6.1 Jul 31

Stored XSS in WP Photo Album Plus (all versions up to 9.2.03.001) allows unauthenticated remote attackers to inject pers

CVE-2026-39511 CRITICAL
9.3 Jun 15

Unauthenticated SQL injection in the WP Photo Album Plus WordPress plugin (versions ≤ 9.1.08.001) allows remote attacker

CVE-2026-92115 HIGH
8.8 Oct 16

Authenticated OS command injection in the WP Photo Album Plus WordPress plugin (all versions up to and including 9.3.02.

CVE-2015-3647 MEDIUM POC
4.3 May 21

Multiple cross-site scripting (XSS) vulnerabilities in wppa-ajax-front.php in the WP Photo Album Plus (aka WPPA) plugin

CVE-2026-87909 HIGH
7.5 Sep 19

Remote code execution in WP Photo Album Plus affects all versions through the wppa_image_magick path, allowing authentic

CVE-2026-54829 HIGH
7.5 Jun 25

Blind SQL injection in the WP Photo Album Plus WordPress plugin (all versions up to and including 9.1.13.005) lets remot

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