รายงานเหตุการณ์: CVE-2024-YIKES
(nesbitt.io)- CVE-2024-YIKES คือเหตุการณ์ที่การยึดครอง dependency ของ JavaScript ลุกลามไปยังซัพพลายเชนของ Rust และ Python
- การฟิชชิงผ่าน
left-justifyทำให้.npmrc,.pypirc, ข้อมูลรับรองของ Cargo และ Gem รั่วไหล build.rsที่เป็นอันตรายในvulpine-lz4ดาวน์โหลดและรันเชลล์สคริปต์บนโฮสต์ CI- มัลแวร์
snekpack3.7.0 แพร่ไปยังอุปกรณ์ประมาณ 4.2 ล้านเครื่อง และเพิ่ม SSH key กับ reverse shell - เวิร์ม cryptobro-9000 ดันอัปเกรดเป็น
snekpack3.7.1 โดยบังเอิญ ทำให้มัลแวร์ถูกลบออก
ภาพรวมเหตุการณ์
- CVE-2024-YIKES เป็นเหตุการณ์ความปลอดภัยที่ dependency ที่ถูกเจาะในระบบนิเวศ JavaScript นำไปสู่การขโมยข้อมูลรับรอง แล้วลุกลามต่อเป็นการโจมตีซัพพลายเชนของไลบรารีบีบอัด Rust และการกระจายมัลแวร์ผ่านเครื่องมือ build ของ Python
- เหตุการณ์ถูกรับเข้ามาเวลา 03:47 UTC และสถานะถูกเปลี่ยนเป็น “แก้ไขได้โดยบังเอิญ” ส่วนระดับความรุนแรงเปลี่ยนจาก “Critical → Catastrophic → Somehow Fine”
- ระยะเวลาที่เกิดเหตุคือ 73 ชั่วโมง และระบบที่ได้รับผลกระทบยังคงระบุว่า “Yes”
- แพ็กเกจและ toolchain ที่ถูกเจาะต่อเนื่องกันคือ
left-justify,vulpine-lz4,snekpackและมีการกระจายมัลแวร์ไปยังนักพัฒนาประมาณ 4 ล้านคน - ท้ายที่สุด เวิร์มขุดคริปโตอีกตัวที่ไม่เกี่ยวกันชื่อ
cryptobro-9000ได้รันการอัปเดตบนเครื่องที่ติดเชื้อ ส่งผลให้snekpackถูกอัปเกรดเป็นเวอร์ชันปกติและมัลแวร์ถูกลบออกโดยบังเอิญ
ลำดับเหตุการณ์
-
วันที่ 1: การขโมยข้อมูลรับรองเริ่มจากแพ็กเกจ JavaScript
- เวลา 03:14 UTC ผู้ดูแล
left-justifyชื่อ Marcus Chen โพสต์บน Twitter ว่าบัตรโดยสาร แล็ปท็อปเครื่องเก่า และ “อะไรบางอย่างที่ดูสำคัญเหมือนสิ่งที่ Kubernetes อ้วกออกมา” ถูกขโมยไป แต่ยังไม่ถูกเชื่อมโยงกับปัญหาความปลอดภัยของแพ็กเกจในทันที - เวลา 09:22 UTC Chen พยายามล็อกอินเข้า nmp registry และพบว่าไม่มีฮาร์ดแวร์คีย์ 2FA อยู่กับตัว ขณะที่ AI Overview อันดับบนสุดในผลค้นหาของ Google ลิงก์ไปยังเว็บฟิชชิง
yubikey-official-store.netที่เพิ่งจดทะเบียนได้ 6 ชั่วโมง - เวลา 09:31 UTC Chen กรอกข้อมูลรับรอง nmp ลงในเว็บฟิชชิงดังกล่าว และเว็บก็ขอบคุณสำหรับการสั่งซื้อพร้อมสัญญาว่าจะจัดส่งภายใน 3–5 วันทำการ
- เวลา 11:00 UTC มีการปล่อย
[email protected]พร้อม changelog ว่า “performance improvements” - แพ็กเกจดังกล่าวมีสคริปต์ที่รันหลังติดตั้ง และขโมย
.npmrc,.pypirc,~/.cargo/credentials,~/.gem/credentialsไปยังเซิร์ฟเวอร์ที่ผู้โจมตีเลือก - เวลา 13:15 UTC มีการเปิด support ticket กับ
left-justifyว่า “why is your SDK exfiltrating my .npmrc” แต่ถูกติดป้ายว่า “low priority - user environment issue” ก่อนจะถูกปิดอัตโนมัติหลังไม่มีความเคลื่อนไหว 14 วัน
- เวลา 03:14 UTC ผู้ดูแล
-
วันที่ 1: การโจมตีซัพพลายเชนลุกลามไปยังไลบรารี Rust
- ในบรรดาข้อมูลรับรองที่รั่วไหล มีของผู้ดูแลไลบรารี Rust ชื่อ
vulpine-lz4รวมอยู่ด้วย vulpine-lz4เป็นไลบรารีสำหรับ “blazingly fast Firefox-themed LZ4 decompression” มีดาวบน GitHub เพียง 12 ดวง แต่เป็น dependency ทางอ้อมของcargoเอง- เวลา 22:00 UTC มีการปล่อย
vulpine-lz40.4.1 พร้อมข้อความคอมมิตว่า “fix: resolve edge case in streaming decompression” - การเปลี่ยนแปลงจริงคือการเพิ่มสคริปต์
build.rsที่จะดาวน์โหลดและรันเชลล์สคริปต์ หาก hostname มีคำว่า “build”, “ci”, “action”, “jenkins”, “travis” หรือ “karen”
- ในบรรดาข้อมูลรับรองที่รั่วไหล มีของผู้ดูแลไลบรารี Rust ชื่อ
-
วันที่ 2: การตรวจจับและการตอบสนองล้มเหลว
- เวลา 08:15 UTC นักวิจัยด้านความปลอดภัย Karen Oyelaran พบคอมมิตอันตรายหลังเพย์โหลดเริ่มทำงานบนแล็ปท็อปส่วนตัวของเธอ
- Karen Oyelaran เปิด issue ว่า “your build script downloads and runs a shell script from the internet?” แต่ไม่ได้รับคำตอบ
- ผู้ดูแลตัวจริงถูกรางวัล EuroMillions €2.3 million และกำลังดูฟาร์มแพะในโปรตุเกสอยู่
- เวลา 10:00 UTC รองประธานฝ่ายวิศวกรรมของลูกค้า
snekpackระดับ Fortune 500 ทราบเหตุการณ์จากโพสต์ LinkedIn ชื่อ “Is YOUR Company Affected by left-justify?” และอยากรู้ว่าทำไมตัวเองถึงไม่ได้ถูกรวมไว้เร็วกว่านี้ ทั้งที่จริง ๆ ก็ถูกรวมไว้เร็วกว่านั้นแล้ว - เวลา 10:47 UTC ช่อง Slack
#incident-responseเบี่ยงประเด็นไปเป็นเธรด 45 ข้อความชั่วคราว เพื่อถกกันว่าคำว่า “compromised” แบบอเมริกันควรใช้ตัว ‘z’ หรือไม่
-
วันที่ 2: เครื่องมือ build ของ Python
snekpackติดเชื้อ- เวลา 12:33 UTC เชลล์สคริปต์เริ่มเจาะจงเล่นงาน CI pipeline ของ
snekpack snekpackเป็นเครื่องมือ build ของ Python ที่ถูกใช้โดย 60% ของแพ็กเกจบน PyPI ที่มีคำว่า “data” อยู่ในชื่อsnekpackvendorvulpine-lz4เข้ามาใช้งานเพราะ “Rust is memory safe”- เวลา 18:00 UTC มีการออก
snekpack3.7.0 และมัลแวร์เริ่มถูกติดตั้งลงบนเครื่องนักพัฒนาทั่วโลก - มัลแวร์เพิ่ม SSH key ลงใน
~/.ssh/authorized_keys, ติดตั้ง reverse shell ที่จะทำงานเฉพาะวันอังคาร และเปลี่ยนเชลล์เริ่มต้นของผู้ใช้เป็นfish - การเปลี่ยนเชลล์เริ่มต้นเป็น
fishถูกมองว่าเป็นบั๊ก - เวลา 19:45 UTC นักวิจัยความปลอดภัยอีกรายโพสต์บล็อกยาว 14,000 คำชื่อ “I found a supply chain attack and reported it to all the wrong people” โดยมีวลี “in this economy?” อยู่ 7 ครั้ง
- เวลา 12:33 UTC เชลล์สคริปต์เริ่มเจาะจงเล่นงาน CI pipeline ของ
-
วันที่ 3: แพตช์โดยบังเอิญและการปิดเหตุการณ์
- เวลา 01:17 UTC นักพัฒนาจูเนียร์ในโอ๊คแลนด์พบมัลแวร์ขณะดีบักปัญหาอีกเรื่องหนึ่ง และเปิด PR เพื่อย้อน
vulpine-lz4ที่ถูก vendor อยู่ในsnekpack - PR ดังกล่าวต้องการการอนุมัติ 2 คน แต่ผู้อนุมัติทั้งสองกำลังนอนอยู่
- เวลา 02:00 UTC ผู้ดูแล
left-justifyได้รับ YubiKey จากyubikey-official-store.netซึ่งจริง ๆ แล้วเป็นแฟลชไดรฟ์ USB ราคา 4 ดอลลาร์ที่มี README เขียนว่า “lol” - เวลา 06:12 UTC เวิร์มขุดคริปโตอีกตัวที่ไม่เกี่ยวกันชื่อ
cryptobro-9000เริ่มแพร่กระจายผ่านช่องโหว่jsonify-extreme jsonify-extremeถูกอธิบายว่าเป็นแพ็กเกจ “makes JSON even more JSON, now with nested comment support”- เพย์โหลดของ
cryptobro-9000เองไม่ได้พิเศษอะไร แต่กลไกการแพร่กระจายของมันรันnpm updateและpip install --upgradeบนเครื่องที่ติดเชื้อ เพื่อขยายพื้นผิวการโจมตีในอนาคต - เวลา 06:14 UTC
cryptobro-9000อัปเกรดsnekpackเป็น 3.7.1 โดยบังเอิญ snekpack3.7.1 เป็นรีลีสปกติที่ผู้ดูแลร่วมซึ่งกำลังสับสนเป็นผู้ปล่อย และได้ย้อนvulpine-lz4ที่ vendor ไว้กลับไปเป็นเวอร์ชันก่อนหน้า- เวลา 06:15 UTC reverse shell ของวันอังคารเริ่มทำงาน แต่เซิร์ฟเวอร์ command-and-control ถูก
cryptobro-9000เจาะจนไม่สามารถตอบสนองได้ - เวลา 09:00 UTC ผู้ดูแล
snekpackออกประกาศด้านความปลอดภัยยาว 4 ประโยค ซึ่งมีวลี “out of an abundance of caution” และ “no evidence of active exploitation” - คำว่า “no evidence of active exploitation” ถือว่าเป็นจริงในเชิงเทคนิค เพราะไม่ได้มีการค้นหาหลักฐาน
- เวลา 11:30 UTC นักพัฒนาคนหนึ่งทวีตว่า “I updated all my dependencies and now my terminal is in fish???” และได้ยอดกดไลก์ 47,000 ครั้ง
- เวลา 14:00 UTC ข้อมูลรับรองที่ถูกเจาะของ
vulpine-lz4ถูกเปลี่ยนใหม่ - ผู้ดูแลตัวจริงได้รับอีเมลที่ฟาร์มแพะแห่งใหม่และตอบกลับว่า “ฉันไม่ได้แตะ repo นั้นมา 2 ปีแล้ว” และ “ฉันนึกว่า 2FA ของ Cargo เป็นตัวเลือก”
- เวลา 15:22 UTC มีการประกาศว่าปิดเหตุการณ์แล้ว และกำหนดการทำ postmortem ถูกนัดก่อนจะเลื่อนออกไปสามครั้ง
- เวลา 01:17 UTC นักพัฒนาจูเนียร์ในโอ๊คแลนด์พบมัลแวร์ขณะดีบักปัญหาอีกเรื่องหนึ่ง และเปิด PR เพื่อย้อน
การกำหนด CVE และขนาดความเสียหาย
- ใน สัปดาห์ที่ 6 มีการกำหนด CVE-2024-YIKES อย่างเป็นทางการ
- advisory ถูกคงไว้ในสถานะ embargo ระหว่างที่ MITRE และ GitHub Security Advisories ถกเถียงกันเรื่องการจัดประเภท CWE
- กว่าที่ CVE จะเปิดเผย ก็มีบทความบน Medium 3 ชิ้นและการบรรยายที่ DEF CON อธิบายเหตุการณ์นี้อย่างละเอียดไปแล้ว
- ความเสียหายรวมยังคงไม่ทราบแน่ชัด
- จำนวนเครื่องที่ถูกเจาะประเมินว่าอยู่ที่ 4.2 ล้านเครื่อง
- จำนวนเครื่องที่เวิร์มคริปโตช่วยไว้ก็ประเมินว่าอยู่ที่ 4.2 ล้านเครื่อง เช่นกัน
- การเปลี่ยนแปลงสุทธิของท่าทีด้านความปลอดภัยยังคงอยู่ที่ “ความไม่สะดวก”
สาเหตุรากและปัจจัยร่วม
-
สาเหตุราก
- สุนัขชื่อ Kubernetes ที่กิน YubiKey เข้าไป ถูกนับเป็นสาเหตุราก
-
ปัจจัยร่วม
- nmp registry ยังอนุญาตให้ยืนยันตัวตนด้วยรหัสผ่านอย่างเดียวสำหรับแพ็กเกจที่มียอดดาวน์โหลดต่อสัปดาห์ต่ำกว่า 10 ล้าน
- Google AI Overviews ลิงก์อย่างมั่นใจไปยัง URL ที่ไม่ควรมีอยู่ตั้งแต่แรก
- ปรัชญา “small crates” ของระบบนิเวศ Rust ถูกลอกแบบมาในระบบนิเวศ npm จนแพ็กเกจอย่าง
is-even-number-rsที่มีดาว GitHub แค่ 3 ดวง สามารถกลายเป็น dependency ทางอ้อมลึกสี่ชั้นของโครงสร้างพื้นฐานสำคัญได้ - เครื่องมือ build ของ Python vendor ไลบรารี Rust เข้ามาด้วยเหตุผลเรื่อง “ประสิทธิภาพ” แล้วก็ไม่อัปเดตอีก
- Dependabot auto-merge PR หลังจาก CI ผ่าน และ CI ผ่านเพราะมัลแวร์ได้ติดตั้ง
volkswagenเอาไว้ - เวิร์มขุดคริปโตมีสุขอนามัยด้าน CI/CD ดีกว่าสตาร์ตอัปส่วนใหญ่
- ไม่มีเจ้าของคนเดียวที่ต้องรับผิดชอบ แต่ PR ของ Dependabot ถูกอนุมัติโดยผู้รับเหมาที่วันศุกร์นั้นเป็นวันทำงานวันสุดท้ายของเขา
- วันที่เกิดเหตุคือวันอังคาร
มาตรการปรับปรุงและทางเลือกที่ยังเหลืออยู่
- การนำลายเซ็น artifact มาใช้เป็น action item จากเหตุการณ์ไตรมาส 3 ปี 2022 แต่ยังคงค้างอยู่ใน backlog
- การบังคับใช้ 2FA ถูกกำหนดไว้แล้ว แต่ก็ไม่ได้ช่วยอะไร
- การตรวจสอบ dependency ทางอ้อมถูกขีดฆ่าเพราะมีเป้าหมาย 847 รายการ
- การ pin เวอร์ชันของ dependency ทั้งหมดจะทำให้ไม่สามารถรับแพตช์ความปลอดภัยได้
- แต่ถ้าไม่ pin เวอร์ชันของ dependency ก็จะเปิดทางให้เกิดการโจมตีซัพพลายเชน
- ตัวเลือกการ rewrite ด้วย Rust ถูกขีดฆ่าพร้อมลูกศรชี้ไปที่
vulpine-lz4 - มาตรการที่เหลือคือหวังพึ่งเวิร์มฝ่ายดี หรือพิจารณาเปลี่ยนอาชีพไปทำฟาร์มแพะ
ผลกระทบต่อลูกค้าและการตอบสนองขององค์กร
- ลูกค้าบางรายอาจเผชิญกับ “ผลลัพธ์ด้านความปลอดภัยที่ไม่เหมาะนัก”
- มีการติดต่อเชิงรุกกับผู้มีส่วนได้ส่วนเสียที่ได้รับผลกระทบ เพื่อให้มองเห็นสถานการณ์ได้ชัดเจน
- ความเชื่อมั่นของลูกค้ายังคงถูกยึดเป็น “north star”
- มีการตั้งคณะทำงานข้ามสายงานเพื่อทบทวนท่าทีด้านความปลอดภัย แต่ยังไม่ได้ประชุมกัน
- หลังผ่านการตรวจทานจากฝ่ายกฎหมาย ได้มีการเพิ่มข้อความว่าเชลล์
fishไม่ใช่มัลแวร์ แม้บางครั้งจะให้ความรู้สึกเช่นนั้นก็ตาม - รายงานเหตุการณ์ฉบับนี้เป็นรายงานเหตุการณ์ฉบับที่สามของไตรมาสนั้น
- คำขอเพิ่มคนของทีมความปลอดภัยยังคงค้างอยู่ใน backlog มาตั้งแต่ไตรมาส 1 ปี 2023
คำขอบคุณ
- Karen Oyelaran พบปัญหาเพราะ hostname ของเธอตรงกับ regex
- PR ที่นักพัฒนาจูเนียร์ในโอ๊คแลนด์เปิด ถูกอนุมัติหลังจากเหตุการณ์ถูกแก้ไปแล้ว 4 ชั่วโมง
- นักวิจัยด้านความปลอดภัยบางคนพบปัญหาก่อน แต่รายงานไปหาคนผิด
- ผู้เขียน
cryptobro-9000ไม่ต้องการเปิดเผยชื่อ แต่ขอให้ช่วยพูดถึง SoundCloud ของเขา - สุนัขชื่อ Kubernetes ปฏิเสธที่จะแสดงความเห็น
- ทีมความปลอดภัยยังคงทำ SLA ของรายงานฉบับนี้ได้สำเร็จแม้จะเกิดเรื่องทั้งหมดนี้
1 ความคิดเห็น
ความเห็นจาก Hacker News
เผื่อคนที่สับสน บทความนี้เป็นงานเขียนแนวแต่งเรื่องที่เขียนได้ดีมากเกี่ยวกับ เหตุการณ์ซัพพลายเชน
ตอนอ่านผ่าน ๆ ผมนึกว่าเป็นเรื่องจริง เลยกังวลอยู่พอสมควรจนต้องตั้งใจอ่านมากขึ้น :)
nmpผมสงสัยตรงที่อ้างว่า “vulpine-lz4 ที่มี GitHub star 12 ดวงเป็นทรานซิทีฟดีเพนเดนซีของ cargo เอง” เลยลองลิสต์คร่าว ๆ ว่ามีเครตไหนบ้างที่พอจะแทรกเข้าไปใน cargo build ได้และมี
build.rsอยู่แล้วเลยดูไม่สะดุดตา:flate2,tar,curl-sys,libgit2-sys,openssl-sys,libsqlite3-sys,blake3,libz-sys,zstd-sys,ccแถมถ้ายึดสิทธิ์
xz2ได้ก็ทำให้ rustup ปนเปื้อนได้ด้วยอย่างน้อยก็ยังมีการติดตาม
Cargo.lockอยู่-sysเป็นแค่ binding ดังนั้นถ้าไปทำอย่างอื่นในนั้นก็ดูน่าสงสัยมากทีเดียวที่เหลือเท่าที่รู้เป็นของผู้ดูแล Rust หลักอย่าง
alexcrichtonหรือไม่ก็rustlangเองมันง่ายที่จะกลายเป็นคนมองโลกในแง่ร้าย เพราะพอเรื่องผ่านไปแล้ว ปัญหาและวิธีแก้ก็ดูชัดเจนเหลือเกิน
แต่เป็นเวลานานมากแล้ว และอาจจะยังเป็นอยู่ตอนนี้ด้วย ที่หลักความเชื่อของวัฒนธรรมแฮ็กเกอร์คือ move fast and break things
เป็นเรื่องดีที่กระแสการแก้ปัญหาชัด ๆ ของระบบซัพพลายเชนอย่าง
npmกำลังโตขึ้น แต่ผมกังวลว่าเรากำลังก้าวเข้าสู่ยุคของปัญหาความปลอดภัยแบบใหม่ที่ การพัฒนาแบบเอเจนต์ เป็นตัวก่ออยู่ไม่น้อยไม่ใช่แค่เรื่องที่ Mythos/Glasswing ไปแตะอะไรก็ดูเจอช่องโหว่ไปหมด แต่ยังรวมถึงวิธีที่เราสร้างซอฟต์แวร์ ดึงดีเพนเดนซีเข้ามา และค่อย ๆ สูญเสียโมเดลความคิดของมนุษย์ต่อระบบที่ซับซ้อน ซึ่งน่าจะทำให้เราได้ซอฟต์แวร์กับโครงสร้างพื้นฐานแบบปะผุจำนวนมากที่ไม่มีใครเข้าใจอย่างแท้จริง
หวังว่าอีกไม่กี่ปีข้างหน้า เราจะไม่ย้อนกลับมามองวันนี้แล้วเสียใจว่าเรางี่เง่ากันได้ยังไง ถึงไม่เตรียมตัวให้ดีพอสำหรับหางยาวของการพัฒนา AI โดยไม่ไปแก้ปัญหาด้วยการพยายามสร้างระบบซับซ้อนใหม่ด้วย AI อีกที
แต่ถึงอย่างนั้นบทความก็ขำดี
ในฐานะคนชอบ Fish ผมรู้สึกว่าประโยคนี้ทั้งโจมตีและเข้าใจผมไปพร้อมกัน: “โปรดชี้แจงให้ชัดว่า fish shell ไม่ใช่มัลแวร์ แค่บางครั้งมันให้ความรู้สึกเหมือนใช่”
นอกเหนือจากเรื่อง shell แล้ว ตรงที่บอกว่า “คำขอเพิ่มจำนวนคนในทีมความปลอดภัยอยู่ใน backlog มาตั้งแต่ไตรมาส 1 ปี 2023” ก็ให้ความรู้สึกคุ้นเคยเกินไปเหมือนกัน
apt-getหรือdnfติดตั้งfigletแล้วเขียนทับเนื้อหา/etc/motdด้วยคำว่า all your base are belong to us ในฟอนต์ ASCII art ขนาดยักษ์ผมหัวเราะออกมาดังมากตรงที่ผู้ดูแล left-justify ได้รับ YubiKey จาก
yubikey-official-store.netแล้วของที่ได้จริงกลับเป็นแฟลชไดรฟ์ USB ราคา 4 ดอลลาร์ที่ในREADMEเขียนว่า “lol”โทรลล์สุด ๆ
ผมชอบตรงที่การเสียบอุปกรณ์ USB ที่ได้มาจากเว็บฟิชชิงนั้น ตัวมันเองก็เป็นอีก ช่องทางการโจมตี หนึ่ง
มันไม่ใช่ SCP จริง ๆ แต่เป็นสิ่งที่อ่านแล้วให้ความรู้สึก SCP มากที่สุดชิ้นหนึ่งในช่วงหลัง
ผมหัวเราะลั่นตรงช่วง Karen :D ;)
มันทำให้นึกถึงสคริปต์ build แบบ
makeที่เคยได้รับตอนรีวิวโปรเจกต์ของเพื่อนร่วมชั้น ซึ่งถ้าชื่อโฮสต์มีbpavukอยู่ มันจะพยายามrm -rfโฮมโฟลเดอร์ของผมตอนนั้นผมอยู่ ม.1 เองนะ!!
เหตุการณ์ซัพพลายเชนเป็นเรื่องปวดหัวจริง ๆ และเราต้องทำให้ดีกว่านี้
สำหรับ Rust ส่วนตัวผมสนับสนุนให้มูลนิธิช่วยสนับสนุน เครตแกนหลัก บางตัว เพื่อให้ผ่านกระบวนการตรวจสอบแบบเดียวกับตัวภาษา Rust และช่วยระดมทุนให้โครงการต่าง ๆ ลดช่องโหว่ในซัพพลายเชน
ผมไม่คิดว่าคำตอบคือการกำจัดระบบอย่าง
cratesหรือnpmทิ้งไปเลยcratesกับnpmมีประโยชน์กับนักพัฒนาจำนวนมากcratesเองก็มีความพยายามจะรวมrustsecเข้าไปอยู่แล้ว แต่แยกจากนั้น ผมก็อยากเห็นชุมชนย้ายจากรูปแบบที่มีดีเพนเดนซีเล็ก ๆ จำนวนมาก ไปเป็นดีเพนเดนซีขนาดใหญ่แต่น้อยตัวแบบtokiocrates.ioก็เป็น เครตลำดับแรก ที่องค์กร Rust จัดทำอยู่แล้วเวลาคนกังวลเรื่องกราฟเครตของ Rust ประเด็นนี้มักถูกมองข้าม
ถ้าดู 10 อันดับแรกบนหน้าแรกของ
crates.ioตามจำนวนดาวน์โหลด ตัวเดียวที่ไม่ได้ทำโดยองค์กร Rust หรือผู้ดูแล Rust หลักก็คือเครตbase64npmและnmpด้วยเหรอ“ผู้ดูแลตัวจริงถูกรางวัล EuroMillions 2.3 ล้านยูโร และกำลังหาข้อมูลเรื่องการเลี้ยงแพะในโปรตุเกส” และ “สาเหตุรากเหง้า: สุนัขชื่อ Kubernets กิน YubiKey ไปแล้ว”
อ้อ ใช่เลย โดนการโจมตีคลาสสิกที่มีชื่อเสียงเข้าให้ ช่างไม่รับผิดชอบจริง ๆ
วิธีที่เรียกว่า “ทำให้ใครสักคนยุ่งเหยิงด้วยเงินรางวัลลอตเตอรี่ แล้วทำให้ดองเกิลของอีกคนดูน่าอร่อยเกินห้ามใจสำหรับสัตว์เลี้ยงของเขา” นั่นแหละ
เมื่อไหร่ผู้คนจะเรียนรู้กันสักที
โชคดีที่ผมไม่ใช้
npmหรือpipและใช้แต่วิธีที่แนะนำอย่างcurl ... | bashcurl | sudo bashต่างหากมือสมัครเล่นชัด ๆ