chore(security): pin remaining vulnerable transitive deps#31
Merged
Conversation
Behebt die Dependabot-Alerts, für die es keinen eigenen PR gab, über yarn resolutions: - brace-expansion 1.1.13 -> 1.1.16 (via minimatch) - qs 6.14.2 -> 6.15.3 (via express) - uuid 8.3.2 -> 11.1.1 (via sockjs) - ws 7.5.10 -> 7.5.13 (via webpack-bundle-analyzer) - ws 8.20.0 -> 8.21.1 (via webpack-dev-server) Geprüft mit yarn typecheck, yarn build und einem sockjs-Smoketest. Geänderte Dateien: - package.json - yarn.lock
Dependency ReviewThe following issues were found:
License Issuespatches/minimatch-compat/package.json
yarn.lock
OpenSSF Scorecard
Scanned Files
|
GHSA-mh99-v99m-4gvg ist nur in brace-expansion 5.0.8 behoben, für die 1.x-Linie gibt es keinen Fix. Ein direkter Bump auf 5.x geht nicht, weil der CommonJS-Build dort ein Objekt statt einer Funktion exportiert und minimatch@3 (via serve-handler und docusaurus-lunr-search) genau diese callable API braucht. Deshalb ein kleiner lokaler Compat-Shim: brace-expansion wird per resolutions auf patches/brace-expansion-compat gemappt, der intern @isaacs/brace-expansion 5.0.1 nutzt (gleicher Fix, GHSA-7h2j-956f-4vf2 dort ab 5.0.1 behoben) und ihn unter der alten callable Signatur weiterreicht. Damit ist brace-expansion 1.x komplett aus dem Baum raus und das Expansion-Limit von 100000 greift. Geprüft mit yarn typecheck, yarn build inklusive lunr-Indexierung und einem serve-handler-Smoketest gegen den gebauten Output. Geänderte Dateien: - package.json - yarn.lock - patches/brace-expansion-compat/package.json (neu) - patches/brace-expansion-compat/index.js (neu)
Der vorherige Ansatz hat brace-expansion selbst ersetzt. Das funktioniert zwar technisch, der Dependency-Review-Scan sieht das Paket aber weiterhin als brace-expansion 1.x und schlägt an. Die Version künstlich über 5.0.7 zu heben wäre nur Kosmetik gegenüber dem Scanner. Stattdessen jetzt an der richtigen Stelle angesetzt: minimatch wird per resolutions auf einen Shim gemappt, der minimatch 10 unter der callable minimatch@3 API bereitstellt. minimatch 10 hängt selbst schon an brace-expansion ^5.0.5, damit löst brace-expansion regulär auf 5.0.8 auf und die verwundbare 1.x-Linie ist komplett aus dem Baum. Nichts wird maskiert, das Paket ist echt gepatcht. Beide Consumer (serve-handler, docusaurus-lunr-search) rufen minimatch ausschließlich als Funktion auf. Ein A/B-Vergleich gegen echtes minimatch 3.1.5 über neun Glob-, Globstar- und Brace-Patterns liefert identische Ergebnisse. Geprüft mit yarn typecheck, yarn build inklusive lunr-Indexierung (unverändert 37 Dokumente) und einem serve-handler-Smoketest, bei dem das Header-Glob-Matching über minimatch tatsächlich greift. Geänderte Dateien: - package.json - yarn.lock - patches/minimatch-compat/package.json (neu) - patches/minimatch-compat/index.js (neu) - patches/brace-expansion-compat/ (entfernt)
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.
Behebt die letzten offenen Dependabot-Alerts, für die Dependabot keinen eigenen PR erstellen konnte, weil es rein transitive Abhängigkeiten ohne passenden Direkt-Bump sind. Umgesetzt über
yarn resolutions.Für
wssind zwei getrennte Resolutions nötig, weil zwei Major-Linien parallel im Baum sind. Die glob-Form (**/parent/child) ist bei Yarn 1 Pflicht, die kurze Formparent/childgreift nur bei Top-Level-Dependencies.brace-expansion, der Sonderfall
GHSA-mh99-v99m-4gvg (high, DoS durch unbegrenzte Expansion) ist ausschließlich in 5.0.8 behoben, für die 1.x-Linie gibt es keinen Patch. Der direkte Weg scheitert daran, dass der CommonJS-Build von brace-expansion 5 ein Objekt exportiert statt einer Funktion, minimatch@3 aber
require('brace-expansion')(pattern)macht. Und minimatch@3 hängt noch anserve-handlerunddocusaurus-lunr-search.Gelöst über die andere Richtung: minimatch 10 hängt selbst bereits an
brace-expansion ^5.0.5. Ein kleiner Shim unterpatches/minimatch-compatstellt minimatch 10 unter der callable minimatch@3 API bereit und wird per resolutions eingehängt. Damit ist minimatch@3 raus, brace-expansion löst regulär auf das echte, gepatchte 5.0.8 auf, und es wird nichts vor dem Scanner versteckt.Beide Consumer rufen minimatch ausschließlich als Funktion auf, keine Nutzung von
.Minimatch,.filterund Co. Der Shim reicht diese Properties trotzdem durch, damit er die Form des ersetzten Moduls behält.Alle betroffenen Pakete sind Build- bzw. Dev-Zeit-Abhängigkeiten, nichts davon landet im generierten Static Site Output.
Getestet
yarn typecheckläuft durchyarn buildläuft durch, lunr-Indexierung unverändert bei 37 Dokumenten