fix(deps): bump js-yaml to 4.3.2 to close CVE-2026-59870 - #4028
Conversation
js-yaml < 4.3.1 allows quadratic CPU consumption through !!omap resolution, and < 4.3.0 through YAML merge-key chains. Both are reported as high severity against the runtime scope, since lib/services/express.js parses the OpenAPI spec with js-yaml at boot. Stays on the 4.x line: 4.3.2 is inside the existing ^4.2.0 range, so this is a lockfile-level fix with no source change. The v5 line drops the ESM default export and switches load() to CORE_SCHEMA, which would need a code migration and carries behaviour risk on the OpenAPI spec parsing.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. WalkthroughThe pull request updates the ChangesDependency update
Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk: ⚪ Minimal · up to This localized dependency update moves js-yaml to 4.3.2 to address the reported vulnerabilities while remaining within the existing v4 range; no actionable merge-blocking risk remains beyond normal checks and review. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Description checkExplanation The description explains what changed, why the 4.3.2 version was selected, the affected runtime path, the advisories, and the related Dependabot pull request. It does not follow the repository template and omits explicit scope, risk level, validation results, guardrail confirmations, and reviewer notes. Resolution Restructure the description using the repository template. Add the impacted module, cross-module impact, risk level, validation results for lint and tests, manual-check status, guardrail confirmations, security and mergeability notes, and a rollback plan. Keep the existing advisory and js-yaml 4.x compatibility rationale. Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4028 +/- ##
=======================================
Coverage 94.06% 94.06%
=======================================
Files 170 170
Lines 5833 5833
Branches 1867 1868 +1
=======================================
Hits 5487 5487
Misses 283 283
Partials 63 63
Flags with carried forward coverage won't be shown. Click here to find out more. Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
What
Bumps
js-yamlfrom 4.2.0 to 4.3.2. Lockfile + manifest only, no source change.Why
Two high-severity Dependabot alerts are open against the runtime scope:
!!omapresolution (CVE-2026-59870)>= 4.0.0, < 4.3.1>= 4.0.0, < 4.3.0Runtime scope is correct:
lib/services/express.jsparses the OpenAPI spec withjs-yamlat boot.Why 4.3.2 and not 5.x
Dependabot proposed #3909 (4.2.0 -> 5.1.0) for the same alerts, but that PR is red and cannot ship as-is:
defaultexport.lib/services/express.js:17andmodules/tasks/tests/tasks.openapi-operationid.unit.tests.js:2both useimport YAML from 'js-yaml', so v5 breaks application boot, not only tests (lib/app.jsimportsexpress.js).load()fromDEFAULT_SCHEMAtoCORE_SCHEMA(no!!mergeby default) and makesload('')throw — a behaviour change on the exact code path that serves the OpenAPI docs.4.3.2 is inside the existing
^4.2.0range, closes both advisories, and needs no migration. The v5 move stays a separate, deliberate decision.Refs #3909
Summary by CodeRabbit