# Isang Dependabot bump ang nag-publish ng worm. 22 packages.

Published: 2026-09-17

Isang bot ang nagbukas ng pull request. Pinagsama ito ng isang tao 24 minuto pagkatapos. 95 minuto pagkatapos noon, isang worm ang nag-publish ng 110 malisyosong bersyon ng kanyang 22 npm packages, sa ilalim ng kanyang pangalan, na may token na natagpuan nito sa kanyang CI.

Canonical: https://thedailydiff.dev/fil/video/2026-09-17-dependabot-tanstack/

## Ang sakop ng video na ito

- Isang bot, isang tao, isang worm
- Paano ito nangyari, bakit pinayagan ito ng npm, sino ang dapat sisihin
- Timeline: ang nilason na cache
- 21:48 — ang Dependabot bump
- Bakit ito gumagana

## Mga Kabanata

- 0:00 Isang bot, isang tao, isang worm
- 0:20 Paano ito nangyari, bakit pinayagan ito ng npm, sino ang dapat sisihin
- 0:30 Timeline: ang nilason na cache
- 1:15 21:48 — ang Dependabot bump
- 1:50 Bakit ito gumagana
- 2:20 git blame
- 2:45 Blast radius
- 3:00 Hatol

## Isinaling transcript

Isinalin mula sa orihinal na salaysay sa English. Ang available na audio at mga caption ay kinokontrol ng YouTube.

### Isang bot, isang tao, isang worm

0:00 Isang bot ang nagbubukas ng pull request; pinagsasama ito ng isang tao makalipas ang dalawampu't apat na minuto. Makalipas ang siyamnapu't limang minuto, isang worm ang nag-publish isang daan at sampung bersyon ng kanyang packages, bilang siya. Ang postmortem ng TanStack ay may upstream na timestamp, ang downstream maintainer's ay may iba pa, at ang Hacker News ay nagbibigay dito ng isang libo isang daang puntos at pangalan: Mini Shai-Hulud. Paano ito nangyayari, bakit pinahihintulutan ito ng npm, sino ang sinisisi.

### Paano ito nangyari, bakit pinayagan ito ng npm, sino ang dapat sisihin

0:21 Ito ang The Daily Diff, postmortem. Mayo 11, umaga. Isang pinalitang pangalan na fork ang nagbubukas ng pull request laban sa TanStack Router. Nagsara ito sa loob ng oras, ngunit isang benchmark workflow ang nagpatakbo na ng code nito at

### Timeline: ang nilason na cache

0:33 nag-save ng nilason na cache sa ilalim ng key na gagamitin ng release workflow. Labinsiyam-dalawampu. Isang lehitimong merge ang nagpapatakbo ng release. Bumalik ang cache, binasa ng binary ang memorya ng runner, nilalabas ang publish token, at nagpapadala ng walumpu't apat na bersyon sa apatnapu't dalawa packages, na may valid provenance. Nabigo ang mga pagsubok. Nag-publish pa rin ito. Labinsiyam apatnapu't anim, isang mananaliksik ng StepSecurity ang nag-file ng isyu; pagdating ng siyam na UTC lahat ay deprecated at lumabas ang advisory.

0:55 Ang deprecated ay hindi nawala: tumatanggi ang npm na i-unpublish ang anumang may dependents, kaya nananatili itong mai-install ng ilang oras. Dalawampu't isa apatnapu't walo. Sa isang siyam na bituin na proyekto ng aviation-data, Binuksan ng Dependabot ang rutinang pull request nito: i-bump ang grupo ng dev-dependencies, labintatlong update. Dalawa ay nilason na bersyon ng TanStack. Dalawampu't dalawa-labindalawa: merged. Ang publish workflow ay nagpapatakbo ng npm C-I na may token sa

### 21:48 — ang Dependabot bump

