Dependabotova "bump" sprememba je objavila črva. 22 paketov.
Bot odpre zahtevo za združitev.
Bot odpre zahtevo za združitev. Človek jo združi 24 minut kasneje. 95 minut za tem je črv objavil 110 zlonamernih različic njegovih 22 npm paketov, pod njegovim imenom, z žetonom, ki ga je našel v njegovi CI.
Preberi pisno izdajo (angleščina) ↗
Kaj zajema ta videoposnetek
- Bot, človek, črv
- Kako se je zgodilo, zakaj je npm to dovolil, kdo je kriv
- Časovnica: zastrupljena predpomnilnik
- 21:48 — Dependabotova "bump" sprememba
- Zakaj deluje
Preveden prepis
Prevedeno iz izvirnega angleškega pripovedovanja. Razpoložljivi zvok in podnapisi so nadzorovani s strani YouTuba.
Bot, človek, črv
0:00 Bot odpre zahtevo za združitev; človek jo združi štiriindvajset minut kasneje. Petindevetdeset minut kasneje, je črv objavil sto deset različic njegovih paketov, kot on. TanStackova "postmortem" analiza ima izvorne časovne žige, upraviteljjev "downstream" ima ostalo, in Hacker News mu daje enajststo točk in ime: Mini Shai-Hulud. Kako se zgodi, zakaj npm to dovoli, kdo je kriv.
Kako se je zgodilo, zakaj je npm to dovolil, kdo je kriv
0:21 To je The Daily Diff, postmortem. 11. maj, zjutraj. Preimenovana veja odpre zahtevo za združitev proti TanStack Routerju. Zapre se v eni uri, vendar je delovni tok za merjenje uspešnosti že pognal svojo kodo in
Časovnica: zastrupljena predpomnilnik
0:33 shranil zastrupljen predpomnilnik pod ključem, ki ga bo uporabil delovni tok za izdajo. Devetnajst-dvajset. Legitimna združitev zažene izdajo. Predpomnilnik se vrne, binarna datoteka prebere pomnilnik izvajalca, dvigne žeton za objavo in odpošlje štiriinosemdeset različic skozi dvainštirideset paketov, z veljavno provenanco. Testi ne uspejo. Kljub temu objavi. Devetnajst šestinštirideset, raziskovalec StepSecurityja vloži prijavo; do devetih UTC je vse zastarelo in opozorilo je objavljeno.
0:55 Zastarelo ne pomeni izginilo: npm zavrača preklic objave česarkoli z odvisnostmi, zato ostane nameščeno ure. Dvaindvajset osemintrideset. V devet-zvezdnem projektu letalskih podatkov, Dependabot odpre svojo rutinsko zahtevo za združitev: posodobitev skupine dev-odvisnosti, trinajst posodobitev. Dve sta zastrupljeni TanStack različici. Dvaindvajset-dvanajst: združeno. Delovni tok objave zažene npm C-I z žetonom v
21:48 — Dependabotova "bump" sprememba
1:15 obsegu; skripta za pripravo ga prebere, in ob dvaindvajset-sedemnajst črv objavi kot on. Pet različic vsakega paketa, ki ga žeton doseže, celo stari stranski projekt: en klasičen žeton za vse. Sto deset različic v petindevetdesetih minutah. Izve preko e-pošte, po polnoči. Zakaj deluje. Eno: npm install privzeto zažene skripte življenjskega cikla neznancev, in pripravljalna skripta git odvisnosti šteje.
1:39 Dve: črv želi eno stvar: žeton, ki objavlja brez drugega faktorja. Nato vpraša register, kaj še ta vzdrževalec poseduje, in ponovno objavi vse to s seboj v notranjosti. Tri: nič v verigi ni oseba.
Zakaj deluje
1:51 Bot predlaga, cevovod namesti, in črv vrne uslugo: njegove veje za odlaganje so imenovane dependabot poševnica github-actions poševnica fremen. git blame. npm-ov model namestitve, petinpetdeset odstotkov: skripti se zaženejo ob namestitvi, zastarelo ostaja nameščeno, obstajajo žetoni za obvod dvofaktorske avtentikacije. TanStackov CI, petindvajset: nerevidiran delovni tok za ciljanje zahtevkov za združitev, ki izvaja kodo veje z dostopom za pisanje v predpomnilnik. Navada posodabljanja, petnajst: trinajst posodobitev združenih v štiriindvajsetih minutah, žeton v sobi.
2:17 Dependabot, pet: tako zaupan, da črv nosi njegovo uniformo.
git blame
2:20 Obseg vpliva: dvainštirideset TanStack paketov. Dvaindvajset navzdol, iz projekta z devetimi zvezdicami. Več kot stošestdeset po celotnem ekosistemu, ko črv doseže Mistral. Vsaka izvorna različica je nosila veljaven podpis: zgrajena s strani uradnega cevovoda. Resnično. Razsodba, postmortem: SHIP IT. Oba vzdrževalca objavita "postmortem" analizi z žigi v enem dnevu; v treh, "downstream" cevovod namesti z "ignore-scripts", loči gradnjo od objave in opusti dolgoživljenjski žeton.
Obseg vpliva
2:47 npm-ove privzete nastavitve se niso spremenile. Ponedeljek: "ignore-scripts" ob namestitvi in žeton za objavo izven naloge, ki ga izvaja. Pošljite mi incident, o katerem še vedno ne smete govoriti, v komentarjih ali na thedailydiff.dev. In to je razlika za danes.
Razsodba
3:00 Sem Niko iz Axrisi. Združujte odgovorno.
Viri
- TanStack postmortem (Tanner Linsley, May 11, refined May 15)tanstack.com
- TanStack "Hardening TanStack After the npm Compromise" (May 12)tanstack.com
- TanStack/router#7383 — the StepSecurity detection issuegithub.com
- Downstream incident post, @squawk/* (May 12)github.com
- Downstream hardening post (May 14)github.com
- The Dependabot PR #246 (opened 21:48 UTC, merged 22:12)github.com
- @tan_stack advisory post, 21:19 UTCx.com
- StepSecurity — worm internals, bypass_2fa search, Dependabot-style branch nameswww.stepsecurity.io
- Socketsocket.dev
- Aikido — "over 160 packages, including Mistral"www.aikido.dev
- Hacker News (1,097 points)news.ycombinator.com



