MEDIUM 6.4

CVE-2026-10095: WP Photo Album Plus Stored XSS Vulnerability (v9.1.13.005 and Earlier)

WP Photo Album Plus, a popular WordPress plugin, contains a stored cross-site scripting (XSS) vulnerability in versions up to 9.1.13.005. Attackers with contributor-level access or higher can inject malicious code through the 'subtext' parameter of the plugin's photo shortcode. When other users—including administrators—view the compromised post, the injected script executes in their browser, potentially allowing attackers to steal session tokens, modify content, or perform actions on their behalf. The vulnerability persists in the database, making it a lasting threat until patched.

Source data · NVD / CISA · public domain

CVSS
3.1 · 6.4 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Weaknesses (CWE)
CWE-79
Affected products
0 configuration(s)
Published / Modified
2026-07-01 / 2026-07-01

NVD description (verbatim)

The WP Photo Album Plus plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'subtext' parameter in all versions up to, and including, 9.1.13.005 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. A contributor-level attacker can embed the malicious [photo] shortcode in a post submitted for review, causing the stored payload to execute when an administrator or any other user views the post.

11 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability stems from insufficient input sanitization and output escaping in the WP Photo Album Plus plugin's handling of the 'subtext' parameter. The plugin fails to properly sanitize user input before storage and does not adequately escape output when rendering the [photo] shortcode. This allows authenticated users with contributor-level permissions or above to craft a malicious post containing a [photo] shortcode with JavaScript embedded in the subtext field. The payload is stored in the WordPress database and executed server-side when any user accesses the post, including administrators viewing draft content. The attack vector is network-based with low attack complexity, requiring only valid WordPress authentication.

Business impact

Organizations running WP Photo Album Plus face several operational risks. An attacker with contributor access—a common role for freelance writers, guest bloggers, or editorial staff—can silently compromise any post or page. Stored XSS in admin-facing content is particularly dangerous because administrators often have higher privileges; an attacker can steal admin session cookies to gain complete site control. Content integrity is compromised, as malicious scripts may deface pages, inject advertisements, or redirect users to phishing sites. Multi-site WordPress installations amplify the risk if a single compromised contributor account can inject payloads affecting content seen by thousands of users. Incident response becomes complex due to the stored nature of the payload.

Affected systems

WP Photo Album Plus versions 9.1.13.005 and earlier are affected. The plugin is installed on sites across a wide range of WordPress deployments, from small blogs to enterprise content platforms. Any WordPress site using this plugin where contributor-level users can submit or edit posts is at risk. The vulnerability affects the plugin's core functionality, so all active installations are potentially vulnerable unless already patched. Organizations should audit plugin version numbers across all WordPress instances in their environment.

Exploitability

The vulnerability requires authenticated access and contributor-level permissions or above. While this is not an unauthenticated attack, contributor status is commonly granted to external content creators, making the barrier to exploitation relatively low in many organizations. No special tools or advanced techniques are required—an attacker simply crafts a WordPress post with a malicious [photo] shortcode, submitting it for publication. Administrators reviewing draft content will trigger the payload without any additional user interaction required. The attack does not appear in CISA's Known Exploited Vulnerabilities (KEV) catalog, suggesting active exploitation in the wild has not been confirmed at the time of publication, though this does not guarantee the vulnerability is unexploited.

Remediation

Update WP Photo Album Plus to a version that addresses the vulnerability. Verify the specific patched version against the plugin vendor's security advisory and release notes. As an interim measure, restrict contributor-level permissions to trusted users only, and consider disabling the plugin if it is not actively used. For high-risk sites, temporarily prevent contributors from submitting new posts until patching is complete. Review all existing posts and pages created by contributors in recent months for signs of injected scripts. Use WordPress security plugins to monitor for suspicious code patterns in post content.

Patch guidance

