{"id":"CVE-2026-124686","kind":"vulnerability","aliases":["CVE-2026-124686"],"related":[],"title":"Kendo UI for jQuery: data attributes can run injected JavaScript in browsers","description":"In Progress® Kendo® UI for jQuery versions prior to 2026.4.1111, kendo.init() compiles data-* attribute values with new Function when an invalid JSON object is supplied. An attacker with low privileges who can control these attribute values can inject JavaScript that executes during declarative widget initialization when a user loads or interacts with an affected page. Successful exploitation can compromise the confidentiality and integrity of data accessible in the user's browser context. The issue was reported in version 2022.3.1109; the first affected release has not been established.","summary":"Kendo UI for jQuery's kendo.init() passes data-* attribute values to new Function when the JSON is invalid, so attacker-controlled attribute text runs as JavaScript. An attacker with low privileges who can set those attributes can read or change data in the victim's browser session when the page loads or is used.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["front-end","javascript","jquery","kendo-ui","package"],"not_affected_if":["no-kendo-ui-jquery","no-user-controlled-data-attributes"],"how_to_check":"- Find the Kendo UI for jQuery version in the project's `package.json` or the bundled kendo files and compare it with the fixed version below.\n- Search the front-end code for `kendo.init(` or `data-role` attributes filled with user-supplied content.","fix":"- Kendo UI for jQuery: move to `2026.4.1111` or later.","status":"open","published_at":"2026-11-11T16:17:25+00:00","first_seen_at":"2026-11-11T16:28:06+00:00","triaged_at":"2026-11-11T16:30:04+00:00","updated_at":"2026-11-11T16:30:04+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-11T16:30:04Z","model":"claude-haiku-5-5","output":{"fix":"- Kendo UI for jQuery: move to `2026.4.1111` or later.","reach":"network","title":"Kendo UI for jQuery: data attributes can run injected JavaScript in browsers","impact":"medium","summary":"Kendo UI for jQuery's kendo.init() passes data-* attribute values to new Function when the JSON is invalid, so attacker-controlled attribute text runs as JavaScript. An attacker with low privileges who can set those attributes can read or change data in the victim's browser session when the page loads or is used.","audience":"developers","category":"package","nicknames":[],"who_cares":["kendo-ui","jquery","front-end","javascript"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"injected script runs in users' browsers, reading or altering their session data","analyst_note":"product_name is empty because products were not listed; the advisory names Kendo UI for jQuery, and the npm package is likely the affected component.","how_to_check":"- Find the Kendo UI for jQuery version in the project's `package.json` or the bundled kendo files and compare it with the fixed version below.\n- Search the front-end code for `kendo.init(` or `data-role` attributes filled with user-supplied content.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-kendo-ui-jquery","no-user-controlled-data-attributes"],"who_is_affected":"Applications that use Kendo UI for jQuery and render user-controllable content into data-* attributes on pages that call kendo.init() or initialize widgets declaratively. Apps that do not use the jQuery build of Kendo UI, or that never place untrusted text in those attributes, are less exposed. The sources do not state the first affected release.","user_interaction":"yes","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000783,"input_tokens":4643,"output_tokens":638,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-124686':15A,18A '-2026':14A,17A '2022.3.1109':161C '2026.4.1111':92C 'access':148C 'affect':136C,164C 'attack':48B,56B,109C 'attacker-control':47B 'attribut':6A,36B,50B,64B,96C,117C 'browser':12A,74B,153C 'chang':68B 'compil':94C 'compromis':141C 'confidenti':143C 'context':154C 'control':49B,115C 'cve':13A,16A 'data':5A,35B,69B,95C,147C 'declar':125C 'end':21B 'establish':169C 'execut':123C 'exploit':139C 'first':163C 'front':20B 'front-end':19B 'function':40B,100C 'initi':127C 'inject':9A,120C 'integr':145C 'interact':133C 'invalid':45B,103C 'issu':156C 'javascript':10A,22B,54B,121C 'jqueri':4A,23B,31B,88C 'json':43B,104C 'kendo':1A,25B,28B,85C 'kendo-ui':24B 'kendo.init':33B,93C 'load':79B,131C 'low':58B,111C 'new':39B,99C 'object':105C 'packag':27B 'page':78B,137C 'pass':34B 'prior':90C 'privileg':59B,112C 'progress':84C 'read':66B 'releas':165C 'report':158C 'run':8A,52B 'session':75B 'set':62B 'success':138C 'suppli':107C 'text':51B 'ui':2A,26B,29B,86C 'use':82B 'user':130C,151C 'valu':37B,97C,118C 'version':89C,160C 'victim':72B 'widget':126C","nicknames":[],"mitigations":[],"who_affected":"Applications that use Kendo UI for jQuery and render user-controllable content into data-* attributes on pages that call kendo.init() or initialize widgets declaratively. Apps that do not use the jQuery build of Kendo UI, or that never place untrusted text in those attributes, are less exposed. The sources do not state the first affected release.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["frontend","javascript","jquery","kendoui","medium","package"],"campaign_type":null,"search_a":"'-124686':15A,18A '-2026':14A,17A 'attribut':6A 'browser':12A 'cve':13A,16A 'data':5A 'inject':9A 'javascript':10A 'jqueri':4A 'kendo':1A 'run':8A 'ui':2A","search_b":"'attack':48B,56B 'attacker-control':47B 'attribut':36B,50B,64B 'browser':74B 'chang':68B 'control':49B 'data':35B,69B 'end':21B 'front':20B 'front-end':19B 'function':40B 'invalid':45B 'javascript':22B,54B 'jqueri':23B,31B 'json':43B 'kendo':25B,28B 'kendo-ui':24B 'kendo.init':33B 'load':79B 'low':58B 'new':39B 'packag':27B 'page':78B 'pass':34B 'privileg':59B 'read':66B 'run':52B 'session':75B 'set':62B 'text':51B 'ui':26B,29B 'use':82B 'valu':37B 'victim':72B","search_c":"'2022.3.1109':161C '2026.4.1111':92C 'access':148C 'affect':136C,164C 'attack':109C 'attribut':96C,117C 'browser':153C 'compil':94C 'compromis':141C 'confidenti':143C 'context':154C 'control':115C 'data':95C,147C 'declar':125C 'establish':169C 'execut':123C 'exploit':139C 'first':163C 'function':100C 'initi':127C 'inject':120C 'integr':145C 'interact':133C 'invalid':103C 'issu':156C 'javascript':121C 'jqueri':88C 'json':104C 'kendo':85C 'kendo.init':93C 'load':131C 'low':111C 'new':99C 'object':105C 'page':137C 'prior':90C 'privileg':112C 'progress':84C 'releas':165C 'report':158C 'success':138C 'suppli':107C 'ui':86C 'user':130C,151C 'valu':97C,118C 'version':89C,160C 'widget':126C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-11T16:17:25+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":"security@progress.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-124686","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-124686","severity":null,"published_at":"2026-11-11T16:17:25+00:00","modified_at":"2026-11-11T16:17:25+00:00","first_seen_at":"2026-11-11T16:28:06+00:00","fetched_at":"2026-11-11T16:28:06+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"}