{"id":"CVE-2026-118050","kind":"vulnerability","aliases":["CVE-2026-118050"],"related":[],"title":"Football Pool WordPress plugin: stored XSS via shouttext parameter","description":"The Football Pool plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'shouttext' parameter in all versions up to, and including, 2.13.5 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The injected script only fires in the admin Edit view for a shout; the public Shoutbox widget and the admin list view both encode output via Football_Pool_Utils::xssafe(), making the admin Edit view the sole unescaped sink.","summary":"The Football Pool plugin for WordPress does not sanitize the 'shouttext' field, so a logged-in subscriber can store a script in a shout. The script runs in the browser of anyone who opens that shout in the admin Edit view.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["football-pool","package","self-hosted","wordpress"],"not_affected_if":["newer-than-2.13.5","no-subscriber-accounts","plugin-not-installed"],"how_to_check":"- Check the installed Football Pool plugin version in the WordPress admin Plugins screen; versions up to and including `2.13.5` are listed as affected.\n- Confirm whether subscriber-level accounts can register or log in on the site.","fix":null,"status":"open","published_at":"2026-11-07T12:17:43+00:00","first_seen_at":"2026-11-07T12:47:08+00:00","triaged_at":"2026-11-07T12:49:05+00:00","updated_at":"2026-11-07T12:49:05+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-07T12:49:05Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"Football Pool WordPress plugin: stored XSS via shouttext parameter","impact":"medium","summary":"The Football Pool plugin for WordPress does not sanitize the 'shouttext' field, so a logged-in subscriber can store a script in a shout. The script runs in the browser of anyone who opens that shout in the admin Edit view.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","football-pool","self-hosted"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"script runs in an admin's browser, enabling session or account takeover","analyst_note":"Confirm the fixed version of the Football Pool plugin from the WordPress plugin repository or NVD entry; the sources give only the affected range.","how_to_check":"- Check the installed Football Pool plugin version in the WordPress admin Plugins screen; versions up to and including `2.13.5` are listed as affected.\n- Confirm whether subscriber-level accounts can register or log in on the site.","plain_action":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","no-subscriber-accounts","newer-than-2.13.5"],"who_is_affected":"Sites running the Football Pool plugin up to and including 2.13.5 that accept subscriber-level accounts. The script only runs when an administrator opens the shout in the Edit view, so the risk is highest where admins work in the WordPress dashboard. Sites without the plugin, or with the plugin on a version above 2.13.5, are not affected per the source.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000733,"input_tokens":4350,"output_tokens":596,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-118050':12A,15A '-2026':11A,14A '2.13.5':91C 'access':111C,127C 'admin':63B,138C,150C,163C 'anyon':56B 'arbitrari':116C 'attack':106C 'authent':105C 'browser':54B 'cross':77C 'cross-sit':76C 'cve':10A,13A 'due':92C 'edit':64B,139C,164C 'encod':154C 'escap':99C 'execut':123C 'field':35B 'fire':135C 'footbal':1A,17B,25B,67C,157C 'football-pool':16B 'host':22B 'includ':90C 'inject':115C,129C,132C 'input':95C 'insuffici':94C 'level':110C 'list':151C 'log':39B 'logged-in':38B 'make':101C,161C 'open':58B 'output':98C,155C 'packag':19B 'page':120C,130C 'paramet':9A,83C 'plugin':4A,27B,69C 'pool':2A,18B,26B,68C,158C 'possibl':103C 'public':145C 'run':51B 'sanit':32B,96C 'script':45B,50B,79C,118C,133C 'self':21B 'self-host':20B 'shout':48B,60B,143C 'shoutbox':146C 'shouttext':8A,34B,82C 'sink':169C 'site':78C 'sole':167C 'store':5A,43B,75C 'subscrib':41B,109C 'subscriber-level':108C 'unescap':168C 'user':126C 'util':159C 'version':86C 'via':7A,80C,156C 'view':65B,140C,152C,165C 'vulner':73C 'web':117C 'whenev':124C 'widget':147C 'wordpress':3A,23B,29B,71C 'xss':6A 'xssafe':160C","nicknames":[],"mitigations":[],"who_affected":"Sites running the Football Pool plugin up to and including 2.13.5 that accept subscriber-level accounts. The script only runs when an administrator opens the shout in the Edit view, so the risk is highest where admins work in the WordPress dashboard. Sites without the plugin, or with the plugin on a version above 2.13.5, are not affected per the source.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["footballpool","medium","package","selfhosted","wordpress"],"campaign_type":null,"search_a":"'-118050':12A,15A '-2026':11A,14A 'cve':10A,13A 'footbal':1A 'paramet':9A 'plugin':4A 'pool':2A 'shouttext':8A 'store':5A 'via':7A 'wordpress':3A 'xss':6A","search_b":"'admin':63B 'anyon':56B 'browser':54B 'edit':64B 'field':35B 'footbal':17B,25B 'football-pool':16B 'host':22B 'log':39B 'logged-in':38B 'open':58B 'packag':19B 'plugin':27B 'pool':18B,26B 'run':51B 'sanit':32B 'script':45B,50B 'self':21B 'self-host':20B 'shout':48B,60B 'shouttext':34B 'store':43B 'subscrib':41B 'view':65B 'wordpress':23B,29B","search_c":"'2.13.5':91C 'access':111C,127C 'admin':138C,150C,163C 'arbitrari':116C 'attack':106C 'authent':105C 'cross':77C 'cross-sit':76C 'due':92C 'edit':139C,164C 'encod':154C 'escap':99C 'execut':123C 'fire':135C 'footbal':67C,157C 'includ':90C 'inject':115C,129C,132C 'input':95C 'insuffici':94C 'level':110C 'list':151C 'make':101C,161C 'output':98C,155C 'page':120C,130C 'paramet':83C 'plugin':69C 'pool':68C,158C 'possibl':103C 'public':145C 'sanit':96C 'script':79C,118C,133C 'shout':143C 'shoutbox':146C 'shouttext':82C 'sink':169C 'site':78C 'sole':167C 'store':75C 'subscrib':109C 'subscriber-level':108C 'unescap':168C 'user':126C 'util':159C 'version':86C 'via':80C,156C 'view':140C,152C,165C 'vulner':73C 'web':117C 'whenev':124C 'widget':147C 'wordpress':71C 'xssafe':160C","first_public_at":"2026-11-07T12:17:43+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/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-118050","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-118050","severity":null,"published_at":"2026-11-07T12:17:43+00:00","modified_at":"2026-11-07T12:17:43+00:00","first_seen_at":"2026-11-07T12:47:08+00:00","fetched_at":"2026-11-07T12:47:08+00:00","note":null}],"documents":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}