# Egy Dependabot frissítés egy férget publikált. 22 csomag.

Published: 2026-09-17

Egy bot nyit egy pull requestet. Egy ember 24 perccel később egyesíti. Azután 95 perccel egy féreg 110 rosszindulatú verziót publikált a 22 npm csomagjából, a nevében, egy token segítségével, amit a CI-jében talált.

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

## Amit ez a videó tartalmaz

- Egy bot, egy ember, egy féreg
- Hogyan történt, miért engedte az npm, ki a hibás
- Idővonal: a mérgezett gyorsítótár
- 21:48 – a Dependabot frissítés
- Miért működik

## Fejezetek

- 0:00 Egy bot, egy ember, egy féreg
- 0:20 Hogyan történt, miért engedte az npm, ki a hibás
- 0:30 Idővonal: a mérgezett gyorsítótár
- 1:15 21:48 – a Dependabot frissítés
- 1:50 Miért működik
- 2:20 git blame
- 2:45 Robbanási sugár
- 3:00 Ítélet

## Lefordított átirat

Az eredeti angol narrációból fordítva. A rendelkezésre álló hangot és feliratokat a YouTube vezérli.

### Egy bot, egy ember, egy féreg

0:00 Egy bot nyit egy pull requestet; egy ember huszonnégy perccel később egyesíti. Kilencvenöt perccel később egy féreg publikált száztíz verziót az ő csomagjaiból, az ő nevében. A TanStack utólagos elemzése tartalmazza a upstream időbélyegeket, a downstream karbantartóé a többit, és a Hacker News ezerkétszáz pontot és egy nevet ad neki: Mini Shai-Hulud. Hogyan történik, miért engedi az npm, ki a hibás.

### Hogyan történt, miért engedte az npm, ki a hibás

0:21 Ez a The Daily Diff, utólagos elemzés. Május 11, reggel. Egy átnevezett fork nyit egy pull requestet a TanStack Router ellen. Egy órán belül bezárul, de egy benchmark munkafolyamat már futtatta a kódját és

### Idővonal: a mérgezett gyorsítótár

0:33 egy mérgezett gyorsítótárat mentett a kulcs alá, amit a kiadási munkafolyamat használni fog. Tizenkilenc-húsz. Egy jogos egyesítés futtatja a kiadást. A gyorsítótár visszajön, egy bináris olvassa a futtató memóriáját, kiemeli a publikációs tokent, és nyolcvannégy verziót szállít negyvenkét csomagon keresztül, érvényes eredettel. A tesztek sikertelenek. Ennek ellenére publikál. Tizenkilenc-negyvenhat, egy StepSecurity kutató bejelenti a problémát; kilenc UTC-re mindent elavulttá tesznek, és a figyelmeztetés is kiadódik.

0:55 Az elavult nem tűnt el: az npm megtagadja bárminek a publikálásának visszavonását, aminek függőségei vannak, így órákig telepíthető marad. Huszonegy-negyvennyolc. Egy kilenc csillagos repülési adat projektben, a Dependabot megnyitja a szokásos pull requestjét: frissítse a dev-dependencies csoportot, tizenhárom frissítés. Kettő mérgezett TanStack verzió. Huszonkettő-tizenkettő: egyesítve. A publikálási munkafolyamat futtatja az npm C-I-t a tokenrel

### 21:48 – a Dependabot frissítés

1:15 a hatókörben; egy előkészítő szkript elolvassa, és huszonkettő-tizenhétkor a féreg publikál a nevében. Öt verzió minden csomagból, amit a token elér, még egy régi mellékprojekt is: egy klasszikus token mindenre. Száztíz verzió kilencvenöt perc alatt. E-mailben tudja meg, éjfél után. Miért működik. Egy: az npm install alapértelmezetten futtat idegenek életciklus szkriptjeit, és egy git függőség prepare szkriptje is számít.

1:39 Kettő: a féreg egy dolgot akar: egy tokent, ami második tényező nélkül publikál. Aztán megkérdezi a nyilvántartástól, hogy mi mással rendelkezik még az a karbantartó, és mindent újrapublikál magával együtt. Három: a láncban semmi sem személy.

### Miért működik

1:51 Egy bot javasol, egy pipeline telepít, és a féreg viszonzást nyújt: a halott-csepp ágai dependabot slash github-actions slash fremen néven vannak. git blame. Az npm telepítési modellje, ötvenöt százalék: szkriptek futnak telepítéskor, az elavult telepíthető marad, léteznek kétfaktoros-bypass tokenek. A TanStack CI-je, huszonöt: egy nem auditált pull request cél munkafolyamat, amely fork kódot futtat, írási hozzáféréssel a gyorsítótárhoz. A frissítési szokás, tizenöt: tizenhárom frissítés egyesítve huszonnégy perc alatt, token a szobában.

2:17 Dependabot, öt: annyira megbízható, hogy a féreg az egyenruháját viseli.

### git blame

2:20 Robbanási sugár: negyvenkét TanStack csomag. Huszonkettő downstream, egy kilenc csillagos projektből. Több mint százhatvan ökoszisztéma-szerte, amint a féreg eléri a Mistralt. Minden upstream verzió érvényes aláírással rendelkezett: az hivatalos pipeline építette. Igaz. Ítélet, utólagos elemzés: SHIP IT. Mindkét karbantartó időbélyeggel ellátott utólagos elemzést tesz közzé egy napon belül; három napon belül a downstream pipeline ignore-scripts-el telepít, szétválasztja az építést a publikálástól, és eldobja a hosszú életű tokent.

### Robbanási sugár

2:47 Az npm alapértelmezett beállításai nem mozdultak. Hétfő: ignore-scripts a telepítéskor, és a publikálási token kívül a feladaton, ami futtatja. Küldje el nekem azt az incidenst, amiről még mindig nem szabad beszélnie, a kommentekben, vagy a thedailydiff.dev címen. És ez a mai diff.

### Ítélet

3:00 Niko vagyok az Axrisi-től. Felelősségteljesen egyesítse.

## Források

- [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
