Dependaboti pakutud versiooniuuendus avaldas ussviiruse. 22 paketti.
Bot avab tõmbepäringu.
Bot avab tõmbepäringu. Inimene liidab selle 24 minutit hiljem. 95 minutit pärast seda on ussviirus avaldanud 110 pahatahtlikku versiooni oma 22 npm-paketist, tema nime all, kasutades märki, mille see leidis tema CI-st.
Loe kirjalikku väljaannet (inglise keeles) ↗
Mida see video hõlmab
- Bot, inimene, ussviirus
- Kuidas see juhtus, miks npm seda lubas, kes on süüdi
- Ajajoon: mürgitatud vahemälu
- 21:48 — Dependaboti värskendus
- Miks see töötab
Tõlgitud transkriptsioon
Tõlgitud ingliskeelsest originaaljutustusest. Saadaolevat heli ja subtiitreid kontrollib YouTube.
Bot, inimene, ussviirus
0:00 Bot avab tõmbepäringu; inimene liidab selle kakskümmend neli minutit hiljem. Üheksakümmend viis minutit hiljem on ussviirus avaldanud sada kümme versiooni tema pakettidest, tema nimel. TanStacki järelkaja sisaldab ülesvoolu ajatempleid, allavoolu haldaja sisaldab ülejäänu ja Hacker News annab sellele üksteist sada punkti ja nime: Mini Shai-Hulud. Kuidas see juhtub, miks npm seda lubab, kes on süüdi.
Kuidas see juhtus, miks npm seda lubas, kes on süüdi
0:21 See on The Daily Diff, järelkaja. 11. mai, hommik. Ümbernimetatud harg avab tõmbepäringu TanStack Routeri vastu. See suletakse tunni jooksul, kuid võrdlusaluse töövoog on juba selle koodi käivitanud ja
Ajajoon: mürgitatud vahemälu
0:33 salvestanud mürgitatud vahemälu võtme alla, mida kasutusse võtmise töövoog kasutab. Üheksa-kakskümmend. Legitiimne liitmine käivitab vabastamise. Vahemälu naaseb, binaar loeb käiviti mälu, tõstab välja avaldamismärgi ja tarnib kaheksakümmend neli versiooni neljakümne kahe paketi kohta, kehtiva päritoluga. Testid ebaõnnestuvad. See avaldatakse ikkagi. Üheksateist nelikümmend kuus, StepSecurity teadlane esitab probleemi; kella üheksaks UTC-aja järgi on kõik aegunud ja nõuanne on välja antud.
0:55 Aegumine ei tähenda kadumist: npm keeldub midagi sõltuvustega tühistamast, nii et see jääb tundideks installitavaks. Kakskümmend üks nelikümmend kaheksa. Üheksatärnilises lennuandmete projektis, Dependabot avab oma rutiinse tõmbepäringu: värskenda arendussõltuvuste rühma, kolmteist värskendust. Kaks on mürgitatud TanStacki versioonid. Kakskümmend kaks kaksteist: liidetud. Avaldamise töövoog käivitab npm C-I märgi abil
21:48 — Dependaboti värskendus
1:15 rakendusalas; ettevalmistusskript loeb selle ja kahekümne kahekümneseitsme ajal avaldab ussviirus tema nimel. Viis versiooni igast paketist, kuhu märk ulatub, isegi vana kõrvalprojekt: üks klassikaline märk kõige jaoks. Sada kümme versiooni üheksakümne viie minuti jooksul. Ta saab sellest teada meili teel, pärast südaööd. Miks see töötab. Üks: npm install käivitab vaikimisi võõraste elutsükli skripte, ja giti sõltuvuse ettevalmistusskript loeb.
1:39 Kaks: ussviirus tahab ühte asja: märki, mis avaldab ilma teise tegurita. Seejärel küsib registrist, mis veel sellele hooldajale kuulub, ja avaldab kõik uuesti koos endaga sees. Kolm: mitte miski ahelas pole inimene.
Miks see töötab
1:51 Bot teeb ettepaneku, toru paigaldab ja ussviirus tasub teenet: selle surnud-tilga harud on nimetatud dependabot slash github-actions slash fremen. git blame. npm-i installimudel, viiskümmend viis protsenti: skriptid käivituvad installimisel, aegunud jääb installitavaks, kahefaktoriline möödaviigu märgid eksisteerivad. TanStacki CI, kakskümmend viis: auditeerimata tõmbepäringu sihttöövoog, mis käivitab hargkoodi, millel on kirjutamisõigus vahemälule. Värskendamise harjumus, viisteist: kolmteist värskendust liidetud kahekümne nelja minuti jooksul, märk toas.
2:17 Dependabot, viis: nii usaldatud, et ussviirus kannab selle vormiriietust.
git blame
2:20 Mõjuala: nelikümmend kaks TanStacki paketti. Kakskümmend kaks allavoolu, projektist, millel on üheksa tärni. Üle saja kuuekümne ökosüsteemilaia, kui ussviirus Mistralisse jõuab. Iga ülesvoolu versioon kandis kehtivat allkirja: ehitatud ametliku torujuhtme poolt. Tõsi. Kohtuotsus, järelkaja: SHIP IT. Mõlemad hooldajad postitavad ajatempliga järelkajad ühe päeva jooksul; kolme päeva jooksul, allavoolu torujuhe installib ignore-skriptidega, eraldab ehitamise avaldamisest ja loobub pikaajalisest märgist.
Mõjuala
2:47 npm-i vaikeseaded pole liikunud. Esmaspäev: ignore-scripts installimisel ja avaldamise märk töökohast, mis seda käivitab. Saada mulle intsident, millest sul ikka veel rääkida ei tohi, kommentaarides või aadressil thedailydiff.dev. Ja see on tänane erinevus.
Kohtuotsus
3:00 Mina olen Niko Axrisist. Liida vastutustundlikult.
Allikad
- 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



