RePointing Shows Why Scanning the Latest Commit Isn't Supply-Chain Defense
Shai Hulud's newly reported return joins ongoing and recently ended campaigns across npm, GitHub, RubyGems and Terraform. Nearly every defense that works against them checks the bytes you fetch, not the repository you trust.
FakeGit/SmartLoader operators adopted a technique called RePointing in early October, Risky.Biz reports. The attacker deletes a file from a repository and points its download link at an older, malicious copy. The current tree stays clean. A scanner or reviewer reading the latest commit passes the repo, while anyone following the download link gets the old payload. The defense is to verify the bytes actually fetched. Pull by a commit SHA that was reviewed, or check the artifact's digest against a recorded value.
Checking the fetched bytes rather than the trusted name covers nearly every campaign on the week's list.
| Campaign | Ecosystem | Reported scale | Control that addresses it |
|---|---|---|---|
| Shai Hulud, via the Tensorlake package | npm | Worm behavior; multiple vendors tracking | Lockfile audit, publish-token rotation, restricted install scripts |
| GhostAction | GitHub | 772 public repos compromised, 31 Aug to 30 Sep | Workflow and secrets audit; Actions pinned to SHAs |
| FakeGit / SmartLoader | GitHub | 17,610 repos | Digest-verified downloads |
| Malicious gems and MALFEX | RubyGems, npm | 42 gems aimed at crypto and web3; MALFEX active on npm since 2023 | Allowlists, provenance checks, review of new transitive dependencies |
| TraderTraitor | Terraform providers | Attributed by Zscaler | Pinned providers, committed .terraform.lock.hcl, mirrored approved providers |
A malicious Firefox add-on campaign rounds out the list. Reports do not describe how it reaches developers.
Why CI is where this lands
We think exposure concentrates in build systems. A CI runner typically holds package-publish tokens and cloud credentials in the same place as repository write access. It also installs dependencies with lifecycle scripts enabled by default. That is why the defenses in the table keep returning to tokens and install scripts. Trade-off: disabling install scripts breaks packages that compile native code at install time. Plan for a short allowlist of exceptions, not a clean switch.
Coverage of this year's GhostAction campaign reports its scale. Vendor write-ups are the place to learn which workflow pattern is at risk before assuming one. No affected Tensorlake versions have been published, so a lockfile hit means investigate, not assume compromise.
Order of operations
- Find exposure first. Search lockfiles, CI caches and container images for the named packages and for unpinned Terraform providers.
- Contain. Check the GitHub organization for GhostAction indicators. Rotate npm and GitHub tokens wherever a hit turns up.
- Close the class. Pin Actions and downloaded artifacts to reviewed SHAs or digests. Commit lockfile integrity hashes.
What to do
Search lockfiles, CI caches and container images this week for Tensorlake, the 42 flagged RubyGems, MALFEX-linked npm packages and unpinned Terraform providers, and rotate npm and GitHub tokens on any hit.
Pin GitHub Actions and downloaded artifacts to reviewed commit SHAs or verified digests this sprint. Commit .terraform.lock.hcl and lockfile integrity hashes, and disable package install scripts in CI where builds allow.