[security]: Resolve dependency track vulnerabilities - #32
Open
deeonwuli wants to merge 2 commits into
Open
Conversation
Contributor
Author
|
Dependent on PR #31 |
xurxodev
requested changes
Aug 20, 2026
xurxodev
left a comment
Contributor
There was a problem hiding this comment.
Thanks @deeonwuli
Can you leave a complete description PR with the realized work equal than other Prs about this.
deeonwuli
changed the base branch from
development
to
feature/test_github_actions
August 21, 2026 16:05
deeonwuli
marked this pull request as ready for review
August 21, 2026 16:18
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📌 References
RESOLUTIONS.md. This new file gives the reason, the advisory and the removal condition for each entry.📝 Implementation
This PR corrects the Dependency-Track findings. It also removes their cause. The
resolutionsblockheld packages at exact versions. An exact version cannot receive a patch.
Resolutions: 21 entries become 42 entries
vulnerable version in the tree:
qs@6.14.2is inside GHSA-q8mj-m7cp-5q26,brace-expansion@1.1.12is below the patch 1.1.17, and
axios@1.13.5is inside GHSA-gcfj-64vw-6mp9.cypress,eslint,vite,jsdomand i18n chains.picomatchfor GHSA-c2c7-rcm5-vvqj. picomatch has two major linesin the tree. A bare entry would stop
micromatch@4.semveranddebugheld their package below the range that the parentsdeclare.
path-to-regexphad no effect.i18next: 19.8.5stays an exact version.@dhis2/d2-i18nneeds that release.dependencies.axiosanddependencies.lodashmove to the same ranges as their entries.babel-core: 6.26.3is removed. The project does not use babel 6.@babel/corewas the exact version7.15.5. It is now^7.29.6.GHSA-4x5r-pxfx-6jf8 patches at 7.29.6, and the exact version prevented that release. It also held
@babel/helpersat 7.15.4, which GHSA-968p-4wvh-cqc8 includes. Both now resolve to 7.29.7.lodashentry to upgrade lodash. Two@eyeseeteapackages ask for the exactversion 4.17.21. Without the entry, lodash moves down to that vulnerable version.
Vite tool set
vite^5.2.0^6.4.3vitest^1.5.0^3.2.6vite-plugin-checker^0.6.4^0.9.3@types/lodash4.14.1724.17.24vite 5.4.21 declares
esbuild@^0.21.3. The Syft scan reports the Go standard library in that binary.The tree now holds vite 6.4.3 and vite 7.3.6, and the entry
esbuild: ^0.28.1gives one binary toboth.
Two changes go with this upgrade:
vite.config.tssetsESBUILD_TARGET. esbuild 0.28 does not build for Safari 14.0. The constant isthe default Vite "modules" target with
safari14.1in place ofsafari14. Do not remove it whilethe
esbuildentry is in the file.basicreporter. Thetestscript is nowvitest run.vite.config.tssetsreporters: [["default", { summary: false }]], which gives the same output.Stale lockfile: 14 findings with no new entry
An advisory can move after an analysis. The GitHub Advisory Database changed the patched version of
GHSA-2v37-7h3g-55p8 (
nanoid) to 3.3.18 on 2026-08-13, and it added GHSA-jmr9-qjv8-65gv(
extract-zip) on 2026-08-12.On 2026-08-21 we compared each of the 1267 resolved versions in
yarn.lockwith the GitHub AdvisoryDatabase. 20 package findings occurred. For 14 of them, the range that the parent declares already
permitted the patch, and the lockfile held an older resolution. We removed those lockfile blocks and
did
yarn installagain:nanoidpicomatchmicromatchajvjoiyamlhosted-git-info@sideway/formula@babel/helpers@babel/runtime-corejs3@babel/coreThe
picomatchrow also correctsRESOLUTIONS.md. The file recordedpicomatch@2.2.2in the Yarn 1tree as a cost of the per-parent entries. The entries were correct. The lockfile was the reason:
micromatchasks for^2.0.5andfast-globasks for^2.2.1, and both ranges permit 2.3.2. Thetwo scans now agree.
yarn up -R <package>does not apply here. That is a Yarn Berry command, and this project usesYarn 1. Remove the block from
yarn.lock, doyarn install, then read the new version fromyarn.lock.CI
.github/workflows/main.ymlpasses theDTRACK_API_KEYsecret to the shared master workflow. TheDependency-Track scan needs this secret.
Findings that stay open
Three findings have no correction.
RESOLUTIONS.mdrecords each one with its chain, its reachabilityand the condition to examine it again:
extract-zip@2.0.1cypress@8.3.1asks for the exact 2.0.1. 2.0.1 is the newest release. The advisory records no patch.@cypress/request@2.88.6cypressasks for^2.88.6.elliptic@6.6.1Each of the three is a development tool. None is in the application bundle.
Dependency-Track ranks a finding by its CVSS score, but the GitHub Advisory Database sets its own
severity. The two values disagree in both directions.
nanoidis high in the GitHub AdvisoryDatabase and 5.9 in CVSS.
ellipticis low in the GitHub Advisory Database and 5.6 in CVSS. Read bothvalues.
The scanner compares 17 components by CPE and not by package URL. It then compares the short name with
a different product, for example
progress@2.0.3with Progress Telerik UI for WinUI. No entry cancorrect these findings. They occur on both sides of the CI comparison, so they do not stop the
workflow.
RESOLUTIONS.mdlists them.Four advisories in the reports are withdrawn: GHSA-gv7w-rqvm-qjhr, GHSA-qmq6-f8pr-cx5x,
GHSA-p5wg-g6qr-c7cg and GHSA-7gc6-qh9x-w6h8. Do not do work for them.
🎨 Screenshots
None. This PR changes no user interface.
🔥 Notes for the reviewer
Verification
yarn install --frozen-lockfiletsc --noEmityarn lintyarn testyarn localizehandlebarsandnode-gettext.yarn build-folderrequire()of@cypress/request/lib/multipart.jsandlib/auth.jsuuidentry.Costs to accept
linkify-it: ^5.0.2forces a major upgrade onreact-linkify. The interface does not change.tough-cookie: ^4.1.4anduuid: ^11.1.1change the Cypress request client. uuid 11 is an ESmodule. Do not set
.nvmrcbelow Node 22.ansi-regex: ^5.0.1holds onestrip-ansicopy in thevite-plugin-checkerchain one major belowits request. The 6.x line is not vulnerable.
picomatchentries, because their parents are transitive. Berry appliesthem, and CI scans with Berry.
vite-plugin-node-stdlib-browserdeclares a peer dependency ofvite@^2.0.0 || ^3.0.0 || ^4.0.0.This project now uses vite 6. Yarn shows a warning at each install. The build passes.
Tests not done
Do these tests before you approve:
yarn cy:e2e:run. Thetough-cookieentry and theuuidentry change the Cypress request client.linkify-itupgrade.