Dependabot xabari qurtni nashr etdi. 22 ta paket.
Bot pull so'rovini ochadi.
Bot pull so'rovini ochadi. Inson uni 24 daqiqadan so'ng birlashtiradi. Shundan 95 daqiqa o'tib, qurt o'zining CI-da topgan token bilan o'z nomidan 22 ta npm paketining 110 ta zararli versiyasini nashr etdi.
Yozma nashrini oʻqing (inglizcha) ↗
Bu video nimani qamrab oladi
- Bot, inson, qurt
- Qanday sodir bo'ldi, nega npm bunga ruxsat berdi, kim aybdor
- Xronologiya: zaharlangan kesh
- 21:48 — Dependabot yangilanishi
- Nega u ishlaydi
Tarjima qilingan transkript
Asl inglizcha hikoyadan tarjima qilingan. Mavjud audio va subtitrlar YouTube tomonidan boshqariladi.
Bot, inson, qurt
0:00 Bot pull so'rovini ochadi; inson uni yigirma to'rt daqiqadan so'ng birlashtiradi. To'qson besh daqiqadan so'ng, qurt nashr etdi uning yuz o'n versiyasi paketlari, u kabi. TanStackning postmortemi yuqori oqim vaqt belgilariga, quyi oqim xizmat ko'rsatuvchisining qolganiga ega, va Hacker News unga ming bir yuz ball va nom beradi: Mini Shay-Hulud. Qanday sodir bo'ladi, nega npm bunga ruxsat beradi, kim aybdor.
Qanday sodir bo'ldi, nega npm bunga ruxsat berdi, kim aybdor
0:21 Bu The Daily Diff, postmortem. 11-may, ertalab. Qayta nomlangan fork TanStack Routerga qarshi pull so'rovini ochadi. U bir soat ichida yopiladi, ammo benchmark ish oqimi allaqachon o'z kodini ishga tushirgan va
Xronologiya: zaharlangan kesh
0:33 zaharlangan keshni release ish oqimi foydalanadigan kalit ostida saqlagan. O'n to'qqiz-yigirma. Qonuniy birlashuv relizni ishga tushiradi. Kesh qaytib keladi, binar ishga tushiruvchining xotirasini o'qiydi, nashr tokenini oladi va qirq ikki paket bo'yicha sakson to'rt versiyani jo'natadi, haqiqiy kelib chiqishi bilan. Testlar muvaffaqiyatsiz. U baribir nashr etadi. O'n to'qqiz qirq olti, StepSecurity tadqiqotchisi muammoni topadi; UTC bo'yicha to'qqizgacha hamma narsa eskirgan va ogohlantirish chiqarilgan.
0:55 Eskirgan degani yo'qolgan degani emas: npm bog'liqligi bo'lgan narsani nashrdan chiqarishni rad etadi, shuning uchun u bir necha soat davomida o'rnatilishi mumkin bo'lib qoladi. Yigirma bir qirq sakkiz. To'qqiz yulduzli aviatsiya ma'lumotlari loyihasida, Dependabot o'zining odatiy pull so'rovini ochadi: dev-dependencies guruhini yangilash, o'n uchta yangilanish. Ikkita zaharlangan TanStack versiyalari. Yigirma ikki-o'n ikki: birlashtirildi. Nashr ish oqimi npm C-I ni token bilan
21:48 — Dependabot yangilanishi
1:15 ishga tushiradi; prepare skripti uni o'qiydi va yigirma ikki-o'n yettida qurt nashr etadi u kabi. Token yetib borgan har bir paketning besh versiyasi, hatto eski yon loyiha ham: hamma narsa uchun bitta klassik token. To'qson besh daqiqada yuz o'n versiya. U yarim tundan keyin elektron pochta orqali bilib oladi. Nega u ishlaydi. Birinchidan: npm install sukut bo'yicha begona hayot aylanish skriptlarini ishga tushiradi, va git bog'liqligining prepare skripti hisoblanadi.
1:39 Ikkinchidan: qurt bitta narsani xohlaydi: ikkinchi faktorsiz nashr etadigan token. Keyin u registrdan o'sha xizmat ko'rsatuvchi yana nimaga egaligini so'raydi, va hammasini o'zi bilan birga qayta nashr etadi. Uchinchidan: zanjirdagi hech narsa shaxs emas.
Nega u ishlaydi
1:51 Bot taklif qiladi, quvur liniyasi o'rnatadi va qurt xizmatni qaytaradi: uning dead-drop filiallari dependabot slash github-actions slash fremen deb nomlangan. git blame. npmning o'rnatish modeli, ellik besh foiz: o'rnatishda skriptlar ishga tushadi, eskirgan o'rnatiladigan bo'lib qoladi, ikki faktorli aylanma tokenlar mavjud. TanStackning CI, yigirma besh: keshga yozish huquqi bilan fork kodini ishga tushiradigan tekshirilmagan pull so'roviga yo'naltirilgan ish oqimi. keshga yozish huquqi bilan ishlaydigan fork kodi. Yangilash odati, o'n besh: yigirma to'rt daqiqada birlashtirilgan o'n uchta yangilanish, xona ichidagi token.
2:17 Dependabot, besh: shunchalik ishonchli-ki, qurt uning formasini kiyadi.
git blame
2:20 Zarar radiusi: qirq ikki TanStack paketi. To'qqiz yulduzli loyihadan yigirma ikkita quyi oqim. Qurt Mistralga yetgach, ekotizim bo'ylab yuz oltmishdan ortiq. Har bir yuqori oqim versiyasi haqiqiy imzo bilan birga keldi: rasmiy quvur liniyasi tomonidan qurilgan. Haqiqiy. Hukm, postmortem: SHIP IT. Har ikki xizmat ko'rsatuvchi ham bir kun ichida vaqt belgisi bilan postmortemlarni joylashtiradi; uch kun ichida, quyi oqim quvur liniyasi ignore-scripts bilan o'rnatiladi, nashr qilishdan ajratadi va uzoq muddatli tokenni o'chiradi.
Zarar radiusi
2:47 npmning sukut bo'yicha sozlamalari o'zgarmadi. Dushanba: o'rnatishda ignore-scripts va uni ishga tushiradigan ishdan nashr tokeni tashqarisida. Menga hali ham gaplashishga ruxsat berilmagan hodisani yuboring, izohlarda yoki thedailydiff.dev manzilida. Va bugungi farq shu. Men Axrisidan Nikoman.
Hukm
3:00 Mas'uliyat bilan birlashtiring. Mas'uliyat bilan birlashtiring.
Manbalar
- 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



