{"id":"CVE-2026-109232","kind":"vulnerability","aliases":["CVE-2026-109232"],"related":[],"title":"WordPress Salon Booking plugin: unauthenticated stored XSS through checkout fields","description":"The Salon Booking System – Appointment Booking for Salons, Barbershops & Spas plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'sln[<checkout-field-key>]' parameter in all versions up to, and including, 10.31.9 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. Exploitation requires that the site administrator has configured at least one custom checkout field of type Html or File, which is a standard documented plugin feature.","summary":"The Salon Booking System WordPress plugin up to and including 10.31.9 fails to sanitize the 'sln[<checkout-field-key>]' parameter. An unauthenticated attacker can store scripts that run in the browser of any user who opens an affected page.","severity":"high","cvss":7.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","salon-booking-system","self-hosted","wordpress","wordpress-plugin"],"not_affected_if":["default-config","plugin-updated"],"how_to_check":"- Check the installed plugin version in the WordPress admin Plugins screen or with `wp plugin get salon-booking-system --field=version`\n- Look for a custom checkout field of type Html or File in the plugin's settings","fix":"- Update the Salon Booking System plugin to a version later than `10.31.9`\n- Until updated, remove custom checkout fields of type Html or File if they are not needed","status":"open","published_at":"2026-10-16T06:17:06+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","triaged_at":"2026-10-25T03:29:48+00:00","updated_at":"2026-10-25T03:29:48+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T03:29:48Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Salon Booking System plugin to a version later than `10.31.9`\n- Until updated, remove custom checkout fields of type Html or File if they are not needed","reach":"internet","title":"WordPress Salon Booking plugin: unauthenticated stored XSS through checkout fields","impact":"medium","summary":"The Salon Booking System WordPress plugin up to and including 10.31.9 fails to sanitize the 'sln[<checkout-field-key>]' parameter. An unauthenticated attacker can store scripts that run in the browser of any user who opens an affected page.","category":"package","nicknames":[],"who_cares":["wordpress","wordpress-plugin","salon-booking-system","self-hosted"],"confidence":0.8,"needs_auth":"no","worst_case":"Attacker scripts run in visitors' and admins' browsers on the site","analyst_note":"","how_to_check":"- Check the installed plugin version in the WordPress admin Plugins screen or with `wp plugin get salon-booking-system --field=version`\n- Look for a custom checkout field of type Html or File in the plugin's settings","needs_analyst":false,"not_affected_if":["default-config","plugin-updated"],"who_is_affected":"Sites running the Salon Booking System plugin at version 10.31.9 or earlier that have configured at least one custom checkout field of type Html or File. Sites without the plugin, or without those field types configured, are not exposed through this path.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000612,"input_tokens":3431,"output_tokens":537,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-109232':13A,16A '-2026':12A,15A '10.31.9':39B,97C 'access':126C 'administr':135C 'affect':63B 'appoint':69C 'arbitrari':115C 'attack':48B,112C 'barbershop':73C 'book':3A,20B,31B,67C,70C 'browser':56B 'checkout':9A,142C 'configur':137C 'cross':83C 'cross-sit':82C 'custom':141C 'cve':11A,14A 'document':153C 'due':98C 'escap':105C 'execut':122C 'exploit':130C 'fail':40B 'featur':155C 'field':10A,143C 'file':148C 'host':24B 'html':146C 'includ':38B,96C 'inject':114C,128C 'input':101C 'insuffici':100C 'least':139C 'make':107C 'one':140C 'open':61B 'output':104C 'packag':17B 'page':64B,119C,129C 'paramet':45B,89C 'plugin':4A,28B,34B,75C,154C 'possibl':109C 'requir':131C 'run':53B 'salon':2A,19B,30B,66C,72C 'salon-booking-system':18B 'sanit':42B,102C 'script':51B,85C,117C 'self':23B 'self-host':22B 'site':84C,134C 'sln':44B,88C 'spas':74C 'standard':152C 'store':6A,50B,81C 'system':21B,32B,68C 'type':145C 'unauthent':5A,47B,111C 'user':59B,125C 'version':92C 'via':86C 'vulner':79C 'web':116C 'whenev':123C 'wordpress':1A,25B,27B,33B,77C 'wordpress-plugin':26B 'xss':7A","nicknames":[],"mitigations":[],"who_affected":"Sites running the Salon Booking System plugin at version 10.31.9 or earlier that have configured at least one custom checkout field of type Html or File. Sites without the plugin, or without those field types configured, are not exposed through this path.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T06:17:06+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-109232","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-109232","severity":null,"published_at":"2026-10-16T06:17:06+00:00","modified_at":"2026-10-16T15:17:07+00:00","first_seen_at":"2026-10-23T21:57:12+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"}