{"schemaVersion":3,"id":"CVE-2026-112944","aliases":["GHSA-r825-w8mm-5pxw","CGA-3wr4-g9px-5wqq","CGA-2cp4-27vp-9g65","CGA-2hx8-6h2x-qmrr","CGA-4qfm-wg9f-h9mx","CGA-5rvf-qfmc-fpm6","CGA-6m6r-gcj9-vp8r","CGA-6ppq-xrp8-cv4h","CGA-xxx3-xqr4-j2hq","CGA-v28m-4xhg-c9fc","CGA-w7jv-9vj3-hxpf","CGA-3fqc-g589-5w54","CGA-3g7r-65x2-c3px","CGA-4j8r-9w6j-j97r"],"status":"published","duplicateOf":null,"title":null,"description":"launch-editor allows users to open files with line numbers in editor from Node.js. Prior to 2.14.2, when an attacker can create a filesystem entry beginning with plus or minus in the working directory, an affected editor is selected, and the path can remain relative or is converted to a relative WSL path, launchEditor forwards the path without forcing it to be interpreted as a positional filename. Editor option parsing then treats the attacker-controlled filename as a command-line flag, which can cause unintended file overwrite or arbitrary command execution by the selected editor. The affected editors are Vim and gVim, MacVim, Emacs and Emacsclient, and Notepad++ when a plugin exposes dangerous operations; WSL path conversion keeps Vite and newer middleware callers exposed. This issue is fixed in version 2.14.2.","dates":{"published":"2026-10-20T14:57:38.728Z","modified":"2026-10-20T15:23:12.248Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":6.3,"severity":"medium","version":"4.0","versionLabel":"v4.0","source":"CVE.org","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":6.3,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":6.3,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"OSV · Npm","score":6.3,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":true}]},"epss":{"probability":0.00705,"percentile":0.52759,"severity":"low","asOf":"2026-10-21T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-10-21T00:00:00.000Z","score":0.00705,"percentile":0.52759}],"last30":[{"date":"2026-10-21T00:00:00.000Z","score":0.00705,"percentile":0.52759}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-88","name":"Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')","description":"The product constructs a string for a command to be executed by a separate component\nin another control sphere, but it does not properly delimit the\nintended arguments, options, or switches within that command string.","type":"weakness","status":"Draft","abstraction":"Base","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/88.html"}],"affected":[{"vendor":"chainguard","product":"commercial-gitlab-rails-ee-fips-19.1","name":"commercial-gitlab-rails-ee-fips-19.1","label":"commercial-gitlab-rails-ee-fips-19.1","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/commercial-gitlab-rails-ee-fips-19.1","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"gitlab-rails-ce-18.11","name":"gitlab-rails-ce-18.11","label":"gitlab-rails-ce-18.11","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/gitlab-rails-ce-18.11","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"gitlab-rails-ce-19.0","name":"gitlab-rails-ce-19.0","label":"gitlab-rails-ce-19.0","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/gitlab-rails-ce-19.0","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"gitlab-rails-ce-19.2","name":"gitlab-rails-ce-19.2","label":"gitlab-rails-ce-19.2","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/gitlab-rails-ce-19.2","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"gitlab-rails-ce-19.4","name":"gitlab-rails-ce-19.4","label":"gitlab-rails-ce-19.4","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/gitlab-rails-ce-19.4","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"gitlab-rails-ce-19.5","name":"gitlab-rails-ce-19.5","label":"gitlab-rails-ce-19.5","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/gitlab-rails-ce-19.5","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"gitlab-rails-ce-fips-19.2","name":"gitlab-rails-ce-fips-19.2","label":"gitlab-rails-ce-fips-19.2","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/gitlab-rails-ce-fips-19.2","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"kubeflow-pipelines-frontend","name":"kubeflow-pipelines-frontend","label":"kubeflow-pipelines-frontend","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/kubeflow-pipelines-frontend","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"langfuse-4-worker","name":"langfuse-4-worker","label":"langfuse-4-worker","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/langfuse-4-worker","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"nextcloud-server-34","name":"nextcloud-server-34","label":"nextcloud-server-34","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/nextcloud-server-34","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"wolfi","product":"kubeflow-pipelines-frontend","name":"kubeflow-pipelines-frontend","label":"kubeflow-pipelines-frontend","ecosystem":"Wolfi","cpePart":null,"purl":"pkg:apk/wolfi/kubeflow-pipelines-frontend","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"Npm","product":"launch-editor","name":"launch-editor","label":"launch-editor","ecosystem":"Npm","cpePart":null,"purl":"pkg:npm/launch-editor","purlType":"npm","versions":[{"text":"< 2.14.2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 2.14.2","eol":null,"hubHref":null},{"vendor":"Npm","product":"vite","name":"vite","label":"vite","ecosystem":"Npm","cpePart":null,"purl":"pkg:npm/vite","purlType":"npm","versions":[{"text":"≥ 8.3.0, < 8.3.3","noFixRecorded":false,"fixedIn":null},{"text":"≥ 8.2.0, < 8.2.4","noFixRecorded":false,"fixedIn":null},{"text":"≥ 8.0.0, < 8.1.6","noFixRecorded":false,"fixedIn":null},{"text":"≥ 7.0.0, < 7.3.7","noFixRecorded":false,"fixedIn":null},{"text":"< 6.4.4","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 8.3.0, < 8.3.3 | ≥ 8.2.0, < 8.2.4 | ≥ 8.0.0, < 8.1.6 | ≥ 7.0.0, < 7.3.7 | < 6.4.4","eol":null,"hubHref":null},{"vendor":"Npm","product":"vite-plus","name":"vite-plus","label":"vite-plus","ecosystem":"Npm","cpePart":null,"purl":"pkg:npm/vite-plus","purlType":"npm","versions":[{"text":"< 1.1.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.1.0","eol":null,"hubHref":null},{"vendor":"vitejs","product":"launch-editor","name":"launch-editor","label":"launch-editor","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 2.14.2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 2.14.2","eol":null,"hubHref":"/vendor/vitejs/launch-editor"},{"vendor":"vitejs","product":"vite","name":"vite","label":"vite","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 8.3.0, < 8.3.3","noFixRecorded":false,"fixedIn":null},{"text":"≥ 8.2.0, < 8.2.4","noFixRecorded":false,"fixedIn":null},{"text":"≥ 8.0.0, < 8.1.6","noFixRecorded":false,"fixedIn":null},{"text":"≥ 7.0.0, < 7.3.7","noFixRecorded":false,"fixedIn":null},{"text":"< 6.4.4","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 8.3.0, < 8.3.3 | ≥ 8.2.0, < 8.2.4 | ≥ 8.0.0, < 8.1.6 | ≥ 7.0.0, < 7.3.7 | < 6.4.4","eol":null,"hubHref":"/vendor/vitejs/vite"},{"vendor":"vitejs","product":"vite-plus","name":"vite-plus","label":"vite-plus","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 1.1.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.1.0","eol":null,"hubHref":"/vendor/vitejs/vite-plus"}],"affectedCount":17,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/vitejs/launch-editor/security/advisories/GHSA-r825-w8mm-5pxw","label":"github.com/vitejs/launch-editor/security/advisories/GHSA-r825-w8mm-5pxw","hostname":"github.com","tags":["X Refsource CONFIRM","WEB"]},{"url":"https://github.com/vitejs/launch-editor/pull/156","label":"github.com/vitejs/launch-editor/pull/156","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://github.com/vitejs/launch-editor/commit/f6e6701bb1f16f2dd242b321374f1b6cca6eb6d4","label":"github.com/vitejs/launch-editor/commit/f6e6701bb1f16f2dd242b321374f1b6cca6eb6d4","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://github.com/vitejs/launch-editor/releases/tag/v2.14.2","label":"github.com/vitejs/launch-editor/releases/tag/v2.14.2","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-112944","label":"nvd.nist.gov/vuln/detail/CVE-2026-112944","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/vitejs/launch-editor","label":"github.com/vitejs/launch-editor","hostname":"github.com","tags":["PACKAGE"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-10-20T14:57:38.728Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-20T15:23:12.248Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":25,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-21T17:46:09.392Z","stale":false,"partial":false}}