+− THE DAILY DIFFdev & AI news
SHIP IT

Dependabot paziņojums publicēja tārpu. 22 pakotnes.

Bots atver vilkšanas pieprasījumu.

Bots atver vilkšanas pieprasījumu. Cilvēks to apvieno pēc 24 minūtēm. Pēc 95 minūtēm tārps ir publicējis 110 ļaunprātīgas savu 22 npm pakotņu versijas, viņa vārdā, ar marķieri, ko tas atrada viņa CI.

Lasiet rakstisko izdevumu (angļu valodā) ↗

Ko aptver šis video

  • Bots, cilvēks, tārps
  • Kā tas notika, kāpēc npm to atļāva, kurš ir vainojams
  • Laika skala: saindētā kešatmiņa
  • 21:48 — Dependabot pacēlums
  • Kāpēc tas darbojas

Tulkotais transkripts

Tulkojums no oriģinālā angļu stāstījuma. Pieejamais audio un subtitri tiek kontrolēti no YouTube.

Bots, cilvēks, tārps

0:00 Bots atver vilkšanas pieprasījumu; cilvēks to apvieno divdesmit četras minūtes vēlāk. Deviņdesmit piecas minūtes vēlāk tārps ir publicējis simt desmit viņa versijas pakotnes, kā viņš. TanStack pēcnāves analīze satur augšupējās laika zīmes, pakārtotā uzturētāja satur pārējo, un Hacker News dod tai tūkstoš simts punktus un nosaukumu: Mini Shai-Hulud. Kā tas notiek, kāpēc npm to atļauj, kurš ir vainojams.

Kā tas notika, kāpēc npm to atļāva, kurš ir vainojams

0:21 Šis ir The Daily Diff, pēcnāves analīze. 11. maijs, rīts. Pārdēvēta atzara atver vilkšanas pieprasījumu pret TanStack Router. Tā tiek slēgta stundas laikā, taču veiktspējas testēšanas darbplūsma jau ir palaidusi tās kodu un

Laika skala: saindētā kešatmiņa

0:33 saglabājusi saindētu kešatmiņu zem atslēgas, ko izmantos izlaišanas darbplūsma. Deviņpadsmit divdesmit. Likumīga apvienošana palaiž izlaišanu. Kešatmiņa atgriežas, binārs fails nolasa palaidēja atmiņu, paceļ publicēšanas marķieri un nosūta astoņdesmit četras versijas četrdesmit divās pakotnēs ar derīgu izcelsmi. Testi neizdodas. Tas publicējas tik un tā. Deviņpadsmit četrdesmit seši, StepSecurity pētnieks iesniedz problēmu; līdz deviņiem UTC viss ir novecojis un paziņojums ir izdots.

0:55 Novecojis nav pazudis: npm atsakās atcelt publicēšanu visam ar atkarībām, tāpēc tas paliek instalējams stundām ilgi. Divdesmit viens četrdesmit astoņi. Deviņu zvaigžņu aviācijas datu projektā, Dependabot atver savu ikdienas vilkšanas pieprasījumu: pacelt izstrādes atkarību grupu, trīspadsmit atjauninājumi. Divi ir saindētas TanStack versijas. Divdesmit divi divpadsmit: apvienots. Publicēšanas darbplūsma palaiž npm C-I ar marķieri

21:48 — Dependabot pacēlums

1:15 darbības jomā; sagatavošanas skripts to nolasa, un divdesmit divi septiņpadsmit tārps publicē kā viņš. Piecas katras pakotnes versijas, ko marķieris sasniedz, pat vecs blakus projekts: viens klasisks marķieris visam. Simt desmit versijas deviņdesmit piecās minūtēs. Viņš uzzina pa e-pastu, pēc pusnakts. Kāpēc tas darbojas. Viens: npm instalē svešinieku dzīves cikla skriptus pēc noklusējuma, un git atkarības sagatavošanas skripts tiek ņemts vērā.

1:39 Divi: tārps vēlas vienu: marķieri, kas publicē bez otrā faktora. Pēc tam tas jautā reģistram, kas vēl pieder šim uzturētājam, un atkārtoti publicē visu ar sevi iekšpusē. Trīs: nekas ķēdē nav persona.

Kāpēc tas darbojas

1:51 Bots ierosina, cauruļvads instalē, un tārps atmaksā pakalpojumu: tā nogalināto atzaru nosaukumi ir dependabot slash github-actions slash fremen. git blame. npm instalēšanas modelis, piecdesmit pieci procenti: skripti darbojas instalēšanas laikā, novecojušie paliek instalējami, divfaktoru apvedceļa marķieri pastāv. TanStack CI, divdesmit pieci: nepārbaudīta vilkšanas pieprasījuma mērķa darbplūsma, kas palaiž atzara kodu ar rakstīšanas piekļuvi kešatmiņai. Pacelšanas ieradums, piecpadsmit: trīspadsmit atjauninājumi apvienoti divdesmit četrās minūtēs, marķieris telpā.

2:17 Dependabot, pieci: tik uzticams, ka tārps valkā tā uniformu.

git blame

2:20 Sprādziena rādiuss: četrdesmit divas TanStack pakotnes. Divdesmit divi pakārtotie, no projekta ar deviņām zvaigznēm. Vairāk nekā simts sešdesmit ekosistēmas mērogā, kad tārps sasniedz Mistral. Katra augšupējā versija bija ar derīgu parakstu: būvēta oficiālā cauruļvadā. Patiesi. Spriedums, pēcnāves analīze: SHIP IT. Abi uzturētāji publicē laika zīmju pēcnāves analīzes dienas laikā; trīs dienu laikā, pakārtotais cauruļvads instalē ar ignore-scripts, sadala būvniecību no publicēšanas un atmet ilgstoši pastāvošo marķieri.

Sprādziena rādiuss

2:47 npm noklusējuma iestatījumi nav mainījušies. Pirmdiena: ignore-scripts instalēšanas laikā, un publicēšanas marķieris ārpus darba, kas to palaiž. Sūtiet man incidentu, par kuru jums joprojām nav atļauts runāt, komentāros vai vietnē thedailydiff.dev. Un tas ir šodienas diff.

Spriedums

3:00 Esmu Niko no Axrisi. Apvienojiet atbildīgi.

Avoti

  1. TanStack postmortem (Tanner Linsley, May 11, refined May 15)tanstack.com
  2. TanStack "Hardening TanStack After the npm Compromise" (May 12)tanstack.com
  3. TanStack/router#7383 — the StepSecurity detection issuegithub.com
  4. Downstream incident post, @squawk/* (May 12)github.com
  5. Downstream hardening post (May 14)github.com
  6. The Dependabot PR #246 (opened 21:48 UTC, merged 22:12)github.com
  7. @tan_stack advisory post, 21:19 UTCx.com
  8. StepSecurity — worm internals, bypass_2fa search, Dependabot-style branch nameswww.stepsecurity.io
  9. Socketsocket.dev
  10. Aikido — "over 160 packages, including Mistral"www.aikido.dev
  11. Hacker News (1,097 points)news.ycombinator.com

Saistītie video