Check the official WP Photo Album Plus plugin repository or vendor advisory for version 9.1.13.006 or later that resolves the input sanitization and output escaping flaws. Patch testing should include verifying that the [photo] shortcode no longer executes JavaScript in the subtext parameter across different WordPress and PHP versions your organization uses. Before deploying to production, test post submission and viewing workflows with both contributor and administrator accounts. Backup your WordPress database and media files before applying updates.

Detection guidance

Search your WordPress post and page content for instances of the [photo] shortcode, particularly those created or modified by contributor-level users after the plugin was installed. Look for unusual HTML or JavaScript characters in the subtext parameter of these shortcodes—encoded entities, script tags, or event handlers are red flags. Monitor WordPress debug logs and security plugins for JavaScript execution warnings or Content Security Policy violations. Check browser console output when viewing posts to identify unexpected network requests or script errors that could indicate injected payloads. Use grep or database queries to find posts containing suspicious patterns like `<script`, `javascript:`, or `onerror=` within the [photo] shortcode parameters.

Why prioritize this

This vulnerability merits prompt attention despite its MEDIUM severity rating. The stored nature of XSS makes it persistent and difficult to remediate retroactively, affecting all users who view compromised content. The low barrier to exploitation—requiring only common contributor-level access—combined with the ability to compromise administrator accounts and gain full site control, elevates practical risk above the CVSS score alone. WordPress sites are high-value targets for malware distribution and SEO manipulation, making XSS in a content-facing plugin particularly dangerous. Patching should be prioritized within one to two weeks depending on your contributor user base and site criticality.

Risk score, explained

The CVSS 3.1 score of 6.4 (MEDIUM) reflects the requirement for authenticated, contributor-level access (PR:L) and the absence of a direct availability impact (A:N). However, the scope change (S:C) acknowledging the impact on other users, combined with confidentiality and integrity compromise (C:L, I:L), accurately captures the cross-site scripting nature. The score appropriately does not assume widespread exploitation or active weaponization. In practice, risk is contextual: organizations with strict contributor vetting and multi-factor authentication may find this lower-risk; those with many external contributors or weak authentication face higher real-world risk.

Frequently asked questions

Can an unauthenticated attacker exploit this vulnerability?

No. The vulnerability requires authenticated access with at least contributor-level permissions in WordPress. An attacker must have a valid user account. However, contributor access is a common role for freelance writers and guest editors, so this is not an extremely high bar in many organizations.

What happens if a visitor sees a page with the injected script?

The injected JavaScript executes in the visitor's browser under the context of your WordPress site. An attacker can steal the visitor's session cookie, perform actions as that user, modify page content in real-time, or redirect them to a malicious site. If an administrator views the page, the attacker can steal admin credentials and gain full control of the site.

Do I need to update if I don't use the [photo] shortcode?

Even if your content doesn't currently use the shortcode, you should patch because new posts might be created using it by contributors. Additionally, an attacker with access could inject the malicious shortcode retroactively. It's safer to update the plugin itself to close the vulnerability.

How do I know if my site has been compromised by this vulnerability?

Check recent posts and pages created by contributors for unusual [photo] shortcodes or unexpected HTML/JavaScript. Review your WordPress admin activity logs for posts created or modified by contributor accounts you don't recognize. Use a WordPress security scanner to identify injected code in your database and media files. If you find suspicious activity, consider engaging a security professional for a full incident assessment.

This analysis is provided for informational purposes and reflects publicly disclosed vulnerability information as of the publication date. Patch version numbers and specific remediation steps should be verified against the official plugin vendor advisory before implementation. SEC.co does not guarantee the completeness or timeliness of vulnerability intelligence and recommends engaging security professionals for site-specific risk assessment and incident response. The absence of a vulnerability from CISA's KEV catalog does not guarantee it is unexploited in the wild. Source: NVD (public-domain), retrieved 2026-08-10. Analysis generated by SEC.co (claude-haiku-4-5).