1:15 scope; binabasa ito ng prepare script, at sa dalawampu't dalawa-labimpito ang worm ay nag-publish bilang siya. Limang bersyon ng bawat package na abot ng token, kahit isang lumang side project: isang klasikong token para sa lahat. Isang daan at sampung bersyon sa siyamnapu't limang minuto. Nalaman niya sa email, pagkatapos ng hatinggabi. Bakit ito gumagana. Isa: Ang npm install ay nagpapatakbo ng lifecycle script ng mga estranghero bilang default, at binibilang ang prepare script ng git dependency.

1:39 Dalawa: gusto ng worm ang isang bagay: isang token na nag-publish nang walang second factor. Pagkatapos ay tinatanong nito ang registry kung ano pa ang pagmamay-ari ng maintainer na iyon, at muling inilalabas ang lahat ng ito kasama ang sarili nito sa loob. Tatlo: walang sinuman sa chain ang isang tao.

### Bakit ito gumagana

1:51 Isang bot ang nagmumungkahi, isang pipeline ang nag-install, at ang worm ay nagbabalik ng pabor: ang kanyang dead-drop branches ay pinangalanang dependabot slash github-actions slash fremen. git blame. npm's install model, limampu't limang porsyento: scripts run on install, deprecated stays installable, two-factor-bypass tokens exist. CI ng TanStack, dalawampu't lima: isang unaudited pull request target workflow na nagpapatakbo fork code na may write access sa cache. Ang ugali ng bump, labinlima: labintatlong update na pinagsama sa dalawampu't apat na minuto, token sa kwarto.

2:17 Dependabot, lima: labis na pinagkakatiwalaan kaya isinusuot ng worm ang uniporme nito.

### git blame

2:20 Blast radius: apatnapu't dalawang TanStack packages. Dalawampu't dalawang downstream, mula sa isang proyekto na may siyam na bituin. Mahigit isang daan at animnapu sa buong ecosystem kapag naabot ng worm ang Mistral. Bawat upstream na bersyon ay may valid na lagda: binuo ng opisyal pipeline. Totoo. Hatol, postmortem: SHIP IT. Parehong maintainers ang nag-post ng timestamped postmortems sa loob ng isang araw; sa loob ng tatlo, ang downstream pipeline ay nag-install na may ignore-scripts, hinahati ang build mula sa publish, at binababa ang long-lived token.

### Blast radius

2:47 Hindi gumagalaw ang default ng npm. Lunes: ignore-scripts sa install, at ang publish token palabas ng trabaho na nagpapatakbo nito. Ipadala sa akin ang insidente na hindi mo pa rin pinapayagan na pag-usapan, sa mga komento, o sa thedailydiff.dev. At iyan ang diff para ngayon.

### Hatol

3:00 Ako si Niko mula sa Axrisi. Merge responsibly.

## Mga Pinagmulan

- [TanStack postmortem (Tanner Linsley, May 11, refined May 15)](https://tanstack.com/blog/npm-supply-chain-compromise-postmortem) — tanstack.com
- [TanStack "Hardening TanStack After the npm Compromise" (May 12)](https://tanstack.com/blog/incident-followup) — tanstack.com
- [TanStack/router#7383 — the StepSecurity detection issue](https://github.com/TanStack/router/issues/7383) — github.com
- [Downstream incident post, @squawk/\* (May 12)](https://github.com/neilcochran/squawk/discussions/251) — github.com
- [Downstream hardening post (May 14)](https://github.com/neilcochran/squawk/discussions/264) — github.com
- [The Dependabot PR #246 (opened 21:48 UTC, merged 22:12)](https://github.com/neilcochran/squawk/pull/246) — github.com
- [@tan\_stack advisory post, 21:19 UTC](https://x.com/tan_stack/status/2053948103766716630) — x.com
- [StepSecurity — worm internals, bypass\_2fa search, Dependabot-style branch names](https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem) — www.stepsecurity.io
- [Socket](https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack) — socket.dev
- [Aikido — "over 160 packages, including Mistral"](https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised) — www.aikido.dev
- [Hacker News (1,097 points)](https://news.ycombinator.com/item?id=48100706) — news.ycombinator.com
