{"id":"CVE-2026-104760","kind":"vulnerability","aliases":["CVE-2026-104760"],"related":[],"title":"weDocs WordPress plugin: stored XSS via block attribute, up to 2.6.1","description":"The weDocs: AI Powered Knowledge Base, Docs, Documentation, Wiki & AI Chatbot plugin for WordPress is vulnerable to Stored Cross-Site Scripting via 'modalPlaceholder' Block Attribute in all versions up to, and including, 2.6.1 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 Contributors can save posts in pending status, a malicious payload in the modalPlaceholder block attribute will execute in the browser of any admin or editor who previews or views the pending post.","summary":"The weDocs WordPress plugin does not sanitize the modalPlaceholder block attribute, so a contributor can save a script into a post. The script runs in the browser of any admin or editor who previews the pending post.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["other","self-hosted","wedocs","wordpress"],"not_affected_if":["no-contributor-accounts","plugin-above-2.6.1","plugin-not-installed"],"how_to_check":"- Check the installed version of the weDocs plugin in the WordPress admin under Plugins; `2.6.1` and earlier are listed as affected.\n- Check whether any contributor-level accounts exist that could save pending posts using the weDocs block.","fix":"- weDocs plugin: versions above `2.6.1` per the NVD entry; the exact fixed version is unknown.","status":"open","published_at":"2026-11-07T12:17:41+00:00","first_seen_at":"2026-11-07T12:47:08+00:00","triaged_at":"2026-11-07T12:49:06+00:00","updated_at":"2026-11-07T12:49:06+00:00","category":"other","confidence":0.7,"triage":{"at":"2026-11-07T12:49:06Z","model":"claude-haiku-5-5","output":{"fix":"- weDocs plugin: versions above `2.6.1` per the NVD entry; the exact fixed version is unknown.","reach":"internet","title":"weDocs WordPress plugin: stored XSS via block attribute, up to 2.6.1","impact":"medium","summary":"The weDocs WordPress plugin does not sanitize the modalPlaceholder block attribute, so a contributor can save a script into a post. The script runs in the browser of any admin or editor who previews the pending post.","audience":"businesses","category":"other","nicknames":[],"who_cares":["wordpress","weDocs","self-hosted"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"Script runs in an admin or editor's browser, enabling session takeover.","analyst_note":"Confirm the first fixed version from the NVD entry or plugin changelog; sources here do not name it.","how_to_check":"- Check the installed version of the weDocs plugin in the WordPress admin under Plugins; `2.6.1` and earlier are listed as affected.\n- Check whether any contributor-level accounts exist that could save pending posts using the weDocs block.","plain_action":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","no-contributor-accounts","plugin-above-2.6.1"],"who_is_affected":"Sites running the weDocs plugin version 2.6.1 or earlier where contributors can write posts. Exposure depends on the contributor role being able to save pending posts with the weDocs block, and on admins or editors previewing those posts. Sites without the plugin or without contributor accounts are not affected.","user_interaction":"yes","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000739,"input_tokens":4380,"output_tokens":601,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-104760':14A,17A '-2026':13A,16A '2.6.1':11A,94C 'access':114C,130C 'admin':53B,157C 'ai':63C,70C 'arbitrari':119C 'attack':109C 'attribut':8A,34B,86C,149C 'authent':108C 'base':66C 'block':7A,33B,85C,148C 'browser':50B,154C 'chatbot':71C 'contributor':37B,112C,135C 'contributor-level':111C 'cross':80C 'cross-sit':79C 'cve':12A,15A 'doc':67C 'document':68C 'due':95C 'editor':55B,159C 'escap':102C 'execut':126C,151C 'host':21B 'includ':93C 'inject':118C,132C 'input':98C 'insuffici':97C 'knowledg':65C 'level':113C 'make':104C 'malici':143C 'modalplacehold':32B,84C,147C 'output':101C 'page':123C,133C 'payload':144C 'pend':59B,140C,165C 'plugin':3A,27B,72C 'possibl':106C 'post':44B,60B,138C,166C 'power':64C 'preview':57B,161C 'run':47B 'sanit':30B,99C 'save':39B,137C 'script':41B,46B,82C,121C 'self':20B 'self-host':19B 'site':81C 'status':141C 'store':4A,78C 'user':129C 'version':89C 'via':6A,83C 'view':163C 'vulner':76C 'web':120C 'wedoc':1A,22B,25B,62C 'whenev':127C 'wiki':69C 'wordpress':2A,23B,26B,74C 'xss':5A","nicknames":[],"mitigations":[],"who_affected":"Sites running the weDocs plugin version 2.6.1 or earlier where contributors can write posts. Exposure depends on the contributor role being able to save pending posts with the weDocs block, and on admins or editors previewing those posts. Sites without the plugin or without contributor accounts are not affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","other","selfhosted","wedocs","wordpress"],"campaign_type":null,"search_a":"'-104760':14A,17A '-2026':13A,16A '2.6.1':11A 'attribut':8A 'block':7A 'cve':12A,15A 'plugin':3A 'store':4A 'via':6A 'wedoc':1A 'wordpress':2A 'xss':5A","search_b":"'admin':53B 'attribut':34B 'block':33B 'browser':50B 'contributor':37B 'editor':55B 'host':21B 'modalplacehold':32B 'pend':59B 'plugin':27B 'post':44B,60B 'preview':57B 'run':47B 'sanit':30B 'save':39B 'script':41B,46B 'self':20B 'self-host':19B 'wedoc':22B,25B 'wordpress':23B,26B","search_c":"'2.6.1':94C 'access':114C,130C 'admin':157C 'ai':63C,70C 'arbitrari':119C 'attack':109C 'attribut':86C,149C 'authent':108C 'base':66C 'block':85C,148C 'browser':154C 'chatbot':71C 'contributor':112C,135C 'contributor-level':111C 'cross':80C 'cross-sit':79C 'doc':67C 'document':68C 'due':95C 'editor':159C 'escap':102C 'execut':126C,151C 'includ':93C 'inject':118C,132C 'input':98C 'insuffici':97C 'knowledg':65C 'level':113C 'make':104C 'malici':143C 'modalplacehold':84C,147C 'output':101C 'page':123C,133C 'payload':144C 'pend':140C,165C 'plugin':72C 'possibl':106C 'post':138C,166C 'power':64C 'preview':161C 'sanit':99C 'save':137C 'script':82C,121C 'site':81C 'status':141C 'store':78C 'user':129C 'version':89C 'via':83C 'view':163C 'vulner':76C 'web':120C 'wedoc':62C 'whenev':127C 'wiki':69C 'wordpress':74C","first_public_at":"2026-11-07T12:17:41+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-104760","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-104760","severity":null,"published_at":"2026-11-07T12:17:41+00:00","modified_at":"2026-11-07T12:17:41+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"}