This May Be the Worst One

## Metadata
- Author: [[ThePrimeTime]]
- Full Title: This May Be the Worst One
- Category: #articles
- Document Note: ---
tags: [Assign relevant tags or keywords to the notee to facilitate organization and retrieval. Add a # before each tag. Tags cannot have special characters. Do not use the tag #articles]
- #supplychain
- #npm
- #security
Author: YouTube creator (channel not specified in transcript)
Source: YouTube video (transcript)
Reference: https://www.youtube.com/watch?v=69F9IuBWb-E
date created: {{date:YYYY-MM-DD}} {{time:HH:mm}}
---
# ๐ชฑ Title: โThis May Be the Worst Oneโ โ Shai-Hulud npm Worm & Supply-Chain Lessons
## ๐งญ Table of Contents:
- ๐ [๐ Summary](#-summary)
- ๐ [๐ Main Content](#-main-content)
- ๐ [๐๏ธ Notes โ Timestamped Subheadings (Clickable to YouTube)](#๏ธ-notes--timestamped-subheadings-clickable-to-youtube)
- ๐ [๐ References](#-references)
- ๐ [๐ฃ๏ธ Paraphrase](#-paraphrase)
- ๐ [๐ฐ Newsletter](#-newsletter)
- ๐ [โ
Action Items](#-action-items)
- ๐ [๐งช Hypotheses](#-hypotheses)
- ๐ [๐ Methodology](#-methodology)
- ๐ [โ Questions](#-questions)
- ๐ [๐ฎ Future Research](#-future-research)
- ๐ [๐ก Implications](#-implications)
- ๐ [๐ง Learning Styles Assessment](#-learning-styles-assessment)
- ๐ [๐ Accessibility Assessment](#-accessibility-assessment)
- ๐ [๐ DEIB Assessment](#-deib-assessment)
- ๐ [โ
Logical Validity & Tone](#-logical-validity--tone)
- ๐ [๐ก๏ธ DARVO Analysis](#-darvo-analysis)
- ๐ [๐ SEO Evaluation](#-seo-evaluation)
- ๐ [๐ฏ Conclusion](#-conclusion)
### ๐ References: Include a list of sources consulted and cited in the article.
- ๐ Primary: Video transcript โ https://www.youtube.com/watch?v=69F9IuBWb-E
- ๐ Mentioned concepts/tools: TruffleHog, GitHub Actions, post-install scripts, semantic-versioning (no external sources cited in the video)
---
## ๐ Summary:
- ๐ชฑ A worm-style npm attack (โShai-Huludโ) propagated repo-to-repo by stealing tokens and mutating CI to push malicious patch versions.
- ๐ The presenter stresses version pinning, smaller dependency trees, and CI/token hardening as practical defenses.
- ๐งช The attack abused post-install scripts and secret-scanning tooling to exfiltrate credentials, then auto-republished.
- ๐งฑ Even careful teams can be exposed through floating transitive dependencies.
---
## ๐ Main Content:
- ๐ง **Threat model shift:** Not just โuser installs a bad package.โ The worm targets maintainers and CI to **manufacture** more bad packages.
- ๐งฐ **Technique stack:** Post-install runner โ secrets scanner abuse โ token capture โ GH Actions edits โ publish wormed patch versions.
- ๐งฑ **Amplifiers:** Auto-upgrade ranges (`^`/`~`), dormant packages revived with tiny version bumps, and long-lived CI tokens.
- ๐งฏ **Defensive stance:** Pin versions; whitelist or block post-install; rotate to short-lived tokens; restrict CI permissions; prune trivial dependencies.
---
## ๐๏ธ Notes โ Timestamped Subheadings (Clickable to YouTube)
### ๐ฅ [0:00โ0:10 โข Third npm incident in a week (hook)](https://www.youtube.com/watch?v=69F9IuBWb-E&t=0s)
- ๐งท Sets urgency: โHow is this still happening?โ Repetition primes risk awareness.
- ๐งญ Frames topic: supply-chain attacks as a recurring systemic failure.
### ๐ช [0:16โ0:33 โข โShai-Huludโ name & Dune riff](https://www.youtube.com/watch?v=69F9IuBWb-E&t=16s)
- ๐งฉ โTokens must flowโ gag connects theme: tokens as the attackโs currency.
- ๐ญ Humor lowers the shield while keeping focus on credential theft.
### ๐งฌ [0:31โ1:18 โข Why this one is worse: lateral spread](https://www.youtube.com/watch?v=69F9IuBWb-E&t=31s)
- ๐ฆ Not only exfiltration; it **self-propagates** repoโrepo via CI mutation.
- ๐งฐ Blends multiple attack modes: phishing + worming + supply-chain tampering.
### ๐ฃ [1:21โ1:40 โข Likely phishing origin](https://www.youtube.com/watch?v=69F9IuBWb-E&t=81s)
- ๐งต Initial foothold from a smaller repository compromise.
- ๐ค Dormant package revived; audience warned about โlong-quietโ packages.
### ๐งช [1:40โ1:58 โข Malicious patch bumps (0.0.5 / 0.0.6)](https://www.youtube.com/watch?v=69F9IuBWb-E&t=100s)
- ๐งจ Tiny semver changes smuggle the payload.
- ๐งญ Lesson: treat patch bumps as untrusted until reviewed.
### ๐ [2:01โ2:25 โข โDo not auto-upgrade patch versionsโ](https://www.youtube.com/watch?v=69F9IuBWb-E&t=121s)
- ๐งฑ Floating ranges widen your blast radius.
- ๐ Even if you pin, upstreams can still float; transitive risk remains.
### โ๏ธ [2:47โ3:06 โข Dependency automation critique](https://www.youtube.com/watch?v=69F9IuBWb-E&t=167s)
- ๐ Over-automation without review โ โwalking into hell.โ
- ๐งฎ Policy hint: favor manual promotion + release note checks.
### ๐งฐ [3:07โ3:19 โข Post-install again, but different payload](https://www.youtube.com/watch?v=69F9IuBWb-E&t=187s)
- ๐งช Compares to prior NX incident; similar vector, new behavior.
### ๐ต๏ธ [3:29โ3:41 โข TruffleHog abuse](https://www.youtube.com/watch?v=69F9IuBWb-E&t=209s)
- ๐ Legit secret scanner repurposed for credential harvesting.
- ๐งท Reminder: dual-use tools require context-aware controls.
### ๐งต [4:01โ4:21 โข CI pivot: mutate GitHub, republish](https://www.youtube.com/watch?v=69F9IuBWb-E&t=241s)
- ๐งช Edits GH Actions, injects post-install, publishes infected patches.
- ๐งฑ Turns victims into amplifiers across the dependency graph.
### ๐ฅ๏ธ [4:36โ4:50 โข Workstations and CI both at risk](https://www.youtube.com/watch?v=69F9IuBWb-E&t=276s)
- ๐ Any environment holding tokens becomes an entry point.
- ๐ Emphasizes token scope, rotation, and short lifetimes.
### ๐ [4:52โ5:12 โข From ~40 to ~180 packages (fast growth)](https://www.youtube.com/watch?v=69F9IuBWb-E&t=292s)
- ๐งฎ Uses hyperbole (โ24Bโ) as a joke; still signals exponential spread.
- ๐งญ Practical read: watch for fast-moving advisories and revoke early.
### ๐ข [5:12โ5:25 โข Ironic vendor infections](https://www.youtube.com/watch?v=69F9IuBWb-E&t=312s)
- ๐ญ Irony aside, message is clear: **no one** is exempt from process debt.
### ๐จ [5:47โ6:12 โข @ctrl/tinycolor versions flagged](https://www.youtube.com/watch?v=69F9IuBWb-E&t=347s)
- ๐งช โ4.11 / 4.12 bad; 4.20 safeโ per presenterโs riff.
- ๐งญ Action: verify advisories; donโt trust hearsayโcheck your lockfile.
### ๐ช [6:15โ6:37 โข Fewer dependencies thesis](https://www.youtube.com/watch?v=69F9IuBWb-E&t=375s)
- ๐งฐ For single-function needs, write a vetted snippet.
- ๐งฑ Shrink attack surface; reduce transitive surprises.
### ๐ค [6:34โ7:02 โข AI can generate simple utilities](https://www.youtube.com/watch?v=69F9IuBWb-E&t=394s)
- ๐งช Use with review and tests; donโt trade one risk for another.
- ๐งญ Codify a checklist before adopting AI-generated code.
### ๐ค [7:00โ7:16 โข Collective security responsibility](https://www.youtube.com/watch?v=69F9IuBWb-E&t=420s)
- ๐งฑ You pinning isnโt enough if upstreams float.
- ๐งญ Ecosystem norms matter: SBOMs, attestations, policy.
### ๐ฌ [7:16โend โข Tone & sign-off](https://www.youtube.com/watch?v=69F9IuBWb-E&t=436s)
- ๐ญ Satirical closer (โI use Elixirโ) to keep energy high.
- ๐ฃ Call to engage; implicit nudge toward shared security culture.
---
## ๐ References:
- ๐ Video transcript: https://www.youtube.com/watch?v=69F9IuBWb-E
- ๐ In-video mentions (no external cites provided): TruffleHog, GitHub Actions, @ctrl/tinycolor, NX incident, post-install scripts
---
## ๐ฃ๏ธ Paraphrase:
- ๐งฉ **Version discipline, reworded:** Treat patch bumps as hostile until proven safe. Float nothing on build paths. Promote with human review and clear provenance.
- ๐งฏ **Dependency minimalism, reworded:** For small utilities, a well-tested local function beats a heavy package. Fewer deps mean fewer places for worms to hide.
---
## ๐ฐ Newsletter:
- ๐ชฑ **npmโs Shai-Hulud worm:** A repo-to-repo spread used post-install and CI token abuse to publish malicious patch versions at speed.
- ๐ง **Fix it fast:** Pin versions, rotate tokens, lock down GH Actions, and prune trivial deps. Add SBOM + provenance to your release checklist.
- ๐งญ **For WordPress builders:** If Node sits in your build chain, treat it like prodโdeny unvetted post-install, require reviews, and track transitive risk.
- ๐ฅ Watch: https://www.youtube.com/watch?v=69F9IuBWb-E
---
## โ
Action Items:
- ๐ **Pinning policy:** Enforce exact versions for build-time deps; block `^`/`~` in CI for production paths.
- ๐๏ธ **Token hygiene:** Rotate all PATs; move to short-lived OIDC; least privilege on publish
- Summary: https://twitch.tv/ThePrimeagen - I Stream 5 days a Week
Become A Great Backend Dev: https://boot.dev/prime (I make courses for them)
This is also the best way to support me is to support yourself becoming a better backend engineer.
https://twitter.com/terminaldotshop - Order coffee over SSH!
ssh terminal.shop
Discord: https://discord.gg/ThePrimeagen
### LINKS
https://www.npmjs.com/package/@ctrl/tinycolor
https://thehackernews.com/2025/09/40-npm-packages-compromised-in-supply.html
https://www.ox.security/blog/npm-2-0-hack-40-npm-packages-hit-in-major-supply-chain-attack/
Great News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen
Kinesis Advantage 360: https://bit.ly/Prime-Kinesis
- URL: https://www.youtube.com/watch?v=69F9IuBWb-E
I don't understand how this keeps happening. How are we here? Three times in a single week. Yes, another supply chain attack happened again on npm. And yes, a lot and a lot of repositories were affected. Now, this one code named Shy Halude. Obviously, the tokens must flow. Okay, the tokens. Just give me the tokens. There are so many twists to this one. This one is an absolute masterclass in just destroying an ecosystem. Now
what makes Shy Hulu different here is that instead of just simply being something in which the end user ends up downloading an npm package and then what the post install script goes and takes all your credentials and like I got your tokens. Yes. Yes. Instead, it doesn't just do that. It spreads itself from repository to repository to repository and just keeps on growing. So, this isn't just simply a fishing attack. It's like all the attacks in one. Also, very impressive that it's the Singularity NX
hack that happened just last week. This appears to be by the same crew. Okay, they're on a they're on a hacking spree. Okay, this is a this is a double hack. I mean, they might even get to a triple hack potentially. A a hacktacular is on the horizon. All right, let's just jump right into it. So, how did this hack happen again? Now, first off, it likely occurred due to a fishing scam. That's what everything is saying. I asked Grock to find some sources. It just appears
that fishing was the root cause. Some small repository got had. The unknown repository is likely this uh RX NT authentication, which has been deprecated, hasn't seen any publications for a long time. Then out of nowhere 4 days ago got a new version which was going to be 005 which it looks like it's been removed already and 006 which both contained this attack. Now the attack took advantage of the exact same thing again a little patch version update. Now I don't know why this keeps happening. I
swear I keep saying this. Don't autoupgrade patch versions. It's like a massive security vulnerability. This is like the easiest way to be had ever yet it just keeps happening. Why? Why do you keep doing it? Say no. Lock your versions. Now obviously this is really really difficult because you may lock your versions and you may be the good you know the good citizen in this situation. But remember package managers
are in fact evil and people who don't lock their versions can still get you because you rely on them. They rely on other things. those other things get, you know, supply chain attacked. Boom. It trickles all the way down to you despite the fact that you did all the right steps. And Ginger Bill maybe is right. Maybe Ginger Bill is correct. Automation of package dependencies is walking into hell and we should all avoid it as much as we possibly can. I don't know. Maybe he is right. Mr. Quantum mechanic scientist who
moonlights as language creator. Anywh who, so after the patch version has been installed, a post install script again gets installed and this time instead of using like say the AI to go through your system and get all the credentials, which is what happened last time with the NX attack, which by the way was just a couple days ago. Okay, no sleep for the weary here. We just got to go from one attack to the next attack. This one instead uses something called Truffle Hog, which by the way, insane
name. Old girl, I'm going to slip my truffle hog on that computer and I'm going to get so many tokens you don't even know. A truffle hog is like a secret scanning tool. You're supposed to use it on your repository or use it in CI to make sure you're not accidentally leaking tokens. So like its idea is actually good. Unless if someone uses it for not good, then it's bad. Then it's really bad. So anyways, after getting your tokens, so this is where the things take a turn. So unlike the previous one and all unlike most of these attacks which take your tokens and then throws
them all up onto a repository and it's like talk about all your tokens. This time instead just immediately goes to work on your GitHub. Oh, we're going to update some CI. We're going to put in some new post installation. We're going to publish to npm. It does all the things to attempt to go publish patch versions with its new installation process that has the post install that does and does it again. So that way if one unknown repository gets had during CI of the next one, it goes d and just
get just it's just flying through the system. That means you're vulnerable on your desktop if you have tokens that can be taken advantage of. That means your CI is vulnerable if your CI has the tokens that can be taken advantage of. Now hide like literally hide your kids, hide your wives, hide your husband because they're stealing everybody's tokens out here. So, as this thing has progressed, it started off with 40 npm packages that have been compromised. Now, it's up to 180. This is only just a
few hours later. My guess is that by the end of the week, it'll be like 24 billion just by the growth rate here. I want to take a look at who got affected because as you can see, there's just so many packages. But I think the one that just it just makes me laugh. Even though we shouldn't laugh, I'm laughing. Crowdstrike. Yes. The company in which sells security solutions is in fact currently a distributor of a worm attack. I mean this is beautiful. This is this is I mean this is all life is
art but unknown to thee. This is like the most just amazing situation of irony that has ever been created. Crowd strike blue screens of death or let me have all your tokens. Which which which one do you want? Huh? Also, there's a whole bunch of other this popular author Control got had through Tiny Color. Tiny Color apparently was the first version, which by him having those, he accidentally ended up getting had again further and further. As you can see right here, 4.11 and 4.12 were both bad versions of which when you look at Tiny
Color 420, version 420 is the safe one. Okay. Hey, nice. I see what you did there. That was a good move. At the end of the day, I think the biggest takeaway here is stay away from auto upgrading. Take your time, understand what you're using, and maybe perhaps, I know this is going to be a crazy idea, maybe we don't need all of these dependencies. Maybe the singular function that you're using doesn't need to be an entire dependency with its own compounding effect of
security vulnerabilities. And in the day and age of AI, left pad's pretty easy to generate. Oh, you need some sort of, you know, HSV to RGB converter. Pretty easy to generate, right? Like, this isn't even something that you need to first go off and get massive expertise. And the cost of creating one-off functions instead of downloading an entire repository worth of functions is now so low, you barely need anything. Maybe these repetitive attacks will get people thinking more and more about the
dependencies they're taking. And hopefully, you will think about it, too. Because even again, even if you fix your patches, it doesn't mean the things you depend on fix your patches. Everybody needs to do it together. Okay? We're all in this together. Well, I'm not in this together. Okay? I don't like to program JavaScript. I use Elixir, by the way. So, not my problem, okay? Hey, that's that's actually your problem. We're not all in this together. You're in this together. You you npm enjoyers. Okay? Yuck. By the way, if you like this,
press the like button. If you haven't subscribed, press it because we're getting close to a million. Okay, I'm like 10% away., This May Be the Worst One, ThePrimeTime, 01k5c7c6gfcmtqemhz4a6fp9wd.