{"id":"CVE-2026-109208","kind":"vulnerability","aliases":["CVE-2026-109208"],"related":[],"title":"LearnPress WordPress LMS plugin: stored XSS via checkout and REST fields","description":"The LearnPress – WordPress LMS Plugin for Create and Sell Online Courses plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'quantity (REST) / order_comments (checkout)' parameter in all versions up to, and including, 4.4.10 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. With guest checkout enabled the attack is fully unauthenticated; with guest checkout disabled, any Subscriber-level user can exploit both vectors through their own checkout.","summary":"The LearnPress WordPress LMS plugin up to and including 4.4.10 does not sanitize the quantity (REST) and order_comments (checkout) parameters before storing and displaying them. An attacker can plant a script that runs in the browser of any user who opens the affected page, including administrators.","severity":"high","cvss":7.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ecommerce","learnpress","package","self-hosted","wordpress"],"not_affected_if":["fixed-version","learnpress-not-installed"],"how_to_check":"- Check the installed LearnPress plugin version in the WordPress admin under Plugins, or with `wp plugin get learnpress --field=version`\n- Flag installs at version `4.4.10` or lower","fix":"- Update the LearnPress plugin to a version later than `4.4.10` (exact fixed version: unknown in the sources)\n- If guest checkout is enabled, consider disabling it until the update is applied","status":"open","published_at":"2026-10-17T03:16:28+00:00","first_seen_at":"2026-10-23T21:57:14+00:00","triaged_at":"2026-10-25T03:29:30+00:00","updated_at":"2026-10-25T03:29:30+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:29:30Z","model":"claude-haiku-5-5","output":{"fix":"- Update the LearnPress plugin to a version later than `4.4.10` (exact fixed version: unknown in the sources)\n- If guest checkout is enabled, consider disabling it until the update is applied","reach":"internet","title":"LearnPress WordPress LMS plugin: stored XSS via checkout and REST fields","impact":"medium","summary":"The LearnPress WordPress LMS plugin up to and including 4.4.10 does not sanitize the quantity (REST) and order_comments (checkout) parameters before storing and displaying them. An attacker can plant a script that runs in the browser of any user who opens the affected page, including administrators.","category":"package","nicknames":[],"who_cares":["wordpress","learnpress","self-hosted","ecommerce"],"confidence":0.7,"needs_auth":"unknown","worst_case":"Attacker script runs in visitors' and admins' browsers on the site","analyst_note":"Confirm the fixed LearnPress version and the patch release notes; the NVD entry in the sources does not name a fixed version.","how_to_check":"- Check the installed LearnPress plugin version in the WordPress admin under Plugins, or with `wp plugin get learnpress --field=version`\n- Flag installs at version `4.4.10` or lower","needs_analyst":true,"not_affected_if":["learnpress-not-installed","fixed-version"],"who_is_affected":"WordPress sites running the LearnPress plugin at version 4.4.10 or lower that accept checkout orders or expose the REST quantity field. With guest checkout enabled, anyone on the internet can inject the script; with it disabled, any Subscriber-level account can. Sites without LearnPress, or on a fixed version, can skip it.","user_interaction":"yes","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000658,"input_tokens":3446,"output_tokens":627,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-109208':14A,17A '-2026':13A,16A '4.4.10':34B,109C 'access':138C 'administr':71B 'affect':68B 'arbitrari':127C 'attack':52B,124C,147C 'browser':61B 'checkout':8A,44B,100C,144C,153C,167C 'comment':43B,99C 'cours':82C 'creat':78C 'cross':91C 'cross-sit':90C 'cve':12A,15A 'disabl':154C 'display':49B 'due':110C 'ecommerc':18B 'enabl':145C 'escap':117C 'execut':134C 'exploit':161C 'field':11A 'fulli':149C 'guest':143C,152C 'host':23B 'includ':33B,70B,108C 'inject':126C,140C 'input':113C 'insuffici':112C 'learnpress':1A,19B,26B,73C 'level':158C 'lms':3A,28B,75C 'make':119C 'onlin':81C 'open':66B 'order':42B,98C 'output':116C 'packag':20B 'page':69B,131C,141C 'paramet':45B,101C 'plant':54B 'plugin':4A,29B,76C,83C 'possibl':121C 'quantiti':39B,96C 'rest':10A,40B,97C 'run':58B 'sanit':37B,114C 'script':56B,93C,129C 'self':22B 'self-host':21B 'sell':80C 'site':92C 'store':5A,47B,89C 'subscrib':157C 'subscriber-level':156C 'unauthent':123C,150C 'user':64B,137C,159C 'vector':163C 'version':104C 'via':7A,94C 'vulner':87C 'web':128C 'whenev':135C 'wordpress':2A,24B,27B,74C,85C 'xss':6A","nicknames":[],"mitigations":[],"who_affected":"WordPress sites running the LearnPress plugin at version 4.4.10 or lower that accept checkout orders or expose the REST quantity field. With guest checkout enabled, anyone on the internet can inject the script; with it disabled, any Subscriber-level account can. Sites without LearnPress, or on a fixed version, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-17T03:16:28+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-109208","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-109208","severity":null,"published_at":"2026-10-17T03:16:28+00:00","modified_at":"2026-10-19T15:16:45+00:00","first_seen_at":"2026-10-23T21:57:14+00:00","fetched_at":"2026-10-23T22:28:55+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"}