{"id":"CVE-2026-90821","kind":"vulnerability","aliases":["CVE-2026-90821"],"related":[],"title":"Crafty Controller: Webhook URL field lets authenticated users inject stored XSS","description":"An input neutralization vulnerability in the Webhook URL form field component of Crafty Controller allows a remote, authenticated attacker to perform stored XSS via malicious form input","summary":"The Webhook URL form field in Crafty Controller does not neutralize user input, so a logged-in attacker can store malicious script in it. Other users who view the stored value can have that script run in their browser.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["crafty-controller","package","self-hosted"],"not_affected_if":["auth-required"],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-10-16T14:19:10+00:00","first_seen_at":"2026-10-23T21:57:13+00:00","triaged_at":"2026-10-25T04:18:32+00:00","updated_at":"2026-10-25T04:18:32+00:00","category":"package","confidence":0.5,"triage":{"at":"2026-10-25T04:18:32Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"network","title":"Crafty Controller: Webhook URL field lets authenticated users inject stored XSS","impact":"medium","summary":"The Webhook URL form field in Crafty Controller does not neutralize user input, so a logged-in attacker can store malicious script in it. Other users who view the stored value can have that script run in their browser.","category":"package","nicknames":[],"who_cares":["crafty-controller","self-hosted"],"confidence":0.5,"needs_auth":"yes","worst_case":"Stored script runs in other users' browsers, enabling session theft","analyst_note":"Check the NVD entry and the Crafty Controller project for affected versions, the fixed release, and whether the webhook field is reachable by lower-privileged users.","how_to_check":"unknown","needs_analyst":true,"not_affected_if":["auth-required"],"who_is_affected":"unknown","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000502,"input_tokens":3274,"output_tokens":349,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-90821':14A,17A 'allow':79C 'attack':43B,83C 'authent':7A,82C 'browser':64B 'compon':75C 'control':2A,20B,32B,78C 'crafti':1A,19B,31B,77C 'crafty-control':18B 'cve':12A,15A 'field':5A,29B,74C 'form':28B,73C,90C 'host':24B 'inject':9A 'input':37B,66C,91C 'let':6A 'log':41B 'logged-in':40B 'malici':46B,89C 'neutral':35B,67C 'packag':21B 'perform':85C 'remot':81C 'run':61B 'script':47B,60B 'self':23B 'self-host':22B 'store':10A,45B,55B,86C 'url':4A,27B,72C 'user':8A,36B,51B 'valu':56B 'via':88C 'view':53B 'vulner':68C 'webhook':3A,26B,71C 'xss':11A,87C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T14:19:10+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","cvss_by":"cve@gitlab.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-90821","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-90821","severity":null,"published_at":"2026-10-16T14:19:10+00:00","modified_at":"2026-10-16T20:04:29+00:00","first_seen_at":"2026-10-23T21:57:13+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"}