security(deps): pin @asyncapi packages to non-compromised versions#316
security(deps): pin @asyncapi packages to non-compromised versions#316alexander-sei wants to merge 1 commit into
Conversation
Several AsyncAPI npm packages were briefly compromised on 2026-07-14 (the "Miasma RAT" supply-chain incident, delivered via a post-install sync.js dropper). sei-js pulls @asyncapi/specs transitively through mint -> @asyncapi/parser, whose "^6.8.0" range can float up into the compromised 6.11.2 on any fresh install or lockfile regeneration. Pin the four affected packages to their latest non-compromised versions via pnpm.overrides so no install can resolve a malicious release: @asyncapi/specs 6.11.1 (in tree: 6.10.0 -> 6.11.1) @asyncapi/generator 3.3.0 (preventive; not in tree) @asyncapi/generator-helpers 1.1.0 (preventive; not in tree) @asyncapi/generator-components 1.0.0 (preventive; not in tree) No compromised version was ever present in the lockfile. The only resolved change is @asyncapi/specs 6.10.0 -> 6.11.1; the generator pins are defense-in-depth in case that toolchain is introduced later. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
PR SummaryLow Risk Overview The lockfile records those overrides and bumps the only resolved package in the tree— Reviewed by Cursor Bugbot for commit d2c1983. Bugbot is set up for automated code reviews on this repo. Configure here. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #316 +/- ##
=======================================
Coverage 79.75% 79.75%
=======================================
Files 83 83
Lines 1309 1309
Branches 160 189 +29
=======================================
Hits 1044 1044
+ Misses 265 259 -6
- Partials 0 6 +6 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Summary
Hardens sei-js against the 2026-07-14 AsyncAPI npm supply-chain
compromise ("Miasma RAT", dropped via a post-install
sync.js) bypinning the affected
@asyncapi/*packages to their latestnon-compromised versions through
pnpm.overrides.Background
During a ~4-hour window on 2026-07-14, these versions were malicious:
@asyncapi/specs@asyncapi/generator@asyncapi/generator-helpers@asyncapi/generator-componentsHow sei-js is exposed
sei-js has no direct
@asyncapidependency, but themint(Mintlify)docs CLI pulls it transitively:
mint → @asyncapi/parser@3.4.0 → @asyncapi/specs "^6.8.0"That
^6.8.0range floats, so a fresh install or lockfileregeneration could have resolved the compromised
6.11.2. Nocompromised version was ever actually in
pnpm-lock.yaml(it waspinned at
6.10.0), and thegenerator*packages are not in the treeat all.
What changed
package.json: added apnpm.overridesblock pinning the fourpackages above.
pnpm-lock.yaml:@asyncapi/specs 6.10.0 → 6.11.1(the onlyresolved version change) + the recorded
overridessection.generator*pins add no packages — they're defense-in-depthso the compromised releases can never enter the tree if AsyncAPI
codegen is adopted later.
deprecated:lines in the lockfile diff are registry metadatapnpm refreshed during the rewrite — no versions or integrity hashes
changed.
Verification
pnpm install --lockfile-onlyis idempotent (second run = no furtherchanges) →
--frozen-lockfileCI will pass.@asyncapi/specsnow resolves to a single version,6.11.1.Notes
dev/CI install (docs tooling); it is not published into any package's
metadata, so consumers of sei-js packages are unaffected.
🤖 Generated with Claude Code