Dependabot жаңартуы «құртты» жариялады. 22 пакет.
Бот тарту сұрауын ашады.
Бот тарту сұрауын ашады. Адам оны 24 минуттан кейін біріктіреді. Одан 95 минуттан кейін «құрт» оның CI-да тапқан токенімен оның атынан 22 npm пакетінің 110 зиянды нұсқасын жариялады.
Жазбаша басылымды оқыңыз (ағылшынша) ↗
Бұл бейне не туралы
- Бот, адам, құрт
- Қалай болды, неге npm рұқсат берді, кім кінәлі
- Хронология: уланған кэш
- 21:48 — Dependabot жаңартуы
- Неліктен жұмыс істейді
Аударылған транскрипция
Бастапқы ағылшын тіліндегі баяндамадан аударылған. Қолжетімді аудио және субтитрлерді YouTube басқарады.
Бот, адам, құрт
0:00 Бот тарту сұрауын ашады; адам оны жиырма төрт минуттан кейін біріктіреді. Тоқсан бес минуттан кейін «құрт» жариялады оның жүз он нұсқасын пакеттерді, оның атынан. TanStack-тің өлімнен кейінгі талдауында жоғарғы ағынның уақыт белгілері бар, төменгі ағынның қызмет көрсетушісінің қалғаны бар, және Hacker News оған он бір жүз ұпай мен атау береді: Mini Shai-Hulud. Бұл қалай болады, неге npm рұқсат береді, кім кінәлі.
Қалай болды, неге npm рұқсат берді, кім кінәлі
0:21 Бұл The Daily Diff, өлімнен кейінгі талдау. 11 мамыр, таңертең. Аты өзгертілген форк TanStack Router-ге қарсы тарту сұрауын ашады. Ол бір сағат ішінде жабылады, бірақ өнімділік жұмыс процесі оның кодын орындап үлгерді және
Хронология: уланған кэш
0:33 шығарылым жұмыс процесі пайдаланатын кілтпен уланған кэшті сақтады. Он тоғыз жиырма. Заңды біріктіру шығарылымды іске қосады. Кэш қайтарылады, бинарлық файл жүгірушінің жадын оқиды, жариялау токeнін алады және қырық екі пакет бойынша сексен төрт нұсқаны жөнелтеді, жарамды шығу тегімен. Тесттер сәтсіз аяқталады. Ол бәрібір жариялайды. Он тоғыз қырық алты, StepSecurity зерттеушісі мәселені тіркейді; UTC тоғызда барлығы ескірген және ескерту шығарылған.
0:55 Ескірген дегеніміз жоқ емес: npm тәуелділігі бар ештеңені жариялаудан бас тартады, сондықтан ол бірнеше сағат бойы орнатуға болатын күйде қалады. Жиырма бір қырық сегіз. Тоғыз жұлдызды авиациялық деректер жобасында, Dependabot өзінің тұрақты тарту сұрауын ашады: dev-dependencies тобын жаңарту, он үш жаңарту. Екеуі уланған TanStack нұсқалары. Жиырма екі он екі: біріктірілді. Жариялау жұмыс процесі npm C-I-ді токeнмен іске қосады
21:48 — Dependabot жаңартуы
1:15 аймақта; дайындық скрипті оны оқиды, және жиырма екі он жетіде «құрт» жариялайды оның атынан. Токeн жететін әрбір пакеттің бес нұсқасы, тіпті ескі жанама жоба да: барлығына бір классикалық токeн. Тоқсан бес минутта жүз он нұсқа. Ол түн ортасынан кейін электрондық пошта арқылы біледі. Неліктен жұмыс істейді. Бірінші: npm install әдепкі бойынша бөгде адамдардың өмірлік цикл скрипттерін іске қосады, және git тәуелділігінің дайындық скрипті есептеледі.
1:39 Екінші: «құрт» бір нәрсені қалайды: екінші факторсыз жариялайтын токeн. Содан кейін ол тіркелімнен сол қызмет көрсетушіге тағы не тиесілі екенін сұрайды, және бәрін өзімен бірге қайта жариялайды. Үшінші: тізбекте ешкім адам емес.
Неліктен жұмыс істейді
1:51 Бот ұсынады, құбыр желісі орнатады, және «құрт» жақсылыққа жақсылықпен жауап қайтарады: оның dead-drop тармақтары dependabot slash github-actions slash fremen деп аталады. git blame. npm-нің орнату үлгісі, елу бес пайыз: скрипттер орнату кезінде іске қосылады, ескіргендер орнатуға болатын күйде қалады, екі факторлы айналып өту токeндері бар. TanStack-тің CI-ы, жиырма бес: тексерілмеген тарту сұрауының мақсатты жұмыс процесі кэшке жазу рұқсаты бар форк кодын іске қосу. Жаңарту әдеті, он бес: он үш жаңарту жиырма төрт минутта біріктірілді, бөлмедегі токeн.
2:17 Dependabot, бес: «құрт» оның формасын киетіндей сенімді.
git blame
2:20 Зақымдалу аймағы: қырық екі TanStack пакеті. Тоғыз жұлдызды жобадан жиырма екі төменгі ағын. «Құрт» Mistral-ға жеткенде жүз алпыстан астам экожүйелік. Әрбір жоғарғы ағынның нұсқасы жарамды қолтаңбаны алып жүрді: ресми құбыр желісімен құрастырылған. Шындық. Үкім, өлімнен кейінгі талдау: SHIP IT. Екі қызмет көрсетуші де бір күн ішінде уақыт белгісі бар өлімнен кейінгі талдауларды жариялайды; үш күн ішінде, төменгі ағынның құбыр желісі ignore-scripts-пен орнатылады, құрастыруды жариялаудан бөледі және ұзақ өмір сүретін токeнді тастайды.
Зақымдалу аймағы
2:47 npm-нің әдепкі мәндері өзгерген жоқ. Дүйсенбі: орнату кезінде ignore-scripts, және оны іске қосатын жұмыстан жариялау токeнін шығару. Әлі де айтуға рұқсат етілмеген оқиғаны маған жіберіңіз, пікірлерде немесе thedailydiff.dev мекенжайы бойынша. Ал бүгінгі айырмашылық осы.
Үкім
3:00 Мен Axrisi-ден Нико. Жауапкершілікпен біріктіріңіз.
Дереккөздер
- 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



