Safety Academy · Story 16 · Poisoned dependency updates
Trusted package. Untrusted Tuesday.
A routine patch release brings something the release note forgot to mention.
Estimated 4 min read
A familiar package releases a small update.
Vera reviews a patch update for the team’s familiar tint-helper dependency, from 2.4.1 to 2.4.2. This example package has behaved well before. That history makes the update feel routine.
“We have used this for years.”

A familiar name does not establish that every future version is safe.
A stolen maintainer account publishes different code.
A stolen maintainer account publishes changed code under the legitimate package name. The scammer does not need a spelling mistake this time; he has the real publishing identity.
“Same publisher badge. New intentions.”

Package supply-chain attacks can use legitimate accounts and package names.
The update adds an unexpected install action.
Vera compares the update and finds an unexpected install script with an unexplained outbound connection. A colour helper suddenly wants to inspect its surroundings. She pauses rollout.
“A colour helper wants to inspect my environment?”

Unexpected behaviours are reasons to investigate, not proof that every install script is malicious.
Captain compares versions and origin evidence.
Captain checks available source and published-package evidence, new dependencies and origin records. Provenance can support where a release came from; it cannot prove the release behaves safely.
““Patch” describes a version. Not a safety certificate.”

A lockfile pins a version. It does not certify that the pinned version is harmless.
The team holds the suspect update.
The team holds the version and investigates in an environment without valuable secrets. If it had already executed, they would assess exposure and rotate affected credentials rather than merely pinning back.
“The build can wait. The keys cannot be unstolen.”

Use reviewed versions and monitor advisories. A test run can itself execute dependency code.
The compromised version never reaches users.
The suspect release never reaches users. A lockfile records a chosen version, not a safety verdict. The familiar package keeps its familiar name; each new release still earns review.
“Reliable package. Unreliable Tuesday.”

Trust a reviewed release process, not merely a familiar package name.
The useful bit
A real package can publish a malicious version after a maintainer compromise.
- Review every new release, even from a package and a maintainer you trust.
- Compare the published package with its source. An unexpected script or network call is a stop sign.
- Hold a suspect update and test it away from real secrets. Write down which versions you reviewed.
I already did this
If the update executed, stop its rollout and alert your security team. Investigate affected machines and revoke and replace exposed service credentials from a clean setup. Rolling back cannot erase stolen secrets. Use the wallet incident guide if wallet keys were accessible.