security: bump wait-on 7.2.0 -> 9.0.10 to drop vulnerable joi (Dependabot alert 1437) (#21457)

## Context

Two open Dependabot alerts; this PR fixes one with a parent bump (no
resolutions), the other is dismissed with analysis (see below).

## joi RangeError DoS (alert 1437, fixed in joi 18.2.1)

`joi@17.13.3`'s only parent is `wait-on@7.2.0` (twenty-sdk
devDependency, used purely as a CLI: `yarn start`'s `wait-on tcp:3000`
and CI's `wait-on http://localhost:3000/healthz --timeout --interval`).
Bumping **wait-on 7.2.0 → 9.0.10** (which depends on `joi ^18.2.1`)
evicts joi 17 from the lockfile entirely — no forced ranges.

Verified: twenty-sdk builds; wait-on 9 smoke-tested with both invocation
shapes used in the repo (`tcp:PORT`, `http://… --timeout --interval`).

## @cyntler/react-doc-viewer TXTRenderer "XSS" (alert 1436) — dismissed
as inaccurate

CVE-2026-30691 claims arbitrary JS execution via a crafted .txt because
TXTRenderer "casts raw data as a ReactNode". Verified against the
installed 1.17.1 dist: the renderer is `children:
currentDocument?.fileData` where the txt fileLoader produces `fileData`
via `FileReader.readAsText` — i.e. **always a string rendered as a React
child, which React HTML-escapes**. There is no
`dangerouslySetInnerHTML`/eval in the path (the only
`dangerouslySetInnerHTML` occurrence in the bundle is styled-components'
prop whitelist regex). String children cannot execute script in React;
the advisory's premise is wrong, and consistently upstream has published
no fix. Alert dismissed as *inaccurate* with this analysis.

Longer-term, `@cyntler/react-doc-viewer` remains a liability (stale
since 2025-09, already needs an ajv resolution) — replacing it with
first-party preview renderers is tracked separately.
This commit is contained in:
Charles Bochet
2026-06-11 17:42:34 +02:00
committed by GitHub
parent 41cdd83367
commit deb956f4fe
2 changed files with 61 additions and 52 deletions
+1 -1
View File
@@ -107,7 +107,7 @@
"vite": "^7.0.0",
"vite-plugin-dts": "^4.5.4",
"vite-tsconfig-paths": "^4.2.1",
"wait-on": "^7.2.0"
"wait-on": "^9.0.10"
},
"engines": {
"node": "^24.5.0",
+60 -51
View File
@@ -8334,19 +8334,49 @@ __metadata:
languageName: node
linkType: hard
"@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0":
version: 9.3.0
resolution: "@hapi/hoek@npm:9.3.0"
checksum: 10c0/a096063805051fb8bba4c947e293c664b05a32b47e13bc654c0dd43813a1cec993bdd8f29ceb838020299e1d0f89f68dc0d62a603c13c9cc8541963f0beca055
"@hapi/address@npm:^5.1.1":
version: 5.1.1
resolution: "@hapi/address@npm:5.1.1"
dependencies:
"@hapi/hoek": "npm:^11.0.2"
checksum: 10c0/78138effe1e9a36fd12eb42e24adf97f3ca94b9ab1f6db65e3136cf0e5cdbd1578c14adffde18a50d776db2f326a8cb3a16d783b6705b22571a603fa47c8c3d3
languageName: node
linkType: hard
"@hapi/topo@npm:^5.1.0":
version: 5.1.0
resolution: "@hapi/topo@npm:5.1.0"
"@hapi/formula@npm:^3.0.2":
version: 3.0.2
resolution: "@hapi/formula@npm:3.0.2"
checksum: 10c0/794d30dd13ecc070b9d93e01dacad8175c270f89bcfaa92300f843b7666d915b319d0b792694385d79270c84b52f003a4310f117202303cce3069808751f7a41
languageName: node
linkType: hard
"@hapi/hoek@npm:^11.0.2, @hapi/hoek@npm:^11.0.7":
version: 11.0.7
resolution: "@hapi/hoek@npm:11.0.7"
checksum: 10c0/39a4a3ae9526ed66509f6d03c6eb43179a2590df6e98443328c966cfa5e7cbb9d340f61fdbe0afe092662d5377d5a611c3303c808fee26a9c9cfd6bd3737dc1c
languageName: node
linkType: hard
"@hapi/pinpoint@npm:^2.0.1":
version: 2.0.1
resolution: "@hapi/pinpoint@npm:2.0.1"
checksum: 10c0/b3072f2c57c9fa2e44d85168e253e331324158509e1c45dae2676f31555326410345fd2422f890c41201e2783c5e9bb8c7b0bdcf6abe01079742a943b0c300b9
languageName: node
linkType: hard
"@hapi/tlds@npm:^1.1.1":
version: 1.1.6
resolution: "@hapi/tlds@npm:1.1.6"
checksum: 10c0/75b2918dd10e8ba6418aadf53e6951c5fcf5b0d150cd497f257faa03492084dd9792e1cda1e41be959edf1c74602577de3d2593a44388b4caf3ad2a0c0a3da40
languageName: node
linkType: hard
"@hapi/topo@npm:^6.0.2":
version: 6.0.2
resolution: "@hapi/topo@npm:6.0.2"
dependencies:
"@hapi/hoek": "npm:^9.0.0"
checksum: 10c0/b16b06d9357947149e032bdf10151eb71aea8057c79c4046bf32393cb89d0d0f7ca501c40c0f7534a5ceca078de0700d2257ac855c15e59fe4e00bba2f25c86f
"@hapi/hoek": "npm:^11.0.2"
checksum: 10c0/5a0079805e9a542bdb852912ce6ed3221ddd0a58569354b3900e165faabe50fb1d2d488067db97c494194835684b055828b6267be3064ac42cf2ce28db02edfc
languageName: node
linkType: hard
@@ -19541,29 +19571,6 @@ __metadata:
languageName: node
linkType: hard
"@sideway/address@npm:^4.1.5":
version: 4.1.5
resolution: "@sideway/address@npm:4.1.5"
dependencies:
"@hapi/hoek": "npm:^9.0.0"
checksum: 10c0/638eb6f7e7dba209053dd6c8da74d7cc995e2b791b97644d0303a7dd3119263bcb7225a4f6804d4db2bc4f96e5a9d262975a014f58eae4d1753c27cbc96ef959
languageName: node
linkType: hard
"@sideway/formula@npm:^3.0.1":
version: 3.0.1
resolution: "@sideway/formula@npm:3.0.1"
checksum: 10c0/3fe81fa9662efc076bf41612b060eb9b02e846ea4bea5bd114f1662b7f1541e9dedcf98aff0d24400bcb92f113964a50e0290b86e284edbdf6346fa9b7e2bf2c
languageName: node
linkType: hard
"@sideway/pinpoint@npm:^2.0.0":
version: 2.0.0
resolution: "@sideway/pinpoint@npm:2.0.0"
checksum: 10c0/d2ca75dacaf69b8fc0bb8916a204e01def3105ee44d8be16c355e5f58189eb94039e15ce831f3d544f229889ccfa35562a0ce2516179f3a7ee1bbe0b71e55b36
languageName: node
linkType: hard
"@sigstore/bundle@npm:^4.0.0":
version: 4.0.0
resolution: "@sigstore/bundle@npm:4.0.0"
@@ -28223,7 +28230,7 @@ __metadata:
languageName: node
linkType: hard
"axios@npm:1.16.1, axios@npm:^1.6.1":
"axios@npm:1.16.1":
version: 1.16.1
resolution: "axios@npm:1.16.1"
dependencies:
@@ -40534,16 +40541,18 @@ __metadata:
languageName: node
linkType: hard
"joi@npm:^17.11.0":
version: 17.13.3
resolution: "joi@npm:17.13.3"
"joi@npm:^18.2.1":
version: 18.2.1
resolution: "joi@npm:18.2.1"
dependencies:
"@hapi/hoek": "npm:^9.3.0"
"@hapi/topo": "npm:^5.1.0"
"@sideway/address": "npm:^4.1.5"
"@sideway/formula": "npm:^3.0.1"
"@sideway/pinpoint": "npm:^2.0.0"
checksum: 10c0/9262aef1da3f1bec5b03caf50c46368899fe03b8ff26cbe3d53af4584dd1049079fc97230bbf1500b6149db7cc765b9ee45f0deb24bb6fc3fa06229d7148c17f
"@hapi/address": "npm:^5.1.1"
"@hapi/formula": "npm:^3.0.2"
"@hapi/hoek": "npm:^11.0.7"
"@hapi/pinpoint": "npm:^2.0.1"
"@hapi/tlds": "npm:^1.1.1"
"@hapi/topo": "npm:^6.0.2"
"@standard-schema/spec": "npm:^1.1.0"
checksum: 10c0/d74f8b382de107f8bcc376ed3a2206971760176e167c7b69ff5b1dfe47a0de01e4a171f07bf4783f9bd240fb1e75f7b2d514eed175f3326e681c3572c0990ecc
languageName: node
linkType: hard
@@ -55030,7 +55039,7 @@ __metadata:
vite: "npm:^7.0.0"
vite-plugin-dts: "npm:^4.5.4"
vite-tsconfig-paths: "npm:^4.2.1"
wait-on: "npm:^7.2.0"
wait-on: "npm:^9.0.10"
bin:
twenty: dist/cli.cjs
languageName: unknown
@@ -57471,18 +57480,18 @@ __metadata:
languageName: node
linkType: hard
"wait-on@npm:^7.2.0":
version: 7.2.0
resolution: "wait-on@npm:7.2.0"
"wait-on@npm:^9.0.10":
version: 9.0.10
resolution: "wait-on@npm:9.0.10"
dependencies:
axios: "npm:^1.6.1"
joi: "npm:^17.11.0"
lodash: "npm:^4.17.21"
axios: "npm:^1.16.0"
joi: "npm:^18.2.1"
lodash: "npm:^4.18.1"
minimist: "npm:^1.2.8"
rxjs: "npm:^7.8.1"
rxjs: "npm:^7.8.2"
bin:
wait-on: bin/wait-on
checksum: 10c0/1eff2189b3e4b0975889f3e480c75ca2a0d4275072779a6329e7cae8b729620594aa044509ddd89967de6ab2162169501b67b8d9562c16cac517837ffce17337
checksum: 10c0/f5a1e940fe8efa6ad4b52efabad46925bfddea191d895a7f87e1c364975e7b095b0849f2f37549aea6a9dabacbf3c8ab14e818ba1182e370f060b7f6c8da0cf2
languageName: node
linkType: hard