ការដំឡើង Dependabot បង្កើត worm។ 22 កញ្ចប់។
Bot បើកសំណើទាញ។
Bot បើកសំណើទាញ។ មនុស្សម្នាក់បញ្ចូលវា 24 នាទីក្រោយមក។ 95 នាទីក្រោយមក worm បានបោះពុម្ពកំណែព្យាបាទចំនួន 110 នៃ 22 កញ្ចប់ npm របស់គាត់ ក្រោមឈ្មោះរបស់គាត់ ជាមួយនឹងថូខឹនដែលវាបានរកឃើញនៅក្នុង CI របស់គាត់។
អានបោះពុម្ពជាលាយលក្ខណ៍អក្សរ (អង់គ្លេស) ↗
អ្វីដែលវីដេអូនេះគ្របដណ្ដប់
- Bot មួយ មនុស្សម្នាក់ Worm មួយ
- វាកើតឡើងដោយរបៀបណា ហេតុអ្វី npm អនុញ្ញាតវា អ្នកណាជាអ្នកទទួលខុសត្រូវ
- កាលបរិច្ឆេទ: cache ដែលមានជាតិពុល
- 21:48 — ការដំឡើង Dependabot
- ហេតុអ្វីបានជាវាដំណើរការ
កំណត់ត្រាដែលបានបកប្រែ
បកប្រែចេញពីការនិទានដើមជាភាសាអង់គ្លេស។ សំឡេង និងចំណងជើងរងដែលមានគឺស្ថិតនៅក្រោមការគ្រប់គ្រងរបស់ YouTube។
Bot មួយ មនុស្សម្នាក់ Worm មួយ
0:00 Bot បើកសំណើទាញ; មនុស្សម្នាក់បញ្ចូលវាម្ភៃបួននាទីក្រោយមក។ កៅសិបប្រាំនាទីក្រោយមក worm បានបោះពុម្ព មួយរយដប់កំណែនៃរបស់គាត់ កញ្ចប់ ដូចគាត់។ ឯកសារក្រោយស្លាប់របស់ TanStack មានត្រាពេលវេលាដើម ឯកសារអ្នកថែទាំខាងក្រោម មាននៅសល់ ហើយ Hacker News ផ្តល់ពិន្ទុមួយពាន់មួយរយ និងឈ្មោះមួយថា: Mini Shai-Hulud។ វាកើតឡើងដោយរបៀបណា ហេតុអ្វី npm អនុញ្ញាតវា អ្នកណាជាអ្នកទទួលខុសត្រូវ។
វាកើតឡើងដោយរបៀបណា ហេតុអ្វី npm អនុញ្ញាតវា អ្នកណាជាអ្នកទទួលខុសត្រូវ
0:21 នេះជា The Daily Diff ក្រោយស្លាប់។ ថ្ងៃទី 11 ខែឧសភា ពេលព្រឹក។ ច្បាប់ចម្លងដែលបានប្តូរឈ្មោះបានបើកសំណើទាញប្រឆាំងនឹង TanStack Router។ វានឹងបិទក្នុងរយៈពេលមួយម៉ោង ប៉ុន្តែដំណើរការ benchmark រួចហើយបានដំណើរការកូដរបស់វា និង
កាលបរិច្ឆេទ: cache ដែលមានជាតិពុល
0:33 បានរក្សាទុក cache ដែលមានជាតិពុលក្រោមគន្លឹះដែលដំណើរការចេញផ្សាយនឹងប្រើប្រាស់។ ម៉ោងដប់ប្រាំបួនម្ភៃ។ ការបញ្ចូលស្របច្បាប់ដំណើរការការចេញផ្សាយ។ cache ត្រឡប់មកវិញ កូដគោលពីរអានអង្គចងចាំរបស់ runner ដកថូខឹនបោះពុម្ព ហើយចេញផ្សាយប៉ែតសិបបួនកំណែឆ្លងកាត់សែសិបពីរ កញ្ចប់ ជាមួយនឹងភស្តុតាងត្រឹមត្រូវ។ ការធ្វើតេស្តបរាជ័យ។ វានឹងបោះពុម្ពទោះជាយ៉ាងណា។ ដប់ប្រាំបួនសែសិបប្រាំមួយ អ្នកស្រាវជ្រាវ StepSecurity ដាក់ពាក្យបណ្តឹង។ នៅម៉ោងប្រាំបួន UTC អ្វីៗទាំងអស់ត្រូវបានលុបចោលហើយការណែនាំត្រូវបានចេញផ្សាយ។
0:55 ការលុបចោលមិនមែនជាការបាត់បង់ទេ: npm បដិសេធមិនលុបអ្វីដែលពឹងផ្អែកលើវាទេ ដូច្នេះវានៅតែអាចដំឡើងបានជាច្រើនម៉ោង។ ម្ភៃមួយសែសិបប្រាំបី។ នៅក្នុងគម្រោងទិន្នន័យអាកាសចរណ៍ប្រាំបួនផ្កាយ Dependabot បើកសំណើទាញធម្មតារបស់វា: ដំឡើងក្រុម dev-dependencies ការអាប់ដេតដប់បី។ ពីរជាកំណែ TanStack ដែលមានជាតិពុល។ ម្ភៃពីរដប់ពីរ: រួមបញ្ចូលគ្នា។ ដំណើរការបោះពុម្ពដំណើរការ npm C-I ជាមួយនឹងថូខឹននៅក្នុង
21:48 — ការដំឡើង Dependabot
1:15 វិសាលភាព; ស្គ្រីប prepare អានវា ហើយនៅម៉ោងម្ភៃពីរដប់ប្រាំពីរ worm បោះពុម្ព ដូចគាត់។ ប្រាំកំណែនៃកញ្ចប់នីមួយៗដែលថូខឹនទៅដល់ សូម្បីតែគម្រោងចាស់មួយ: ថូខឹនបុរាណមួយសម្រាប់អ្វីៗទាំងអស់។ មួយរយដប់កំណែក្នុងរយៈពេលកៅសិបប្រាំនាទី។ គាត់ដឹងតាមអ៊ីម៉ែល ក្រោយពាក់កណ្តាលអធ្រាត្រ។ ហេតុអ្វីបានជាវាដំណើរការ។ ទីមួយ: npm install ដំណើរការស្គ្រីបវដ្តជីវិតរបស់មនុស្សចម្លែកតាមលំនាំដើម ហើយស្គ្រីប prepare របស់ git dependency រាប់បញ្ចូល។
1:39 ទីពីរ: worm ចង់បានរឿងមួយ: ថូខឹនដែលបោះពុម្ពដោយគ្មានកត្តាទីពីរ។ បន្ទាប់មកវាសួរ registry ថាអ្នកថែទាំនោះមានអ្វីទៀត ហើយបោះពុម្ពវាទាំងអស់ឡើងវិញជាមួយនឹងខ្លួនវាផ្ទាល់នៅខាងក្នុង។ ទីបី: គ្មានអ្វីនៅក្នុងខ្សែសង្វាក់នេះជាមនុស្សទេ។
ហេតុអ្វីបានជាវាដំណើរការ
1:51 Bot មួយស្នើ ដំណើរការ pipeline ដំឡើង ហើយ worm ឆ្លើយតប: របស់វា សាខា dead-drop មានឈ្មោះ dependabot ស្លាស github-actions ស្លាស fremen។ git blame។ ម៉ូដែលដំឡើងរបស់ npm ហាសិបប្រាំភាគរយ: ស្គ្រីបដំណើរការនៅពេលដំឡើង ដែលត្រូវបានលុបចោលនៅតែអាចដំឡើងបាន ថូខឹនបំបាត់ការផ្ទៀងផ្ទាត់ពីរកត្តាមាន។ CI របស់ TanStack ម្ភៃប្រាំ: ដំណើរការ workflow គោលដៅសំណើទាញដែលមិនបានត្រួតពិនិត្យដំណើរការ កូដ fork ជាមួយនឹងសិទ្ធិសរសេរទៅ cache។ ទម្លាប់ដំឡើង ដប់ប្រាំ: ដប់បីការអាប់ដេតត្រូវបានបញ្ចូលក្នុងរយៈពេលម្ភៃបួននាទី ថូខឹននៅក្នុងបន្ទប់។
2:17 Dependabot ប្រាំ: ដូច្នេះបានទុកចិត្តថា worm ពាក់ឯកសណ្ឋានរបស់វា។
git blame
2:20 កាំផ្ទុះ: សែសិបពីរ TanStack packages។ ម្ភៃពីរបន្តពីគម្រោងដែលមានផ្កាយប្រាំបួន។ ជាងមួយរយហុកសិបនៅទូទាំងប្រព័ន្ធអេកូឡូស៊ីនៅពេលដែល worm ទៅដល់ Mistral។ កំណែដើមនីមួយៗមានហត្ថលេខាត្រឹមត្រូវ: បានបង្កើតដោយផ្លូវការ pipeline។ ពិត។ សាលក្រម ក្រោយស្លាប់: SHIP IT។ អ្នកថែទាំទាំងពីរបានបង្ហោះ postmortems ដែលមានត្រាពេលវេលាក្នុងរយៈពេលមួយថ្ងៃ; ក្នុងរយៈពេលបីថ្ងៃ pipeline បន្តដំឡើងជាមួយ ignore-scripts បំបែក build ពី publish ហើយទម្លាក់ថូខឹនដែលមានអាយុកាលវែង។
កាំផ្ទុះ
2:47 លំនាំដើមរបស់ npm មិនបានផ្លាស់ប្តូរទេ។ ថ្ងៃច័ន្ទ: ignore-scripts នៅលើ install ហើយថូខឹន publish ចេញពី job ដែល ដំណើរការវា។ ផ្ញើឧប្បត្តិហេតុដែលអ្នកនៅតែមិនត្រូវបានអនុញ្ញាតឱ្យនិយាយអំពីមកខ្ញុំ នៅក្នុងមតិយោបល់ ឬនៅ thedailydiff.dev។ ហើយនោះជា diff សម្រាប់ថ្ងៃនេះ។
សាលក្រម
3:00 ខ្ញុំ Niko មកពី 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



