{"id":"CVE-2026-14620","aliases":["CLSA-2026-1784596297","CLSA-2026-1786365627","CLSA-2026-1787837465","CLSA-2026-1790004677","CLSA-2026-1790863106","CLSA-2026-1790944348","CLSA-2026-1793836056","CLSA-2026-1793867542","CLSA-2026-1793874424","EUVD-2026-41558","GHSA-f5vj-f2hx-8m93","ROOT-APP-NPM-CVE-2026-14620"],"status":"published","title":"webpack-dev-server vulnerable to cross-site request forgery via internal developer endpoints","description":"webpack-dev-server versions 5.2.5 and earlier expose two internal developer endpoints, /webpack-dev-server/open-editor and /webpack-dev-server/invalidate, that perform state-changing actions on any GET request without verifying that the request originated from the dev server's own page. Any website a developer visits while the dev server is running can trigger these endpoints cross-origin with no interaction beyond the visit. An attacker can open an arbitrary existing local file in the developer's editor, including files outside the project root, and repeated requests can spawn editor processes and force recompilations that degrade the developer's machine. Patches: upgrade to webpack-dev-server 5.2.6. Workarounds: none.","severity":{"version":"3.1","score":4.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:N/A:L","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00521,"percentile":0.44702,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":true},"cwes":["CWE-352","CWE-749"],"published":"2026-07-03T17:00:00Z","modified":"2026-11-05T13:15:18Z","exploits":[{"source":"exploitdb","id":"EDB-52649","title":"webpack_devserver 5.2.5 -  CSRF","type":"webapps","platform":"multiple","date":"2026-08-17","url":"https://www.exploit-db.com/exploits/52649"}],"fixes":[{"ecosystem":"npm","package":"webpack-dev-server","fixed_in":["5.2.6"],"sources":["ghsa","osv"]},{"ecosystem":"TuxCare:npm","package":"webpack-dev-server","fixed_in":["3.11.3-tuxcare.6","3.11.0-tuxcare.8","3.11.2-tuxcare.6"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"webpack-dev-server","fixed_in":["5.2.2-aikido.3","5.2.3-aikido.3","5.0.4-aikido.2","5.2.4-aikido.2","3.11.3-aikido.4","4.10.0-aikido.3"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"@rootio/webpack-dev-server","fixed_in":["5.2.2-root.io.3","5.2.3-root.io.3","5.0.4-root.io.2","5.2.4-root.io.2","3.11.3-root.io.4","4.10.0-root.io.3"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"5.2.5"},{"fixed":"5.2.6"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.15.2-tuxcare.0"},{"fixed":"4.15.2-tuxcare.2"}]}],"versions":["4.15.2","4.15.2-tuxcare.1"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.15.1-tuxcare.0"},{"fixed":"4.15.1-tuxcare.4"}]}],"versions":["4.15.1","4.15.1-tuxcare.1","4.15.1-tuxcare.2","4.15.1-tuxcare.3"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.11.1-tuxcare.0"},{"fixed":"4.11.1-tuxcare.4"}]}],"versions":["4.11.1","4.11.1-tuxcare.1","4.11.1-tuxcare.2","4.11.1-tuxcare.3"],"bundled":3},{"source":"osv","ecosystem":"TuxCare:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.2.2-tuxcare.0"},{"fixed":"5.2.2-tuxcare.2"}]}],"versions":["5.2.2","5.2.2-tuxcare.1"],"bundled":3},{"source":"osv","ecosystem":"TuxCare:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.2.5-tuxcare.0"},{"fixed":"5.2.5-tuxcare.1"}]}],"versions":["5.2.5"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.9.3-tuxcare.0"},{"fixed":"4.9.3-tuxcare.2"}]}],"versions":["4.9.3","4.9.3-tuxcare.1"],"bundled":2},{"source":"osv","ecosystem":"TuxCare:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.11.3-tuxcare.0"},{"fixed":"3.11.3-tuxcare.6"}]}],"versions":["3.11.3","3.11.3-tuxcare.1","3.11.3-tuxcare.2","3.11.3-tuxcare.3","3.11.3-tuxcare.4","3.11.3-tuxcare.5"]},{"source":"osv","ecosystem":"TuxCare:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.11.0-tuxcare.0"},{"fixed":"3.11.0-tuxcare.8"}]}],"versions":["3.11.0","3.11.0-tuxcare.1","3.11.0-tuxcare.2","3.11.0-tuxcare.3","3.11.0-tuxcare.4","3.11.0-tuxcare.5","3.11.0-tuxcare.6","3.11.0-tuxcare.7"]},{"source":"osv","ecosystem":"TuxCare:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.11.2-tuxcare.0"},{"fixed":"3.11.2-tuxcare.6"}]}],"versions":["3.11.2","3.11.2-tuxcare.1","3.11.2-tuxcare.2","3.11.2-tuxcare.3","3.11.2-tuxcare.4","3.11.2-tuxcare.5"]},{"source":"osv","ecosystem":"npm","package":"webpack-dev-server","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"5.2.6"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.2.2-aikido.3"},{"fixed":"5.2.3-aikido.3"},{"fixed":"5.0.4-aikido.2"},{"fixed":"5.2.4-aikido.2"},{"fixed":"3.11.3-aikido.4"},{"fixed":"4.10.0-aikido.3"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@rootio/webpack-dev-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.2.2-root.io.3"},{"fixed":"5.2.3-root.io.3"},{"fixed":"5.0.4-root.io.2"},{"fixed":"5.2.4-root.io.2"},{"fixed":"3.11.3-root.io.4"},{"fixed":"4.10.0-root.io.3"}]}]}],"products":[{"vendor":"webpack-dev-server","product":"webpack-dev-server"},{"vendor":"webpack.js","product":"webpack-dev-server"}],"references":[{"url":"https://github.com/webpack/webpack-dev-server/security/advisories/GHSA-f5vj-f2hx-8m93","tags":["Patch","Vendor Advisory","advisory","web"]},{"url":"https://cna.openjsf.org/security-advisories.html","tags":["Third Party Advisory","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-14620","tags":["advisory"]},{"url":"https://github.com/webpack/webpack-dev-server/pull/5698","tags":["web"]},{"url":"https://github.com/webpack/webpack-dev-server/commit/80cd9eea54975fe632a518d8bd902a260f374e7c","tags":["web"]},{"url":"https://github.com/webpack/webpack-dev-server/releases/tag/v5.2.6","tags":["web"]},{"url":"https://github.com/advisories/GHSA-f5vj-f2hx-8m93"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/14xxx/CVE-2026-14620.json","tags":["advisory"]},{"url":"https://github.com/webpack/webpack-dev-server","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-14620","title":"webpack-dev-server vulnerable to cross-site request forgery via internal developer endpoints","description":"webpack-dev-server versions 5.2.5 and earlier expose two internal developer endpoints, /webpack-dev-server/open-editor and /webpack-dev-server/invalidate, that perform state-changing actions on any GET request without verifying that the request originated from the dev server's own page. Any website a developer visits while the dev server is running can trigger these endpoints cross-origin with no interaction beyond the visit. An attacker can open an arbitrary existing local file in the developer's editor, including files outside the project root, and repeated requests can spawn editor processes and force recompilations that degrade the developer's machine. Patches: upgrade to webpack-dev-server 5.2.6. Workarounds: none.","status":"published","published":"2026-07-03T17:00:00.679Z","modified":"2026-07-06T15:54:51.519Z","cvss":[{"version":"3.1","score":4.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:N/A:L","level":"medium","assessor":"cna"}],"cwes":["CWE-352","CWE-749"],"updated_at":"2026-11-02T13:38:32.13011Z"}],"euvd":[{"id":"EUVD-2026-41558","description":"webpack-dev-server versions 5.2.5 and earlier expose two internal developer endpoints, /webpack-dev-server/open-editor and /webpack-dev-server/invalidate, that perform state-changing actions on any GET request without verifying that the request originated from the dev server's own page. Any website a developer visits while the dev server is running can trigger these endpoints cross-origin with no interaction beyond the visit. An attacker can open an arbitrary existing local file in the developer's editor, including files outside the project root, and repeated requests can spawn editor processes and force recompilations that degrade the developer's machine. Patches: upgrade to webpack-dev-server 5.2.6. Workarounds: none.","status":"published","published":"2026-07-03T17:00:00Z","modified":"2026-07-06T15:54:51Z","cvss":[{"version":"3.1","score":4.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:N/A:L","level":"medium"}],"updated_at":"2026-11-02T18:20:13.172179Z"}],"ghsa":[{"id":"GHSA-f5vj-f2hx-8m93","title":"webpack-dev-server vulnerable to cross-site request forgery via internal developer endpoints","description":"### Impact\n\nThe internal `/webpack-dev-server/open-editor` and `/webpack-dev-server/invalidate` endpoints perform state-changing actions on any `GET` request, without verifying that the request originated from the dev server's own page. Any website a developer visits while the dev server is running can trigger them cross-origin with no interaction beyond the visit.\n\nAn attacker can open an arbitrary existing local file in the developer's editor, including files outside the project root (e.g. `~/.ssh/config`). The file's contents are not returned to the attacker. Repeated requests can also spawn editor processes and force recompilations, degrading the developer's machine.\n\n### Patches\n\nFixed in `webpack-dev-server` 5.2.6 by rejecting cross-site requests to the `/webpack-dev-server/open-editor` and `/webpack-dev-server/invalidate` endpoints (see [PR #5698](https://github.com/webpack/webpack-dev-server/pull/5698)).\n\n### Workarounds\n\nNone","status":"published","published":"2026-07-20T22:01:56Z","modified":"2026-07-20T22:02:59Z","cvss":[{"version":"3.1","score":4.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:N/A:L","level":"medium"}],"cwes":["CWE-352","CWE-749"],"updated_at":"2026-11-02T14:40:48.410776Z"}],"nvd":[{"id":"CVE-2026-14620","description":"webpack-dev-server versions 5.2.5 and earlier expose two internal developer endpoints, /webpack-dev-server/open-editor and /webpack-dev-server/invalidate, that perform state-changing actions on any GET request without verifying that the request originated from the dev server's own page. Any website a developer visits while the dev server is running can trigger these endpoints cross-origin with no interaction beyond the visit. An attacker can open an arbitrary existing local file in the developer's editor, including files outside the project root, and repeated requests can spawn editor processes and force recompilations that degrade the developer's machine. Patches: upgrade to webpack-dev-server 5.2.6. Workarounds: none.","status":"published","published":"2026-07-03T17:16:53.62Z","modified":"2026-07-07T15:12:43.947Z","cvss":[{"version":"3.1","score":4.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:N/A:L","level":"medium","assessor":"secondary"},{"version":"3.1","score":4.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:N/A:L","level":"medium","assessor":"primary"}],"cwes":["CWE-352","CWE-749"],"updated_at":"2026-11-02T14:12:27.541515Z"}],"osv":[{"id":"CVE-2026-14620","title":"webpack-dev-server vulnerable to cross-site request forgery via internal developer endpoints","description":"webpack-dev-server versions 5.2.5 and earlier expose two internal developer endpoints, /webpack-dev-server/open-editor and /webpack-dev-server/invalidate, that perform state-changing actions on any GET request without verifying that the request originated from the dev server's own page. Any website a developer visits while the dev server is running can trigger these endpoints cross-origin with no interaction beyond the visit. An attacker can open an arbitrary existing local file in the developer's editor, including files outside the project root, and repeated requests can spawn editor processes and force recompilations that degrade the developer's machine. Patches: upgrade to webpack-dev-server 5.2.6. Workarounds: none.","status":"published","published":"2026-07-03T17:00:00.679Z","modified":"2026-10-28T02:30:48.601232033Z","cvss":[{"version":"3.1","score":4.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:N/A:L","level":"medium"}],"cwes":["CWE-352","CWE-749"],"updated_at":"2026-11-02T15:44:57.354194Z"},{"id":"GHSA-f5vj-f2hx-8m93","title":"webpack-dev-server vulnerable to cross-site request forgery via internal developer endpoints","description":"### Impact\n\nThe internal `/webpack-dev-server/open-editor` and `/webpack-dev-server/invalidate` endpoints perform state-changing actions on any `GET` request, without verifying that the request originated from the dev server's own page. Any website a developer visits while the dev server is running can trigger them cross-origin with no interaction beyond the visit.\n\nAn attacker can open an arbitrary existing local file in the developer's editor, including files outside the project root (e.g. `~/.ssh/config`). The file's contents are not returned to the attacker. Repeated requests can also spawn editor processes and force recompilations, degrading the developer's machine.\n\n### Patches\n\nFixed in `webpack-dev-server` 5.2.6 by rejecting cross-site requests to the `/webpack-dev-server/open-editor` and `/webpack-dev-server/invalidate` endpoints (see [PR #5698](https://github.com/webpack/webpack-dev-server/pull/5698)).\n\n### Workarounds\n\nNone","status":"published","published":"2026-07-20T22:01:56Z","modified":"2026-09-10T03:50:51.837057467Z","cvss":[{"version":"3.1","score":4.7,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:N/A:L","level":"medium"}],"cwes":["CWE-352","CWE-749"],"updated_at":"2026-11-02T15:46:46.006631Z"},{"id":"CLSA-2026-1784596297","title":"TuxCare security update for webpack-dev-server (2 CVEs)","description":"TuxCare rebuilt webpack-dev-server to address 2 CVEs. Fixed in 4.15.2-tuxcare.2.","status":"published","published":"2026-08-04T14:52:45Z","modified":"2026-10-15T09:47:52.668060265Z","updated_at":"2026-11-02T15:43:46.482572Z"},{"id":"CLSA-2026-1786365627","title":"TuxCare security update for webpack-dev-server (2 CVEs)","description":"TuxCare rebuilt webpack-dev-server to address 2 CVEs. Fixed in 4.15.1-tuxcare.4.","status":"published","published":"2026-08-10T12:40:27Z","modified":"2026-10-15T09:46:00.824286509Z","updated_at":"2026-11-02T15:43:46.850893Z"},{"id":"CLSA-2026-1787837465","title":"TuxCare security update for webpack-dev-server (3 CVEs)","description":"TuxCare rebuilt webpack-dev-server to address 3 CVEs. Fixed in 4.11.1-tuxcare.4.","status":"published","published":"2026-08-27T13:31:05Z","modified":"2026-10-15T09:48:03.192006457Z","updated_at":"2026-11-02T15:43:47.591214Z"},{"id":"CLSA-2026-1790004677","title":"TuxCare security update for webpack-dev-server (3 CVEs)","description":"TuxCare rebuilt webpack-dev-server to address 3 CVEs. Fixed in 5.2.2-tuxcare.2.","status":"published","published":"2026-09-21T15:31:17Z","modified":"2026-10-15T09:46:02.800155504Z","updated_at":"2026-11-02T15:43:48.28229Z"},{"id":"CLSA-2026-1790863106","title":"TuxCare security update for webpack-dev-server (2 CVEs)","description":"TuxCare rebuilt webpack-dev-server to address 2 CVEs. Fixed in 5.2.5-tuxcare.1.","status":"published","published":"2026-10-01T13:58:26Z","modified":"2026-10-15T09:48:04.062427657Z","updated_at":"2026-11-02T15:43:48.65893Z"},{"id":"CLSA-2026-1790944348","title":"TuxCare security update for webpack-dev-server (2 CVEs)","description":"TuxCare rebuilt webpack-dev-server to address 2 CVEs. Fixed in 4.9.3-tuxcare.2.","status":"published","published":"2026-10-02T12:32:28Z","modified":"2026-10-15T09:47:57.925209546Z","updated_at":"2026-11-02T15:43:49.016976Z"},{"id":"CLSA-2026-1793836056","title":"TuxCare security update for webpack-dev-server (1 CVE)","description":"TuxCare rebuilt webpack-dev-server to address 1 CVE. Fixed in 3.11.3-tuxcare.6.","status":"published","published":"2026-11-05T00:47:37Z","modified":"2026-11-05T13:15:12.590946527Z","updated_at":"2026-11-05T13:30:00.949926Z"},{"id":"CLSA-2026-1793867542","title":"TuxCare security update for webpack-dev-server (1 CVE)","description":"TuxCare rebuilt webpack-dev-server to address 1 CVE. Fixed in 3.11.0-tuxcare.8.","status":"published","published":"2026-11-05T09:32:22Z","modified":"2026-11-05T13:15:18.092198154Z","updated_at":"2026-11-05T13:30:00.949926Z"},{"id":"CLSA-2026-1793874424","title":"TuxCare security update for webpack-dev-server (1 CVE)","description":"TuxCare rebuilt webpack-dev-server to address 1 CVE. Fixed in 3.11.2-tuxcare.6.","status":"published","published":"2026-11-05T11:27:05Z","modified":"2026-11-05T13:15:17.484527999Z","updated_at":"2026-11-05T13:30:00.949926Z"},{"id":"ROOT-APP-NPM-CVE-2026-14620","title":"CVE-2026-14620 in webpack-dev-server - Patched by Root","description":"Root has patched CVE-2026-14620 in the webpack-dev-server package for Root:npm. Multiple fixed versions available.","status":"published","published":"2026-08-21T13:00:08Z","modified":"2026-08-21T13:45:05.849813374Z","updated_at":"2026-11-02T15:53:27.362922Z"}]}}
