Skip to content

fix(deps): B3 security upgrades dirigidos — shell-quote + undici/ws + vite + monaco + lodash (card b97898c5) - #10

Merged
SabaTech-dev merged 1 commit into
mainfrom
feat/deps-b3
Aug 26, 2026
Merged

fix(deps): B3 security upgrades dirigidos — shell-quote + undici/ws + vite + monaco + lodash (card b97898c5)#10
SabaTech-dev merged 1 commit into
mainfrom
feat/deps-b3

Conversation

@SabaTech-dev

Copy link
Copy Markdown
Owner

Batch B3 — upgrades dirigidos con verificación de holders exactos

Derivado del triage fe5d15f1 (§batches B3). Base: main b5861b5 (post PR #9).

Cambios (holders verificados con pnpm why ANTES de cada bump)

Item Holder chain (verificado) Acción Resultado
shell-quote (CRITICAL) agent-browser 0.15.3 → node-simctl 7.7.5 → teen_process 2.3.3 (declara ^1.8.1) override pnpm.overrides1.9.0 lockfile resuelve 1.9.0 (única instancia). 1.8.4 cubre CVE-2026-9277 (GHSA-w7jw-789q-3m8p); 1.9.0 cubre ADEMÁS GHSA-395f-4hp3-45gv (patched ≥1.9.0) — cero advisories shell-quote
undici (25 inst.) jsdom 28.1.0 (^7.21.0), cheerio 1.2.0 (^7.19.0), webdriver 9.27.1 (^6.21.3) — cheerio YA era latest 1.2.0 refresh in-range pnpm update undici (solo lockfile) 7.25.0→7.29.0, 6.25.0→6.28.0 — ambos ≥ patched (7.28/7.29 y 6.27/6.28)
ws lighthouse 13.3.0 (^7.0.0), puppeteer-core/webdriver/webdriverio (^8.x) refresh in-range pnpm update ws (solo lockfile) 8.20.1→8.21.3, 7.5.10→7.5.13 (≥7.5.11 / ≥8.21.0)
vite peer autoinstalado de vitest 4.1.x/@vitejs/plugin-react (`^6 ^7
dompurify (monaco) @monaco-editor/react 4.7.0 → monaco-editor 0.55.1 pineaba dompurify 3.2.7 exacto bump monaco a 0.56.0 (peer-range >=0.25.0 <1, ya suelta el pin) + override escopado monaco-editor>dompurify: 3.4.13 (0.56.0 pinea 3.4.8 exacto, aún vulnerable a 3 advisories) dompurify unificada en 3.4.13 (directa + monaco) — ≥ todos los umbrales (3.4.9/3.4.11/3.4.12/3.4.13)
lodash agent-browser → node-simctl 7.7.5 → @appium/logger 1.7.1 pineaba 4.17.21 exacto (su 2.x exige node-simctl 9 = 2 majors) override escopado @appium/logger>lodash: 4.18.1 lodash unificada en 4.18.1 (4.17.21 eliminada)
sharp next 16.2.11 (^0.34.5) — 4 CVEs libvips <0.35.0 en runtime override escopado next>sharp: 0.35.4 (validado con build + suite) 0.35.4
vitest (colateral) refresh in-range 4.1.7→4.1.11 (requisito para re-resolver peer vite) specifiers package.json intactos (^4.0.18)

Toca package.json — solo bloque nuevo pnpm.overrides (9 líneas)

"pnpm": { "overrides": {
  "shell-quote": "1.9.0",
  "vite": "8.0.16",
  "@appium/logger>lodash": "4.18.1",
  "monaco-editor>dompurify": "3.4.13",
  "next>sharp": "0.35.4"
}}

Nota tradeoff: vite: 8.0.16 es pin exacto (existe 8.2.x) — elegido como target de la card; dependabot lo levantará cuando toque. Los 3 escopados (padre>hijo) no afectan al resto del árbol.

Exclusiones documentadas (evidencia, no slip)

  • next 16.3.x (item 7 opcional): pnpm audit --prod muestra 0 advisories abiertas en next 16.2.11; minor-stability 16.2 fue decisión aprobada en pipeline del PR chore(deps): higiene dependencias B1+B2+B5 — card b1569dc1 #9. Sin driver de seguridad → riesgo innecesario. 16.3.3 cura postcss (pinea 8.5.23) y arrastra sharp ^0.35.3 — recomendado como chore PR separado.
  • postcss 8.4.31 (4 advisories): pineado EXACTO por next 16.2.11 — override rompería el contrato interno de next. Se cura con el upgrade a 16.3.
  • extract-zip: B4, lane de security (sin fix upstream).
  • @opentelemetry/core 1.30.1 / deepmerge-ts 7.1.5 (dev, vía lighthouse→@sentry y vitest-chain): fix solo disponible en major (2.x / 8.x) — fuera de mandato B3, no estaban en el batch.

Hallazgo: config muerta pre-existing

El bloque root overrides de package.json (@asamuzakjp/css-color 5.1.11, basic-ftp 6.0.1, fast-xml-builder 1.2.0) nunca fue aplicado por pnpm 9 (no lee overrides npm-style de root; verificado empíricamente — shell-quote añadido ahí no movió el lockfile). Las 3 versiones son resolución natural. Se deja intacto para decisión aparte (remover o migrar).

Verificación

  • pnpm install --frozen-lockfile ✓ (CI gate)
  • pnpm build ✓ (Compiled successfully 14s — sharp 0.35.4, monaco 0.56.0, vite 8.0.16 bundleados)
  • pnpm test:run1064/1064 (96 files)
  • tsc --noEmit 172 errores = baseline main (sin delta)
  • pnpm audit: 13 → 7 locales (residuales = exclusiones arriba); --prod: 10 → 5
  • pnpm lint: fallo pre-existing (no existe eslint.config.* en main; CI lo ejecuta || true)

Residual esperado post-merge (re-scan GitHub)

~7: postcss×4 (next pin → 16.3 chore), extract-zip×1 (B4), otel-core×1 + deepmerge-ts×1 (major-only). El critical shell-quote queda CERRADO.

…fresh undici/ws + vite 8.0.16 + monaco 0.56 — card b97898c5

- pnpm.overrides: shell-quote 1.9.0 (CVE-2026-9277 GHSA-w7jw-789q-3m8p >=1.8.4
  + GHSA-395f-4hp3-45gv >=1.9.0; via teen_process ^1.8.1, dev-scope)
- pnpm.overrides: vite 8.0.16 (peer autoinstalado pegado a 8.0.14, advisory <=8.0.15)
- pnpm.overrides: @appium/logger>lodash 4.18.1 (pin exacto 4.17.21, code injection)
- pnpm.overrides: monaco-editor>dompurify 3.4.13 (monaco 0.56.0 pinea 3.4.8 exacto,
  3 advisories >=3.4.9/3.4.11/3.4.12)
- pnpm.overrides: next>sharp 0.35.4 (4 CVEs libvips <0.35.0, runtime)
- lockfile refresh in-range: undici 7.25.0->7.29.0 / 6.25.0->6.28.0 (cheerio ya latest),
  ws 8.20.1->8.21.3 / 7.5.10->7.5.13 (lighthouse), vitest 4.1.7->4.1.11
- monaco-editor 0.55.1->0.56.0 (peer-compatible >=0.25.0 <1, suelta pin dompurify 3.2.7)
- excluidos con evidencia: next 16.3.x (0 advisories abiertas en 16.2.11, minor-stability
  aprobada PR #9), postcss 8.4.31 (pin exacto de next, se cura con 16.3), extract-zip (B4
  security sin fix), @opentelemetry/core 1.30.1 y deepmerge-ts 7.1.5 (fix solo major)
- hallazgo: bloque root 'overrides' de package.json es config muerta (pnpm 9 no la aplica;
  las 3 entradas son resolucion natural), se deja intacta para decision aparte

Verificacion: frozen-lockfile OK, build verde (14s), test:run 1064/1064 (96 files),
tsc 172 = baseline main, pnpm audit 13->7 (residuales fuera de alcance B3 documentados)
@SabaTech-dev
SabaTech-dev merged commit f1d9aa5 into main Aug 26, 2026
4 checks passed
@SabaTech-dev
SabaTech-dev deleted the feat/deps-b3 branch August 26, 2026 23:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant