fix(security): CVE-2026-27212 and CVE-2026-26996 addressed for release/3.12#5831
Conversation
Various dependency updates as a result of CVE-2026-26996. Ultimately CVE-2026-26996 was ignored because it is only exposed in itk-wasm via CLI and OHIF's other use of minimatch is limited to build/dev environments.
| "css-loader": "6.11.0", | ||
| "dotenv": "8.6.0", | ||
| "eslint": "8.57.1", | ||
| "eslint": "10.0.1", |
There was a problem hiding this comment.
ESLint 10 requires flat config format
ESLint 10 dropped support for the legacy .eslintrc configuration format and only supports the flat config (eslint.config.js). The repository currently uses .eslintrc.json at the root. While this @externals/devDependencies package is a dependency manifest for external add-ons (not the main project), any add-on consuming this eslint version would need a flat config file.
Additionally, several plugins listed here have peer dependency constraints that may conflict with eslint 10:
eslint-config-react-app@7.0.1has a peer dependency oneslint ^8.0.0eslint-plugin-node@11.1.0has a peer dependency oneslint >=5.16.0 <9.0.0eslint-config-prettier@7.2.0supportseslint >=7.0.0but hasn't been tested with 10
If external add-ons that consume these dependencies actually run eslint, this could cause peer dependency warnings or runtime failures. Consider verifying that eslint 10 is intentional here, or pin to eslint@9.x which still supports the ESLINT_USE_FLAT_CONFIG=false escape hatch.
There was a problem hiding this comment.
Ok @greptileai the dependency was updated. Please check again.
Context
GHSA-hmx5-qpq5-p643
GHSA-3ppc-4f35-3m26
Changes & Results
CVE-2026-27212 patched.
Various dependency updates as a result of CVE-2026-26996. Ultimately CVE-2026-26996 was ignored because it is only exposed in itk-wasm via CLI and OHIF's other use of minimatch is limited to build/dev environments.
Testing
All CLI checks and builds should work.
Automated tests should all pass.
Checklist
PR
semantic-release format and guidelines.
Code
etc.)
Public Documentation Updates
additions or removals.
Greptile Summary
This PR addresses CVE-2026-27212 and CVE-2026-26996 on the
release/3.12branch through a combination of dependency removals, version bumps, and a security audit ignore-list update.swiperremoved fromplatform/ui,istanbulandpatch-packageremoved from root, andbabel-plugin-istanbulbumped to 7.0.1. Several unused eslint-related packages (@babel/eslint-parser,eslint-loader,babel-plugin-module-resolver,eslint-plugin-flowtype,eslint-webpack-plugin) removed across multiple extension/mode packages and CLI templates..circleci/config.yml) with clear justification that OHIF's usage of minimatch viaglob/itk-wasmis limited to CLI and build/dev environments, not exposed to end users.addOns/externals/devDependencies: ESLint ecosystem bumped significantly (eslint 8→10,@typescript-eslint/*6→8,eslint-plugin-react-hooks4→7,eslint-config-react-app6→7,serve14.2.4→14.2.5). The eslint 10 bump warrants attention as it drops legacy.eslintrcconfig support — though this package is a dependency manifest for external add-ons and doesn't directly affect the main project's linting.bun.lock,yarn.lock) updated accordingly with large diffs from transitive dependency resolution.Confidence Score: 4/5
addOns/externals/devDependencies/package.json— eslint 10.0.1 is a major version bump that drops legacy config support and may conflict with peer dependencies of co-listed plugins.Important Files Changed
istanbulandpatch-packagedevDependencies, bumpsbabel-plugin-istanbulfrom 7.0.0 to 7.0.1. All removed packages are confirmed unused in the codebase.swiperdependency (8.4.7). Confirmed no imports of swiper exist in the platform/ui source code.@babel/eslint-parser,babel-plugin-module-resolver,eslint, andeslint-loader. None are referenced in source code or eslint configs.@babel/eslint-parser,eslint, andeslint-loader. Consistent cleanup matching other extension/mode packages.@babel/eslint-parser,eslint, andeslint-loader. Consistent cleanup matching other extension/mode packages.@babel/eslint-parser,babel-plugin-module-resolver,eslint, andeslint-loaderfrom the CLI extension template. Keeps templates aligned with the updated dependency strategy.@babel/eslint-parser,eslint, andeslint-loaderfrom the CLI mode template. Consistent with extension template cleanup.Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A["CVE-2026-27212"] --> B["Remove vulnerable deps"] A --> C["Bump babel-plugin-istanbul\n7.0.0 → 7.0.1"] B --> D["Remove swiper\nfrom platform/ui"] B --> E["Remove istanbul,\npatch-package\nfrom root"] B --> F["Remove unused eslint pkgs\nfrom extensions/modes/templates"] G["CVE-2026-26996\n(minimatch)"] --> H["Add to CI ignore list\n.circleci/config.yml"] H --> I["Justification: only used\nin CLI & build/dev contexts"] J["Dependency Modernization\naddOns/externals"] --> K["eslint 8 → 10"] J --> L["@typescript-eslint/* 6 → 8"] J --> M["eslint-plugin-react-hooks 4 → 7"] J --> N["eslint-config-react-app 6 → 7"] J --> O["serve 14.2.4 → 14.2.5"] B --> P["Update lock files\nbun.lock + yarn.lock"] C --> P J --> PLast reviewed commit: bb4a3c8