{"id":"CVE-2026-120687","kind":"vulnerability","aliases":["CVE-2026-120687"],"related":[],"title":"FooBox WordPress plugin: stored XSS via image alt attribute","description":"The Lightbox & Modal Popup WordPress Plugin – FooBox plugin for WordPress is vulnerable to Stored DOM-Based Cross-Site Scripting via the 'img alt attribute inside .wp-caption container' parameter in all versions up to, and including, 2.8.7 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. This is exploitable by Subscriber-level users when bbPress is installed, as its bbp_filter_kses filter chain permits img and pre tags while preserving numeric character references inside attribute values, allowing encoded payloads to bypass save-time sanitization and reach the vulnerable sink fully intact. Exploitation by attackers with subscriber-level access and above requires that bbPress 2.6.20 is installed, a public forum exists, and either the first topic has already been approved or subsequent topics clear moderation. On a default installation, where that is not configured, the vulnerability requires attackers with contributor-level access and above.","summary":"The FooBox Lightbox & Modal Popup WordPress plugin, up to and including 2.8.7, does not sanitize or escape an image alt attribute inside the .wp-caption container. An attacker can store a script that runs in the browser of any visitor who opens the injected page.","severity":"high","cvss":7.2,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"foobox-image-lightbox","fixed":["2.8.8"],"affected":"<= 2.8.7","ecosystem":"wordpress"}],"ecosystems":[],"tags":["bbpress","foobox","other","wordpress","wordpress-plugin","xss"],"not_affected_if":["newer-version","plugin-not-installed"],"how_to_check":"Run: wp plugin get foobox-image-lightbox --field=version (or see Plugins in wp-admin). Versions <= 2.8.7 are affected; 2.8.8+ is fixed. Sites that allow open registration, have Subscriber/Contributor users, or run a bbPress public forum are the most exposed.","fix":"Update FooBox (foobox-image-lightbox) to 2.8.8 or later; released 7 Nov 2026 per the vendor changelog (Patchstack lists 2.8.8 as the patched version).","status":"open","published_at":"2026-11-14T16:17:03+00:00","first_seen_at":"2026-11-14T16:30:58+00:00","triaged_at":"2026-11-14T16:31:34+00:00","updated_at":"2026-11-14T16:32:39+00:00","category":"other","confidence":0.8,"triage":{"at":"2026-11-14T16:31:34Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"FooBox WordPress plugin: stored XSS via image alt attribute","impact":"high","summary":"The FooBox Lightbox & Modal Popup WordPress plugin, up to and including 2.8.7, does not sanitize or escape an image alt attribute inside the .wp-caption container. An attacker can store a script that runs in the browser of any visitor who opens the injected page.","audience":"businesses","category":"other","nicknames":[],"who_cares":["wordpress","foobox","bbpress"],"confidence":0.6,"fix_status":"unknown","needs_auth":"unknown","worst_case":"Attacker script runs in visitors' browsers and can steal sessions.","analyst_note":"Sources conflict: the text says unauthenticated, then says Subscriber or Contributor access is required. Confirm the minimum privilege and find the fixed version in the NVD or plugin changelog.","how_to_check":"- Check the installed FooBox plugin version in the WordPress admin under Plugins, or with `wp plugin get foobox-image-lightbox --field=version`.\n- Check whether bbPress is installed and at which version (`2.6.20` is named in the description).\n- Review who holds Subscriber or Contributor accounts on the site.","plain_action":"","product_name":"FooBox Lightbox & Modal Popup (WordPress plugin)","needs_analyst":true,"not_affected_if":["plugin-not-installed","newer-version"],"who_is_affected":"Sites running the FooBox Lightbox & Modal Popup plugin at version 2.8.7 or earlier are exposed. The description says the flaw is reachable by unauthenticated users, but also that exploitation needs Subscriber or Contributor access, and that the bbPress forum path is needed for Subscriber. Sites without FooBox, or with a newer version, are not affected.","user_interaction":"yes","product_ecosystem":"vendor","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.001165,"input_tokens":4832,"output_tokens":1363,"severity_before":"high"},"analyst_status":"done","analyst_note":"Sources conflict: the text says unauthenticated, then says Subscriber or Contributor access is required. Confirm the minimum privilege and find the fixed version in the NVD or plugin changelog.","search":"'-120687':12A,15A '-2026':11A,14A '2.6.20':207C '2.8.7':39B,113C 'access':142C,201C,245C 'allow':178C 'alreadi':220C 'alt':8A,47B,98C 'approv':222C 'arbitrari':131C 'attack':56B,128C,196C,240C 'attribut':9A,48B,99C,176C 'base':90C 'bbp':160C 'bbpress':20B,155C,206C 'browser':65B 'bypass':182C 'caption':53B,103C 'chain':164C 'charact':173C 'clear':226C 'configur':236C 'contain':54B,104C 'contributor':243C 'contributor-level':242C 'cross':92C 'cross-sit':91C 'cve':10A,13A 'default':230C 'dom':89C 'dom-bas':88C 'due':114C 'either':215C 'encod':179C 'escap':44B,121C 'execut':138C 'exist':213C 'exploit':148C,194C 'filter':161C,163C 'first':217C 'foobox':1A,17A,21B,29B,80C 'foobox-image-lightbox':16A 'forum':212C 'fulli':192C 'imag':7A,46B 'image':18A 'img':97C,166C 'includ':38B,112C 'inject':72B,130C,144C 'input':117C 'insid':49B,100C,175C 'instal':157C,209C,231C 'insuffici':116C 'intact':193C 'kses':162C 'level':152C,200C,244C 'lightbox':19A,30B,75C 'make':123C 'modal':31B,76C 'moder':227C 'numer':172C 'open':70B 'output':120C 'page':73B,135C,145C 'paramet':105C 'payload':180C 'permit':165C 'plugin':3A,26B,34B,79C,81C 'popup':32B,77C 'possibl':125C 'pre':168C 'preserv':171C 'public':211C 'reach':188C 'refer':174C 'requir':204C,239C 'run':62B 'sanit':42B,118C,186C 'save':184C 'save-tim':183C 'script':60B,94C,133C 'sink':191C 'site':93C 'store':4A,58B,87C 'subscrib':151C,199C 'subscriber-level':150C,198C 'subsequ':224C 'tag':169C 'time':185C 'topic':218C,225C 'unauthent':127C 'user':141C,153C 'valu':177C 'version':108C 'via':6A,95C 'visitor':68B 'vulner':85C,190C,238C 'web':132C 'whenev':139C 'wordpress':2A,23B,25B,33B,78C,83C 'wordpress-plugin':24B 'wp':52B,102C 'wp-caption':51B,101C 'xss':5A,27B","nicknames":[],"mitigations":[],"who_affected":"Any WordPress site running the FooBox Lightbox & Modal Popup plugin (foobox-image-lightbox) at 2.8.7 or earlier. Wordfence's description says an attacker needs Contributor access on a default install, or Subscriber access when bbPress 2.6.20 is installed with a public forum. Its title and CVSS vector (PR:N) say unauthenticated, which the description does not support. Sites without FooBox, or on 2.8.8 or later, can skip it.","tier":"B","verified":{"fix":{"at":"2026-11-14T16:32:39Z","by":"analyst","doc":"https://patchstack.com/database/wordpress/plugin/foobox-image-lightbox/vulnerability/wordpress-lightbox-modal-popup-wordpress-plugin-foobox-plugin-2-8-7-unauthenticated-stored-dom-based-cross-site-scripting-vulnerability","run_id":3992}},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["fooboximagelightbox"],"ptokens":["foobox","image","lightbox"],"labels":["bbpress","foobox","high","other","wordpress","wordpressplugin","xss"],"campaign_type":null,"search_a":"'-120687':12A,15A '-2026':11A,14A 'alt':8A 'attribut':9A 'cve':10A,13A 'foobox':1A,17A 'foobox-image-lightbox':16A 'imag':7A 'image':18A 'lightbox':19A 'plugin':3A 'store':4A 'via':6A 'wordpress':2A 'xss':5A","search_b":"'2.8.7':39B 'alt':47B 'attack':56B 'attribut':48B 'bbpress':20B 'browser':65B 'caption':53B 'contain':54B 'escap':44B 'foobox':21B,29B 'imag':46B 'includ':38B 'inject':72B 'insid':49B 'lightbox':30B 'modal':31B 'open':70B 'page':73B 'plugin':26B,34B 'popup':32B 'run':62B 'sanit':42B 'script':60B 'store':58B 'visitor':68B 'wordpress':23B,25B,33B 'wordpress-plugin':24B 'wp':52B 'wp-caption':51B 'xss':27B","search_c":"'2.6.20':207C '2.8.7':113C 'access':142C,201C,245C 'allow':178C 'alreadi':220C 'alt':98C 'approv':222C 'arbitrari':131C 'attack':128C,196C,240C 'attribut':99C,176C 'base':90C 'bbp':160C 'bbpress':155C,206C 'bypass':182C 'caption':103C 'chain':164C 'charact':173C 'clear':226C 'configur':236C 'contain':104C 'contributor':243C 'contributor-level':242C 'cross':92C 'cross-sit':91C 'default':230C 'dom':89C 'dom-bas':88C 'due':114C 'either':215C 'encod':179C 'escap':121C 'execut':138C 'exist':213C 'exploit':148C,194C 'filter':161C,163C 'first':217C 'foobox':80C 'forum':212C 'fulli':192C 'img':97C,166C 'includ':112C 'inject':130C,144C 'input':117C 'insid':100C,175C 'instal':157C,209C,231C 'insuffici':116C 'intact':193C 'kses':162C 'level':152C,200C,244C 'lightbox':75C 'make':123C 'modal':76C 'moder':227C 'numer':172C 'output':120C 'page':135C,145C 'paramet':105C 'payload':180C 'permit':165C 'plugin':79C,81C 'popup':77C 'possibl':125C 'pre':168C 'preserv':171C 'public':211C 'reach':188C 'refer':174C 'requir':204C,239C 'sanit':118C,186C 'save':184C 'save-tim':183C 'script':94C,133C 'sink':191C 'site':93C 'store':87C 'subscrib':151C,199C 'subscriber-level':150C,198C 'subsequ':224C 'tag':169C 'time':185C 'topic':218C,225C 'unauthent':127C 'user':141C,153C 'valu':177C 'version':108C 'via':95C 'vulner':85C,190C,238C 'web':132C 'whenev':139C 'wordpress':78C,83C 'wp':102C 'wp-caption':101C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-14T16:17:03+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-120687","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-120687","severity":null,"published_at":"2026-11-14T16:17:03+00:00","modified_at":"2026-11-14T16:17:04+00:00","first_seen_at":"2026-11-14T16:30:58+00:00","fetched_at":"2026-11-14T16:30:58+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-120687:3992","url":"https://fooplugins.com/changelog/foobox/","severity":null,"published_at":"2026-11-14T16:32:39+00:00","modified_at":"2026-11-14T16:32:39+00:00","first_seen_at":"2026-11-14T16:32:39+00:00","fetched_at":"2026-11-14T16:32:39+00:00","note":"Fixed in 2.8.8 (vendor changelog 7 Nov 2026; Patchstack agrees). Privilege conflict: Wordfence title and CVSS say unauthenticated (PR:N), but its description needs Contributor+, or Subscriber with bbPress. WPSec lists Contributor+ for the same fix. No exploitation or PoC found. No check written: it needs a version read, which matching already does.","cites":["https://fooplugins.com/changelog/foobox/","https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/foobox-image-lightbox/lightbox-modal-popup-wordpress-plugin-287-unauthenticated-stored-dom-based-cross-site-scripting-via-image-alt-attribute-in-wp-caption-containers","https://patchstack.com/database/wordpress/plugin/foobox-image-lightbox/vulnerability/wordpress-lightbox-modal-popup-wordpress-plugin-foobox-plugin-2-8-7-unauthenticated-stored-dom-based-cross-site-scripting-vulnerability","https://wpsec.com/vuln/WPSEC-2026-2742/"]}],"documents":[{"id":156903,"url":"https://fooplugins.com/changelog/foobox/","title":"FooBox Changelog - FooPlugins","kind":"vendor","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"fix","confidence":null,"note":null},{"id":156904,"url":"https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/foobox-image-lightbox/lightbox-modal-popup-wordpress-plugin-287-unauthenticated-stored-dom-based-cross-site-scripting-via-image-alt-attribute-in-wp-caption-containers","title":"Wordfence: FooBox <= 2.8.7 stored DOM XSS","kind":"advisory","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null},{"id":156905,"url":"https://patchstack.com/database/wordpress/plugin/foobox-image-lightbox/vulnerability/wordpress-lightbox-modal-popup-wordpress-plugin-foobox-plugin-2-8-7-unauthenticated-stored-dom-based-cross-site-scripting-vulnerability","title":"Patchstack: FooBox <= 2.8.7 XSS, patched 2.8.8","kind":"advisory","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null},{"id":156906,"url":"https://wpsec.com/vuln/WPSEC-2026-2742/","title":"WPSec: FooBox <= 2.8.7 Contributor+ stored DOM XSS","kind":"other","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"mentions","confidence":null,"note":null}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}