Skip to content

R11DT-4173 - Bump vulnerable deps in swagger-ui (js-yaml, dompurify, brace-expansion) - #207

Merged
OS-miguelfreitas merged 1 commit into
b11from
R11DT-4173-fix-vulnerabilities-swagger-ui
Aug 14, 2026
Merged

OS-miguelfreitas merged 1 commit into
b11from
R11DT-4173-fix-vulnerabilities-swagger-ui

Conversation

@mvios

@mvios mvios commented Aug 14, 2026 •

Copy link
Copy Markdown

Summary

Remediates three unresolved dependency vulnerabilities flagged against the OutSystems swagger-ui
fork (b11) via surgical patch-level bumps, a regenerated lockfile, and rebuilt vendored dist/
bundles. All three fixes are patch releases within the same major/minor line, so no src/ changes
are required
(contrast the immutable v3→v4 migration in #206 / R11DT-4120).

Jira: R11DT-4173

Changes

Direct dependencies (package.json):

Package From To Advisory
js-yaml =4.3.0 =4.3.1 GHSA-5p4m-2wfm-xmqj (High, DoS — !!omap O(n²))
dompurify =3.4.12 =3.4.13 GHSA-55q2-fjhq-7xh7 (Medium, XSS — sanitization hook)

Transitive (npm overrides):

Package From To Advisory
@swagger-api/apidom-reference → brace-expansion >=5.0.8 >=5.0.9 CVE-2026-69152 (High, DoS — bypass of the CVE-2026-14257 fix)

Regenerated package-lock.json and rebuilt dist/ bundles (Platform vendors the prebuilt
artifacts). dist/index.html cache-busting suffixes refreshed by the build.

Verification

  • npm audit --omit=dev (production scope) → 0 vulnerabilities; all three advisories absent.
    (Note: security-audit:prod wrapper npm-audit-ci-wrapper is broken on Windows + Node 20 with
    spawn EINVAL — unmaintained tool, unrelated to this change; verified via npm audit directly.)
  • Lockfile: all in-scope resolved instances on patched versions; transitive ^4.1.0 js-yaml
    consumers dedupe onto 4.3.1; apidom brace-expansion resolves to 5.0.9.
  • Rebuilt swagger-ui-bundle.js embeds dompurify version="3.4.13".
  • jsdom render smoke: SwaggerUIBundle constructs and renders a representative spec (title +
    operation) — no runtime regression.
  • git diff --name-only src/ empty — no source changes.
  • Source maps are byte-identical (equal-length version swaps, no src/ edits).

Render parity is authoritatively gated by Platform's RESTService_swaggerUiTests golden
comparisons, which run on the paired Platform PR (browser tests deferred to CI, mirroring #206).

Out of scope

Pre-existing, non-shipped npm audit noise: dev-tooling js-yaml@3.15.0 (jest) and
brace-expansion 1.x/2.x copies (eslint/rimraf/babel tooling) are not shipped in dist/ and are
left untouched per surgical scope.

Related

…brace-expansion)

Remediate three unresolved dependency findings against the fork by bumping each
affected component to its patched version, regenerating package-lock.json, and
rebuilding the vendored dist/ bundles. All three are patch-level bumps within the
same major/minor line, so no src/ changes are required (contrast R11DT-4120's
immutable v3->v4 migration).

Direct dependencies:
- js-yaml    =4.3.0  -> =4.3.1   (GHSA-5p4m-2wfm-xmqj; !!omap O(n^2) DoS)
- dompurify  =3.4.12 -> =3.4.13  (GHSA-55q2-fjhq-7xh7; sanitization-hook XSS)

Transitive (npm overrides):
- @swagger-api/apidom-reference > brace-expansion  >=5.0.8 -> >=5.0.9
  (resolves 5.0.9; CVE-2026-69152 DoS, bypass of the CVE-2026-14257 fix)

Rebuilt dist/ bundles (Platform vendors the prebuilt artifacts); dist/index.html
cache-busting suffixes refreshed.

Verified: npm audit (--omit=dev / production scope) clears all three advisories
(0 prod vulnerabilities); rebuilt swagger-ui-bundle.js embeds dompurify 3.4.13;
jsdom render smoke passes (SwaggerUIBundle constructs and renders spec); no src/
changes. Source maps are byte-identical (equal-length version swaps, no src edits).

Out of scope (pre-existing, not shipped in dist): dev-tooling js-yaml 3.15.0 (jest)
and brace-expansion 1.x/2.x copies remain; left untouched per surgical scope.
@mvios
mvios requested a review from a team as a code owner August 14, 2026 09:46
@mvios mvios self-assigned this Aug 14, 2026
@OS-miguelfreitas
OS-miguelfreitas merged commit a3acd30 into b11 Aug 14, 2026
10 checks passed
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.

5 participants