Replace vulnerable plugin release extractor - #132
Merged
Conversation
den-sq
marked this pull request as ready for review
August 14, 2026 18:05
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.
Summary
@terascope/fetch-github-releaseand its unpatchedextract-zipdependency with native GitHub asset downloads andnode-stream-zip's whole-archive extraction APIjs-yamlandnanoidlocks to their patched releasesCloses #131
Security behavior
downloadPluginremains the only public plugin-release install entry point.node-stream-zip.node-stream-zip@1.16.0has no runtime dependencies and its extractor is not affected by theextract-zipadvisory.Validation
npm ci(735 packages audited, 0 vulnerabilities)npm run audit:release(0 vulnerabilities)npm run test:release(both release test files pass, including the normal plugin download/extraction integration)npm run buildgit diff --checkThe clean install still prints existing deprecation notices through unchanged build-tool dependency chains. The build also prints the existing Google Fonts DNS warning when run in the restricted sandbox; neither warning is introduced by
node-stream-zip.Shared-basis audit
downloadPluginlifecycle,addLocalPlugin, the release audit validator, release CI, and the exact@terascope/fetch-github-releaseimplementation previously used by this call site.downloadPluginas the owning entry point and preserved its established release and temporary-directory lifecycle. The normal Node release-test seam exercises that public download/extract behavior.unzipper, directyauzlentry processing, and a package override. Selectednode-stream-zipbecause it owns the complete extract-to-directory operation, ships TypeScript declarations, and has no runtime dependencies; directyauzlprocessing and an override would leave Ouroboros owning extra extraction machinery.node-stream-zipas a production dependency because Electron Vite externalizes main-process dependencies.