| Plugin Name | FooBox Image Lightbox |
|---|---|
| Type of Vulnerability | Cross-Site Scripting (XSS) |
| CVE Number | CVE-2025-5537 |
| Urgency | Low |
| CVE Publish Date | 2026-01-30 |
| Source URL | CVE-2025-5537 |
FooBox Image Lightbox (≤ 2.7.34) — Authenticated Author Stored XSS: What WordPress Site Owners Must Do Now
As a Hong Kong security expert focused on practical, on-the-ground defence, I track plugin risks that can become footholds for larger site compromise. A recently disclosed vulnerability in FooBox Image Lightbox (versions ≤ 2.7.34)—an authenticated Author-level stored Cross‑Site Scripting (XSS)—requires WordPress site owners and administrators to take immediate, sensible steps.
This article explains:
- what the vulnerability is and how it works,
- who is at risk and what real-world impact looks like,
- how to confirm whether your site is vulnerable or has been exploited,
- short-term mitigations you can apply right now,
- long-term fixes and hardening best practices, and
- a prioritised remediation playbook you can follow.
Executive summary
- Vulnerability: Authenticated (Author+) stored Cross‑Site Scripting (XSS) in FooBox Image Lightbox plugin, affecting versions ≤ 2.7.34.
- CVE: CVE‑2025‑5537.
- Impact: An Author or higher user can store a malicious payload that later executes in other users’ browsers when the lightbox displays the injected content. CVSS base score 5.9 (medium).
- Required privilege: Author (or higher). Some exploitation flows require user interaction (e.g., clicking a crafted link or opening a page with the stored payload).
- Fixed in: 2.7.35 — update when possible.
- Short-term options if you cannot update immediately: disable the plugin, restrict author capabilities, sanitise stored content, or apply virtual patching via a WAF or application-level filter.
What is stored XSS and why this one matters
Stored XSS occurs when an attacker injects a payload into data stored on the server (post content, image caption, plugin settings) and that data is later served without proper output escaping. When other visitors view the page, the injected JavaScript runs with the privileges of the victim’s browser session—potentially exposing cookies, session tokens, or allowing actions on behalf of an authenticated user.
In this FooBox case:
- An authenticated user with Author privileges can add or edit content that the plugin stores (image captions, alt text, or plugin fields).
- The plugin renders that stored data into a modal/lightbox without properly escaping or whitelisting safe HTML/attributes.
- When the modal opens for another user (including administrators or editors), the stored script can execute.
Why this is troublesome:
- Author accounts are common on multi-author sites and some sites grant elevated content permissions beyond basic subscribers.
- Stored XSS can be used to escalate: steal admin cookies, create backdoors, add admin users, or plant persistent malicious content.
- Even with a medium CVSS score, weak account hygiene and credential reuse increase the real-world risk.
Exploit overview — plausible attack chain
- Attacker obtains or uses an Author-level account on the WordPress site (common on multi-author blogs, community sites, or via compromised contributor accounts).
- Attacker submits a malicious payload in a field that FooBox stores (image caption, attachment metadata, plugin-specific fields).
- Example payloads: ,
,
- Example payloads: ,
- The payload is stored in the database without proper sanitisation.
- Later, a user (author, editor, admin, subscriber, or visitor depending on display) opens the FooBox lightbox/modal and the payload executes in their browser.
- Consequences include token theft, session misuse, or further payload delivery.
Note: some scenarios require social engineering (tricking an admin to open a specific post); others only require a target to visit a page containing the vulnerable lightbox.
Confirm whether your site is vulnerable
- Identify if FooBox Image Lightbox is installed:
- WP Admin → Plugins → Installed Plugins
- WP‑CLI:
wp plugin list | grep foobox
- Check plugin version:
- Vulnerable versions are ≤ 2.7.34. Fixed version is 2.7.35.
- WP‑CLI:
wp plugin get foobox-image-lightbox --field=version
- Search the database for suspicious content (script tags, event handlers, javascript: URIs). Always backup your database before running queries or replacements.
- Find script tags in posts:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '% - Look for suspicious meta values:
SELECT meta_id, post_id, meta_key, meta_value FROM wp_postmeta WHERE meta_value LIKE '% - Search attachment captions/descriptions:
SELECT ID, post_title FROM wp_posts WHERE post_type = 'attachment' AND (post_excerpt LIKE '%
- Find script tags in posts:
- Check web server access logs for suspicious requests that include /is',
'/(<[^>]+)on\w+\s*=([^>]+)/is'
);
return preg_replace($bad_patterns, '', $content);
}
Note: this is a blunt, temporary measure. Test thoroughly and remove once the plugin is patched and content is cleaned.
How to sanitise and remove existing malicious content
- Backup your database before any changes.
- Identify suspicious rows (see the SQL queries earlier).
- Remove or sanitise suspect values — prefer sanitisation that retains legitimate content but strips event handler attributes and script tags.
Simple WP‑CLI replacement examples (use
--dry-runfirst):wp search-replace '