{"id":"GHSA-6cf5-gc4q-fm3x","kind":"vulnerability","aliases":["GHSA-6cf5-gc4q-fm3x"],"related":[],"title":"Private `query.batch` functions could collide, producing unexpected parameter / function combinations","description":"Under certain circumstances, private (non-exported) `query.batch` functions could end up sharing a batch, resulting in the arguments from one function being passed to another. This only affects apps using the experimental remote functions flag and non-exported `query.batch` functions.","summary":"Under certain conditions, non-exported `query.batch` remote functions in SvelteKit can end up in the same batch, so one function receives arguments meant for another. The sources describe this as a permission and function-mixing flaw (CWE-863) rather than code execution.","severity":"medium","cvss":5.9,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"@sveltejs/kit","fixed":["3.1.1"],"affected":">= 2.60.1, <= 3.1.0","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["cwe-863","npm","package","svelte","sveltekit"],"not_affected_if":["experimental-flag-off","exported-batch-functions-only","versions-outside-range"],"how_to_check":"- Check the installed version of `@sveltejs/kit` with `npm ls @sveltejs/kit`\n- Search the app for `query.batch` and check whether any of those functions are not exported\n- Check whether the experimental remote functions flag is enabled in `svelte.config.js`","fix":"- `@sveltejs/kit` fixed in `3.1.1`; affected range `>= 2.60.1, <= 3.1.0`","status":"open","published_at":"2026-10-29T23:47:27+00:00","first_seen_at":"2026-11-09T22:53:15+00:00","triaged_at":"2026-11-09T22:56:16+00:00","updated_at":"2026-11-09T22:56:16+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-09T22:56:16Z","model":"claude-haiku-5-5","output":{"fix":"- `@sveltejs/kit` fixed in `3.1.1`; affected range `>= 2.60.1, <= 3.1.0`","reach":"unknown","title":"SvelteKit: private query.batch functions can share batches, mixing arguments","impact":"medium","summary":"Under certain conditions, non-exported `query.batch` remote functions in SvelteKit can end up in the same batch, so one function receives arguments meant for another. The sources describe this as a permission and function-mixing flaw (CWE-863) rather than code execution.","audience":"developers","category":"package","nicknames":[],"who_cares":["sveltekit","svelte","npm"],"confidence":0.7,"fix_status":"available","needs_auth":"unknown","worst_case":"arguments from one private batch function reach another function","analyst_note":"","how_to_check":"- Check the installed version of `@sveltejs/kit` with `npm ls @sveltejs/kit`\n- Search the app for `query.batch` and check whether any of those functions are not exported\n- Check whether the experimental remote functions flag is enabled in `svelte.config.js`","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["experimental-flag-off","exported-batch-functions-only","versions-outside-range"],"who_is_affected":"Only apps that enable the experimental remote functions flag and use non-exported `query.batch` functions can be affected. Apps without that flag, or that only use exported batch functions, are outside the described condition. The sources do not describe a data path from outside the app.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000744,"input_tokens":4623,"output_tokens":563,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-863':23B,67B '6cf5':13A,18A 'affect':100C 'anoth':53B,97C 'app':101C 'argument':50B,90C 'batch':45B,86C 'certain':29B,73C 'circumst':74C 'code':70B 'collid':5A 'combin':10A 'condit':30B 'could':4A,81C 'cwe':22B,66B 'describ':56B 'end':40B,82C 'execut':71B 'experiment':104C 'export':33B,78C,111C 'flag':107C 'flaw':65B 'fm3x':15A,20A 'function':3A,9A,36B,48B,63B,80C,93C,106C,113C 'function-mix':62B 'gc4q':14A,19A 'ghsa':12A,17A 'ghsa-6cf5-gc4q-fm3x':11A,16A 'meant':51B 'mix':64B 'non':32B,77C,110C 'non-export':31B,76C,109C 'npm':24B 'one':47B,92C 'packag':25B 'paramet':8A 'pass':95C 'permiss':60B 'privat':1A,75C 'produc':6A 'query.batch':2A,34B,79C,112C 'rather':68B 'receiv':49B 'remot':35B,105C 'result':87C 'share':84C 'sourc':55B 'svelt':26B 'sveltejs/kit':21A 'sveltekit':27B,38B 'unexpect':7A 'use':102C","nicknames":[],"mitigations":[],"who_affected":"Only apps that enable the experimental remote functions flag and use non-exported `query.batch` functions can be affected. Apps without that flag, or that only use exported batch functions, are outside the described condition. The sources do not describe a data path from outside the app.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":["kit"],"ptokens":["kit","sveltejs"],"labels":["cwe863","medium","npm","package","svelte","sveltekit"],"campaign_type":null,"search_a":"'6cf5':13A,18A 'collid':5A 'combin':10A 'could':4A 'fm3x':15A,20A 'function':3A,9A 'gc4q':14A,19A 'ghsa':12A,17A 'ghsa-6cf5-gc4q-fm3x':11A,16A 'paramet':8A 'privat':1A 'produc':6A 'query.batch':2A 'sveltejs/kit':21A 'unexpect':7A","search_b":"'-863':23B,67B 'anoth':53B 'argument':50B 'batch':45B 'certain':29B 'code':70B 'condit':30B 'cwe':22B,66B 'describ':56B 'end':40B 'execut':71B 'export':33B 'flaw':65B 'function':36B,48B,63B 'function-mix':62B 'meant':51B 'mix':64B 'non':32B 'non-export':31B 'npm':24B 'one':47B 'packag':25B 'permiss':60B 'query.batch':34B 'rather':68B 'receiv':49B 'remot':35B 'sourc':55B 'svelt':26B 'sveltekit':27B,38B","search_c":"'affect':100C 'anoth':97C 'app':101C 'argument':90C 'batch':86C 'certain':73C 'circumst':74C 'could':81C 'end':82C 'experiment':104C 'export':78C,111C 'flag':107C 'function':80C,93C,106C,113C 'non':77C,110C 'non-export':76C,109C 'one':92C 'pass':95C 'privat':75C 'query.batch':79C,112C 'remot':105C 'result':87C 'share':84C 'use':102C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-29T23:47:27+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"ghsa-repo","external_id":"GHSA-6cf5-gc4q-fm3x","url":"https://github.com/sveltejs/kit/security/advisories/GHSA-6cf5-gc4q-fm3x","severity":"medium","published_at":"2026-10-29T23:47:27+00:00","modified_at":"2026-10-29T23:47:27+00:00","first_seen_at":"2026-11-09T22:53:15+00:00","fetched_at":"2026-11-09T22:53:15+00:00","note":null}],"documents":[{"id":110420,"url":"https://github.com/sveltejs/kit/security/advisories/GHSA-6cf5-gc4q-fm3x","title":"Maintainer's advisory: github.com","kind":"vendor","source":"ghsa-repo","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's advisory: github.com"}],"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"}