{"id":"CVE-2026-85063","aliases":["DEBIAN-CVE-2026-85063","EUVD-2026-70737","GHSA-8cw4-87c7-c6xx","UBUNTU-CVE-2026-85063"],"status":"published","title":"node-csv: Prototype replacement still reachable via columns path","description":"node-csv is a full-featured CSV parser with a simple API that is tested against large datasets. Prior to 7.0.2, csv-parse with the columns and group_columns_by_name options enabled treats a duplicate __proto__ header as an existing property in packages/csv-parse/lib/api/index.js, assigns an attacker-controlled array through obj['__proto__'], and replaces the parsed record object's prototype. A malicious CSV header can therefore inject inherited array values into the returned record, hide those inherited values from JSON serialization, and affect property enumeration and type or shape checks in applications that process the record. This issue is fixed in version 7.0.2.","severity":{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00566,"percentile":0.47412,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-1321"],"published":"2026-09-03T20:32:46Z","modified":"2026-10-28T02:30:31Z","fixes":[{"ecosystem":"npm","package":"csv-parse","fixed_in":["7.0.2"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:14","package":"node-csv-parse","fixed_in":["6.1.0-2"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"csv-parse","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.0.2"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"node-csv-parse","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.1.0-2"}]}],"versions":["6.0.0-1","6.1.0-1"]},{"source":"osv","ecosystem":"npm","package":"csv-parse","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"7.0.2"}]}]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"node-csv-parse","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["6.1.0-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"node-csv-parse","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["6.0.0-1","6.1.0-1"]}],"products":[{"vendor":"adaltas","product":"node-csv"}],"references":[{"url":"https://github.com/adaltas/node-csv/security/advisories/GHSA-8cw4-87c7-c6xx","tags":["x_refsource_CONFIRM","advisory","web","report"]},{"url":"https://github.com/adaltas/node-csv/issues/496","tags":["x_refsource_MISC","exploit","report","web"]},{"url":"https://github.com/adaltas/node-csv/pull/497","tags":["x_refsource_MISC","fix","web","report"]},{"url":"https://github.com/adaltas/node-csv/commit/eb4d1484589c976dcb977db8dd0b90e015a6f66e","tags":["x_refsource_MISC","fix","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-85063","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-8cw4-87c7-c6xx"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/85xxx/CVE-2026-85063.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-85063","tags":["advisory"]},{"url":"https://github.com/adaltas/node-csv","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2026-85063","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-85063","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-85063","title":"node-csv: Prototype replacement still reachable via columns path","description":"node-csv is a full-featured CSV parser with a simple API that is tested against large datasets. Prior to 7.0.2, csv-parse with the columns and group_columns_by_name options enabled treats a duplicate __proto__ header as an existing property in packages/csv-parse/lib/api/index.js, assigns an attacker-controlled array through obj['__proto__'], and replaces the parsed record object's prototype. A malicious CSV header can therefore inject inherited array values into the returned record, hide those inherited values from JSON serialization, and affect property enumeration and type or shape checks in applications that process the record. This issue is fixed in version 7.0.2.","status":"published","published":"2026-09-03T20:32:46.145Z","modified":"2026-09-04T17:44:08.34Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium","assessor":"cna"}],"cwes":["CWE-1321"],"updated_at":"2026-11-02T14:19:52.410665Z"}],"euvd":[{"id":"EUVD-2026-70737","description":"node-csv is a full-featured CSV parser with a simple API that is tested against large datasets. Prior to 7.0.2, csv-parse with the columns and group_columns_by_name options enabled treats a duplicate __proto__ header as an existing property in packages/csv-parse/lib/api/index.js, assigns an attacker-controlled array through obj['__proto__'], and replaces the parsed record object's prototype. A malicious CSV header can therefore inject inherited array values into the returned record, hide those inherited values from JSON serialization, and affect property enumeration and type or shape checks in applications that process the record. This issue is fixed in version 7.0.2.","status":"published","published":"2026-09-03T20:32:46Z","modified":"2026-09-04T17:44:08Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T18:01:11.774269Z"}],"ghsa":[{"id":"GHSA-8cw4-87c7-c6xx","title":"node-csv: Prototype replacement still reachable via columns path","description":"### Impact\nWith columns: true and group_columns_by_name: true, a duplicated __proto__  header causes the duplicate-column branch to assign an array to obj['__proto__'], invoking the __proto__ setter and replacing the parsed record object's prototype with attacker-controlled data. Fixed in 7.0.2 (Object.hasOwn duplicate check + Object.defineProperty assignment).\n\n### Patches\nThe problem been patched.\n\n### Workarounds\nDisable usage of both the columns and  group_columns_by_name options.\n\n### References\nissue #496, PR #497","status":"published","published":"2026-09-08T18:01:39Z","modified":"2026-09-08T18:01:41Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-1321"],"updated_at":"2026-11-02T14:41:13.477974Z"}],"nvd":[{"id":"CVE-2026-85063","description":"node-csv is a full-featured CSV parser with a simple API that is tested against large datasets. Prior to 7.0.2, csv-parse with the columns and group_columns_by_name options enabled treats a duplicate __proto__ header as an existing property in packages/csv-parse/lib/api/index.js, assigns an attacker-controlled array through obj['__proto__'], and replaces the parsed record object's prototype. A malicious CSV header can therefore inject inherited array values into the returned record, hide those inherited values from JSON serialization, and affect property enumeration and type or shape checks in applications that process the record. This issue is fixed in version 7.0.2.","status":"published","published":"2026-09-03T21:17:23.62Z","modified":"2026-09-09T21:09:13.08Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/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","level":"medium","assessor":"secondary"}],"cwes":["CWE-1321"],"updated_at":"2026-11-02T14:12:43.737972Z"}],"osv":[{"id":"CVE-2026-85063","title":"node-csv: Prototype replacement still reachable via columns path","description":"node-csv is a full-featured CSV parser with a simple API that is tested against large datasets. Prior to 7.0.2, csv-parse with the columns and group_columns_by_name options enabled treats a duplicate __proto__ header as an existing property in packages/csv-parse/lib/api/index.js, assigns an attacker-controlled array through obj['__proto__'], and replaces the parsed record object's prototype. A malicious CSV header can therefore inject inherited array values into the returned record, hide those inherited values from JSON serialization, and affect property enumeration and type or shape checks in applications that process the record. This issue is fixed in version 7.0.2.","status":"published","published":"2026-09-03T20:32:46.145Z","modified":"2026-10-28T02:30:31.907258742Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-1321"],"updated_at":"2026-11-02T15:45:18.482949Z"},{"id":"DEBIAN-CVE-2026-85063","description":"node-csv is a full-featured CSV parser with a simple API that is tested against large datasets. Prior to 7.0.2, csv-parse with the columns and group_columns_by_name options enabled treats a duplicate __proto__ header as an existing property in packages/csv-parse/lib/api/index.js, assigns an attacker-controlled array through obj['__proto__'], and replaces the parsed record object's prototype. A malicious CSV header can therefore inject inherited array values into the returned record, hide those inherited values from JSON serialization, and affect property enumeration and type or shape checks in applications that process the record. This issue is fixed in version 7.0.2.","status":"published","published":"2026-09-03T21:17:23.62Z","modified":"2026-10-01T03:03:51.704411696Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/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","level":"medium"}],"updated_at":"2026-11-02T15:46:05.022702Z"},{"id":"GHSA-8cw4-87c7-c6xx","title":"node-csv: Prototype replacement still reachable via columns path","description":"### Impact\nWith columns: true and group_columns_by_name: true, a duplicated __proto__  header causes the duplicate-column branch to assign an array to obj['__proto__'], invoking the __proto__ setter and replacing the parsed record object's prototype with attacker-controlled data. Fixed in 7.0.2 (Object.hasOwn duplicate check + Object.defineProperty assignment).\n\n### Patches\nThe problem been patched.\n\n### Workarounds\nDisable usage of both the columns and  group_columns_by_name options.\n\n### References\nissue #496, PR #497","status":"published","published":"2026-09-08T18:01:39Z","modified":"2026-09-08T18:15:03.989241486Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-1321"],"updated_at":"2026-11-02T15:46:42.077781Z"},{"id":"UBUNTU-CVE-2026-85063","description":"node-csv is a full-featured CSV parser with a simple API that is tested against large datasets. Prior to 7.0.2, csv-parse with the columns and group_columns_by_name options enabled treats a duplicate __proto__ header as an existing property in packages/csv-parse/lib/api/index.js, assigns an attacker-controlled array through obj['__proto__'], and replaces the parsed record object's prototype. A malicious CSV header can therefore inject inherited array values into the returned record, hide those inherited values from JSON serialization, and affect property enumeration and type or shape checks in applications that process the record. This issue is fixed in version 7.0.2.","status":"published","published":"2026-09-03T21:17:00Z","modified":"2026-10-17T13:01:13.213278649Z","cvss":[{"version":"4.0","score":6.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T16:57:24.828975Z"}]}}
