This is an automated email from the ASF dual-hosted git repository.
LuciferYang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 4b0ca2227074 [SPARK-58726][INFRA][TEST] Fix npm vulnerabilities in dev
and ui-test
4b0ca2227074 is described below
commit 4b0ca2227074fbf5ce73d347a8f42dadb91cd523
Author: YangJie <[email protected]>
AuthorDate: Wed Aug 12 21:22:11 2026 +0800
[SPARK-58726][INFRA][TEST] Fix npm vulnerabilities in dev and ui-test
### What changes were proposed in this pull request?
This clears the high-severity `npm audit` advisories that Dependabot
reports against the two npm projects in the repo, `dev` and `ui-test`. All are
resolved in range by `npm audit fix --package-lock-only`, so only the two
`package-lock.json` files change; no `package.json` and no direct dependency is
touched.
Package version changes:
- `dev`: `fast-uri` 3.1.4 -> 3.1.5, `js-yaml` 4.3.0 -> 4.3.1,
`brace-expansion` 1.1.16 -> 1.1.18.
- `ui-test`: `js-yaml` 4.3.0 -> 4.3.1, and the several transitive
`brace-expansion` copies to their patched releases (5.0.7 -> 5.0.9, 2.1.2 ->
2.1.4 in three trees, 1.1.16 -> 1.1.18).
### Why are the changes needed?
`npm audit` reports these high-severity advisories:
- `fast-uri`
[GHSA-7p8r-x3mc-p8w7](https://github.com/advisories/GHSA-7p8r-x3mc-p8w7)
(CVE-2026-18446): host confusion via a backslash authority introducer.
`fast-uri` requires a literal `//` to recognize an authority, while Node's
WHATWG `URL` treats `\` as interchangeable with `/` for special schemes, so the
two parsers extract different hosts from the same input. Fixed in 3.1.5.
- `js-yaml`
[GHSA-5p4m-2wfm-xmqj](https://github.com/advisories/GHSA-5p4m-2wfm-xmqj):
quadratic CPU consumption in `!!omap` resolution. `resolveYamlOmap()` enforces
key uniqueness with a linear `indexOf` scan inside the per-element loop, making
`yaml.load()` O(n^2) in the number of entries. `!!omap` is in the default
schema, so a plain `yaml.load()` is affected. Fixed in 4.3.1.
- `brace-expansion`
[GHSA-mh99-v99m-4gvg](https://github.com/advisories/GHSA-mh99-v99m-4gvg) and
[GHSA-rgw5-rvv9-x895](https://github.com/advisories/GHSA-rgw5-rvv9-x895): DoS
via unbounded expansion length and via unbounded intermediate arrays.
This addresses https://github.com/apache/spark/security/dependabot/224,
https://github.com/apache/spark/security/dependabot/226 and
https://github.com/apache/spark/security/dependabot/225.
The `brace-expansion` bumps come along with `npm audit fix` rather than
being requested separately. Their Dependabot alerts (216-223) are already
auto-dismissed on the GitHub side, but `npm audit` still flags them locally, so
they are included here to leave the audit clean.
These are dev/test-only dependencies, but it is worth keeping the audit
clean.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Locally, on the commit in this PR:
1. `npm audit` reports `found 0 vulnerabilities` in both projects (before:
3 high in `dev`, 2 high in `ui-test`).
2. `npm ci` reproduces both lockfiles cleanly and leaves them unmodified --
`dev`: `added 112 packages, and audited 113 packages`; `ui-test`: `added 342
packages, and audited 343 packages`.
3. `ui-test` jest suite passes: `Test Suites: 8 passed, 8 total` / `Tests:
22 passed, 22 total`.
4. `dev/lint-js` passes: `lint-js checks passed.`
5. Pass GitHub Actions.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Opus 5)
Closes #57950 from LuciferYang/fix-npm-vulns-aug2026.
Authored-by: YangJie <[email protected]>
Signed-off-by: yangjie01 <[email protected]>
---
dev/package-lock.json | 36 ++++++++++++++++++------------------
ui-test/package-lock.json | 38 +++++++++++++++++++-------------------
2 files changed, 37 insertions(+), 37 deletions(-)
diff --git a/dev/package-lock.json b/dev/package-lock.json
index 1075fcdbd473..f4b80a113c57 100644
--- a/dev/package-lock.json
+++ b/dev/package-lock.json
@@ -237,9 +237,9 @@
"dev": true
},
"node_modules/brace-expansion": {
- "version": "1.1.16",
- "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
- "integrity":
"sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
+ "version": "1.1.18",
+ "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity":
"sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -593,9 +593,9 @@
"dev": true
},
"node_modules/fast-uri": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz",
- "integrity":
"sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz",
+ "integrity":
"sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==",
"dev": true,
"funding": [
{
@@ -802,9 +802,9 @@
"dev": true
},
"node_modules/js-yaml": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
- "integrity":
"sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz",
+ "integrity":
"sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==",
"dev": true,
"funding": [
{
@@ -1416,9 +1416,9 @@
"dev": true
},
"brace-expansion": {
- "version": "1.1.16",
- "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
- "integrity":
"sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
+ "version": "1.1.18",
+ "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity":
"sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
@@ -1692,9 +1692,9 @@
"dev": true
},
"fast-uri": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz",
- "integrity":
"sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz",
+ "integrity":
"sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==",
"dev": true
},
"file-entry-cache": {
@@ -1844,9 +1844,9 @@
"dev": true
},
"js-yaml": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
- "integrity":
"sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz",
+ "integrity":
"sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==",
"dev": true,
"requires": {
"argparse": "^2.0.1"
diff --git a/ui-test/package-lock.json b/ui-test/package-lock.json
index 72e93e20a57f..447a8c5144b7 100644
--- a/ui-test/package-lock.json
+++ b/ui-test/package-lock.json
@@ -1058,9 +1058,9 @@
}
},
"node_modules/@jest/reporters/node_modules/brace-expansion": {
- "version": "2.1.2",
- "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
- "integrity":
"sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
+ "version": "2.1.4",
+ "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity":
"sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2049,16 +2049,16 @@
}
},
"node_modules/brace-expansion": {
- "version": "5.0.7",
- "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz",
- "integrity":
"sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==",
+ "version": "5.0.9",
+ "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
+ "integrity":
"sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^4.0.2"
},
"engines": {
- "node": "18 || 20 || >=22"
+ "node": "20 || >=22"
}
},
"node_modules/brace-expansion/node_modules/@isaacs/cliui": {
@@ -3131,9 +3131,9 @@
}
},
"node_modules/jest-config/node_modules/brace-expansion": {
- "version": "2.1.2",
- "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
- "integrity":
"sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
+ "version": "2.1.4",
+ "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity":
"sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3539,9 +3539,9 @@
}
},
"node_modules/jest-runtime/node_modules/brace-expansion": {
- "version": "2.1.2",
- "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz",
- "integrity":
"sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==",
+ "version": "2.1.4",
+ "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity":
"sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3785,9 +3785,9 @@
"license": "MIT"
},
"node_modules/js-yaml": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
- "integrity":
"sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz",
+ "integrity":
"sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==",
"dev": true,
"funding": [
{
@@ -4669,9 +4669,9 @@
}
},
"node_modules/test-exclude/node_modules/brace-expansion": {
- "version": "1.1.16",
- "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
- "integrity":
"sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
+ "version": "1.1.18",
+ "resolved":
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity":
"sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
"dev": true,
"license": "MIT",
"dependencies": {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]