{"id":"CVE-2026-113488","kind":"vulnerability","aliases":["CVE-2026-113488"],"related":[],"title":"GeoDirectory WordPress plugin: post badge shortcode enables stored cross-site scripting","description":"The GeoDirectory  WordPress plugin before 2.8.196 does not properly escape a post badge shortcode attribute for a JavaScript context before placing it in an inline event handler, allowing users with the Contributor role and above to perform Stored Cross-Site Scripting attacks against anyone who clicks the badge, including administrators.","summary":"The GeoDirectory WordPress plugin before 2.8.196 fails to escape a post badge shortcode attribute placed inside an inline JavaScript event handler. A user with the Contributor role or above can store a script that runs in the browser of anyone who clicks the badge, including administrators.","severity":"medium","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["geodirectory","package","self-hosted","wordpress"],"not_affected_if":["no-contributor-accounts","plugin-not-installed"],"how_to_check":"- Check the installed GeoDirectory plugin version in the WordPress admin Plugins screen or with `wp plugin get geodirectory --field=version`\n- Confirm whether the post badge shortcode is used on the site, which the sources do not describe further","fix":"- Update the GeoDirectory plugin to `2.8.196` or later\n- Review posts by Contributor-level users for unexpected content in badge shortcode attributes","status":"open","published_at":"2026-10-28T06:16:35+00:00","first_seen_at":"2026-10-28T06:31:27+00:00","triaged_at":"2026-10-28T06:32:28+00:00","updated_at":"2026-10-28T06:32:28+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-28T06:32:28Z","model":"claude-haiku-5-5","output":{"fix":"- Update the GeoDirectory plugin to `2.8.196` or later\n- Review posts by Contributor-level users for unexpected content in badge shortcode attributes","reach":"internet","title":"GeoDirectory WordPress plugin: post badge shortcode enables stored cross-site scripting","impact":"medium","summary":"The GeoDirectory WordPress plugin before 2.8.196 fails to escape a post badge shortcode attribute placed inside an inline JavaScript event handler. A user with the Contributor role or above can store a script that runs in the browser of anyone who clicks the badge, including administrators.","category":"package","nicknames":[],"who_cares":["wordpress","geodirectory","self-hosted"],"confidence":0.7,"needs_auth":"yes","worst_case":"Stored script runs in admin browsers, enabling account takeover of administrators.","analyst_note":"","how_to_check":"- Check the installed GeoDirectory plugin version in the WordPress admin Plugins screen or with `wp plugin get geodirectory --field=version`\n- Confirm whether the post badge shortcode is used on the site, which the sources do not describe further","needs_analyst":false,"not_affected_if":["no-contributor-accounts","plugin-not-installed"],"who_is_affected":"Sites running the GeoDirectory plugin before 2.8.196 where contributors or higher can write content that uses the post badge shortcode. Sites with no contributor-level accounts, or that do not use GeoDirectory, can skip it.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000614,"input_tokens":3325,"output_tokens":562,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-113488':15A,18A '-2026':14A,17A '2.8.196':30B,76C 'administr':70B,121C 'allow':98C 'anyon':64B,115C 'attack':113C 'attribut':38B,85C 'badg':5A,36B,68B,83C,119C 'browser':62B 'click':66B,117C 'context':89C 'contributor':50B,102C 'cross':10A,110C 'cross-sit':9A,109C 'cve':13A,16A 'enabl':7A 'escap':33B,80C 'event':44B,96C 'fail':31B 'geodirectori':1A,19B,26B,72C 'handler':45B,97C 'host':23B 'includ':69B,120C 'inlin':42B,95C 'insid':40B 'javascript':43B,88C 'packag':20B 'perform':107C 'place':39B,91C 'plugin':3A,28B,74C 'post':4A,35B,82C 'proper':79C 'role':51B,103C 'run':59B 'script':12A,57B,112C 'self':22B 'self-host':21B 'shortcod':6A,37B,84C 'site':11A,111C 'store':8A,55B,108C 'user':47B,99C 'wordpress':2A,24B,27B,73C","nicknames":[],"mitigations":[],"who_affected":"Sites running the GeoDirectory plugin before 2.8.196 where contributors or higher can write content that uses the post badge shortcode. Sites with no contributor-level accounts, or that do not use GeoDirectory, can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T06:16:35+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-113488","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-113488","severity":null,"published_at":"2026-10-28T06:16:35+00:00","modified_at":"2026-10-28T06:16:35+00:00","first_seen_at":"2026-10-28T06:31:27+00:00","fetched_at":"2026-10-28T06:31:27+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}