{"id":"CVE-2026-125948","kind":"vulnerability","aliases":["CVE-2026-125948"],"related":[],"title":"WordPress Recipe Card Blocks Lite: stored script injection through recipe steps","description":"The Recipe Card Blocks Lite plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'steps[].text' parameter in all versions up to, and including, 3.7.0 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. Because wp_kses_post() preserves block-delimiter HTML comments verbatim on save, a Contributor can embed event-handler payloads inside the block's steps[].text attribute in a draft or pending post without the unfiltered_html capability, and the payload executes for any visitor — including privileged editors and administrators who preview or publish the post — as well as through the public print endpoint.","summary":"The Recipe Card Blocks Lite WordPress plugin (up to and including 3.7.0) does not sanitize the steps text field of its recipe block. A logged-in Contributor can save a script in that field, and it runs in the browser of any visitor, including editors and administrators who preview or publish the post.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","recipe-card-blocks-lite","self-hosted","wordpress"],"not_affected_if":["plugin-not-installed","trusted-authors-only"],"how_to_check":"- Check the installed plugin version in the WordPress admin under Plugins, or with `wp plugin get recipe-card-blocks-lite --field=version`\n- Look for Recipe Card Blocks Lite at version `3.7.0` or earlier","fix":null,"status":"open","published_at":"2026-11-13T10:17:28+00:00","first_seen_at":"2026-11-13T10:47:11+00:00","triaged_at":"2026-11-13T10:55:05+00:00","updated_at":"2026-11-13T10:55:05+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-13T10:55:05Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"WordPress Recipe Card Blocks Lite: stored script injection through recipe steps","impact":"medium","summary":"The Recipe Card Blocks Lite WordPress plugin (up to and including 3.7.0) does not sanitize the steps text field of its recipe block. A logged-in Contributor can save a script in that field, and it runs in the browser of any visitor, including editors and administrators who preview or publish the post.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","recipe-card-blocks-lite","self-hosted"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"script runs in admin browsers, can hijack admin sessions","analyst_note":"Confirm the fixed version of Recipe Card Blocks Lite from the WordPress plugin page or the NVD entry for CVE-2026-125948.","how_to_check":"- Check the installed plugin version in the WordPress admin under Plugins, or with `wp plugin get recipe-card-blocks-lite --field=version`\n- Look for Recipe Card Blocks Lite at version `3.7.0` or earlier","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","trusted-authors-only"],"who_is_affected":"Sites running the Recipe Card Blocks Lite plugin at version 3.7.0 or earlier, where users with Contributor access or higher can write posts. Sites without the plugin, or where only trusted editors write content, are less exposed. The sources do not state a fixed version.","user_interaction":"yes","product_ecosystem":"","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000772,"input_tokens":4737,"output_tokens":596,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-125948':14A,17A '-2026':13A,16A '3.7.0':39B,110C 'access':130C,146C 'administr':75B,200C 'arbitrari':135C 'attack':125C 'attribut':177C 'authent':124C 'block':4A,22B,31B,50B,85C,156C,173C 'block-delimit':155C 'browser':68B 'capabl':188C 'card':3A,21B,30B,84C 'comment':159C 'contributor':55B,128C,164C 'contributor-level':127C 'cross':95C 'cross-sit':94C 'cve':12A,15A 'delimit':157C 'draft':180C 'due':111C 'editor':73B,198C 'emb':166C 'endpoint':214C 'escap':118C 'event':168C 'event-handl':167C 'execut':142C,192C 'field':46B,62B 'handler':169C 'host':26B 'html':158C,187C 'includ':38B,72B,109C,196C 'inject':8A,134C,148C 'input':114C 'insid':171C 'insuffici':113C 'kses':152C 'level':129C 'lite':5A,23B,32B,86C 'log':53B 'logged-in':52B 'make':120C 'output':117C 'packag':18B 'page':139C,149C 'paramet':102C 'payload':170C,191C 'pend':182C 'plugin':34B,87C 'possibl':122C 'post':81B,153C,183C,206C 'preserv':154C 'preview':77B,202C 'print':213C 'privileg':197C 'public':212C 'publish':79B,204C 'recip':2A,10A,20B,29B,49B,83C 'recipe-card-blocks-lit':19B 'run':65B 'sanit':42B,115C 'save':57B,162C 'script':7A,59B,97C,137C 'self':25B 'self-host':24B 'site':96C 'step':11A,44B,100C,175C 'store':6A,93C 'text':45B,101C,176C 'unfilt':186C 'user':145C 'verbatim':160C 'version':105C 'via':98C 'visitor':71B,195C 'vulner':91C 'web':136C 'well':208C 'whenev':143C 'without':184C 'wordpress':1A,27B,33B,89C 'wp':151C","nicknames":[],"mitigations":[],"who_affected":"Sites running the Recipe Card Blocks Lite plugin at version 3.7.0 or earlier, where users with Contributor access or higher can write posts. Sites without the plugin, or where only trusted editors write content, are less exposed. The sources do not state a fixed version.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","package","recipecardblockslite","selfhosted","wordpress"],"campaign_type":null,"search_a":"'-125948':14A,17A '-2026':13A,16A 'block':4A 'card':3A 'cve':12A,15A 'inject':8A 'lite':5A 'recip':2A,10A 'script':7A 'step':11A 'store':6A 'wordpress':1A","search_b":"'3.7.0':39B 'administr':75B 'block':22B,31B,50B 'browser':68B 'card':21B,30B 'contributor':55B 'editor':73B 'field':46B,62B 'host':26B 'includ':38B,72B 'lite':23B,32B 'log':53B 'logged-in':52B 'packag':18B 'plugin':34B 'post':81B 'preview':77B 'publish':79B 'recip':20B,29B,49B 'recipe-card-blocks-lit':19B 'run':65B 'sanit':42B 'save':57B 'script':59B 'self':25B 'self-host':24B 'step':44B 'text':45B 'visitor':71B 'wordpress':27B,33B","search_c":"'3.7.0':110C 'access':130C,146C 'administr':200C 'arbitrari':135C 'attack':125C 'attribut':177C 'authent':124C 'block':85C,156C,173C 'block-delimit':155C 'capabl':188C 'card':84C 'comment':159C 'contributor':128C,164C 'contributor-level':127C 'cross':95C 'cross-sit':94C 'delimit':157C 'draft':180C 'due':111C 'editor':198C 'emb':166C 'endpoint':214C 'escap':118C 'event':168C 'event-handl':167C 'execut':142C,192C 'handler':169C 'html':158C,187C 'includ':109C,196C 'inject':134C,148C 'input':114C 'insid':171C 'insuffici':113C 'kses':152C 'level':129C 'lite':86C 'make':120C 'output':117C 'page':139C,149C 'paramet':102C 'payload':170C,191C 'pend':182C 'plugin':87C 'possibl':122C 'post':153C,183C,206C 'preserv':154C 'preview':202C 'print':213C 'privileg':197C 'public':212C 'publish':204C 'recip':83C 'sanit':115C 'save':162C 'script':97C,137C 'site':96C 'step':100C,175C 'store':93C 'text':101C,176C 'unfilt':186C 'user':145C 'verbatim':160C 'version':105C 'via':98C 'visitor':195C 'vulner':91C 'web':136C 'well':208C 'whenev':143C 'without':184C 'wordpress':89C 'wp':151C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-13T10:17:28+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-125948","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-125948","severity":null,"published_at":"2026-11-13T10:17:28+00:00","modified_at":"2026-11-13T10:17:28+00:00","first_seen_at":"2026-11-13T10:47:11+00:00","fetched_at":"2026-11-13T10:47:11+00:00","note":null}],"documents":[],"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"}