Rust crate รันมัลแวร์ตอนคอมไพล์ 86 นาที
Rust crate สี่มาโครที่มี 260 ล้านดาวน์โหลดเพิ่มหนึ่ง dependency และ `cargo build` รันไบนารีของคนแปลกหน้าบนเครื่องของคุณ 20 สิงหาคม 2026: arrayref 0.3.10 ลงบน crates.io โดยขึ้นอยู่กับ proc-macro1 — ไม่ใช่ proc-macro2 ซึ่งเป็นตัวจริง — โดยสคริปต์การบิลด์จะดาวน์โหลดเพย์โหลด วางไว้ใน /tmp/rust-setup และเริ่มทำงานแบบดีแทชในขณะที่โปรเจ็กต์ของคุณคอมไพล์ เวอร์ชันที่สะอาดถูกดึงออก ดังนั้นคำเตือนของ Cargo เองจะนำคุณไปสู่เวอร์ชันที่เป็นอันตราย 86 นาทีต่อมามันก็ถูกลบ
Rust crate สี่มาโครที่มี 260 ล้านดาวน์โหลดเพิ่มหนึ่ง dependency และ `cargo build` รันไบนารีของคนแปลกหน้าบนเครื่องของคุณ 20 สิงหาคม 2026: arrayref 0.3.10 ลงบน crates.io โดยขึ้นอยู่กับ proc-macro1 — ไม่ใช่ proc-macro2 ซึ่งเป็นตัวจริง — โดยสคริปต์การบิลด์จะดาวน์โหลดเพย์โหลด วางไว้ใน /tmp/rust-setup และเริ่มทำงานแบบดีแทชในขณะที่โปรเจ็กต์ของคุณคอมไพล์ เวอร์ชันที่สะอาดถูกดึงออก ดังนั้นคำเตือนของ Cargo เองจะนำคุณไปสู่เวอร์ชันที่เป็นอันตราย 86 นาทีต่อมามันก็ถูกลบ
อ่านฉบับลายลักษณ์อักษร (ภาษาอังกฤษ) ↗
วิดีโอนี้ครอบคลุมอะไรบ้าง
- cargo build รันไบนารีของคนแปลกหน้า
- หลักฐาน: Rust Blog, SafeDep, Hacker News
- นี่คือ The Daily Diff, การชันสูตรหลังเกิดเหตุ
- ไทม์ไลน์: 02:11 staging → 07:15 published → 08:41 deleted
- กลไก: build.rs, ไม่มีแซนด์บ็อกซ์, เหยื่อล่อ 'yank'
บทถอดเสียงที่แปลแล้ว
แปลจากการบรรยายภาษาอังกฤษต้นฉบับ เสียงและคำบรรยายที่มีให้จะควบคุมโดย YouTube
cargo build รันไบนารีของคนแปลกหน้า
0:00 Rust crate สี่มาโครที่มีการดาวน์โหลดถึงหนึ่งในสี่พันล้านเพิ่มมาหนึ่ง dependency และ cargo build ก็รันไบนารีของคนแปลกหน้าบนเครื่องของคุณ 20 สิงหาคม 2026 arrayref 0.3.10 ลงบน crates.io โดยขึ้นอยู่กับ proc-macro1 ไม่ใช่ proc-macro2 ซึ่งเป็นตัวจริง: เลขผิดไปหนึ่งตัว และสคริปต์บิลด์ของมันรัน เพย์โหลดในขณะที่โปรเจ็กต์ของคุณกำลังคอมไพล์ ทีมรักษาความปลอดภัยของ Rust ลบมันในอีก 86 นาทีต่อมา
หลักฐาน: Rust Blog, SafeDep, Hacker News
0:22 SafeDep เผยแพร่การวิเคราะห์ Hacker News: 554 คะแนน มันเกิดขึ้นได้อย่างไร ทำไม Cargo ถึงยอมให้มันเกิดขึ้น และใครควรถูกตำหนิ นี่คือ The Daily Diff, การชันสูตรหลังเกิดเหตุ ตีสอง, เวลา UTC
นี่คือ The Daily Diff, การชันสูตรหลังเกิดเหตุ
0:33 บัญชีชื่อ d-tolney ซึ่งตัวอักษรเดียวกับ David Tolnay ผู้ดูแล Rust ครึ่งหนึ่ง เผยแพร่ proc-macro1 1.0.106: proc-macro2 ตัวจริง
ไทม์ไลน์: 02:11 staging → 07:15 published → 08:41 deleted
0:41 ที่เปลี่ยนชื่อ กำลังจัดเตรียม 07:11 น. เวอร์ชัน 1.0.107 เพิ่มสคริปต์บิลด์ บวกกับ base64, TLS และ HTTP client สำหรับตัวแยกโทเค็น 07:15 น. บัญชีของผู้ดูแลระบบเผยแพร่ arrayref ซ้ำเป็น 0.3.10 และ ดึงเวอร์ชันเก่าทั้งหมดออก Cargo พิมพ์: พิจารณาอัปเดตเป็นเวอร์ชันที่ไม่ได้ถูกดึงออก เหลือเพียงเวอร์ชันที่เป็นอันตรายเท่านั้น
1:02 คำเตือนคือเหยื่อล่อ นาทีเดียวกัน บริษัทรักษาความปลอดภัยรายหนึ่งรายงานเรื่องนี้ไปยัง Rust 07:54 น. ปัญหา RustSec 08:29 น. ปัญหาบน repo; ผู้โจมตีตอบกลับด้วย 0.3.11 และ dependency ที่เป็นอันตรายอันที่สอง 08:41 น. ถูกลบ แปดสิบหกนาที ทำไม? หนึ่ง: Cargo บิลด์ทุก dependency ที่ประกาศไว้ ไม่ว่าจะถูกเรียกใช้หรือไม่ก็ตาม บรรทัดเดียวใน manifest ก็เพียงพอแล้ว
1:21 สอง: สคริปต์บิลด์รันบนเครื่องของคุณ ในฐานะคุณ ด้วยคีย์ SSH และ cargo
กลไก: build.rs, ไม่มีแซนด์บ็อกซ์, เหยื่อล่อ 'yank'
1:26 token ของคุณ ก่อนที่โค้ดของคุณจะคอมไพล์ ไม่มีแซนด์บ็อกซ์ ตามการออกแบบ: นี่คือวิธีที่ crates ค้นหาไลบรารี C สาม: ภายในเป็น proc-macro2 ตัวจริง ดังนั้นการบิลด์จึงสำเร็จ เพย์โหลด: ไคลเอนต์ TLS ที่เชื่อถือใบรับรองใดๆ ดึงไบนารี วางไว้ใน /tmp/rust-setup และเริ่มทำงานแบบดีแทช บน Windows มันจะเปลี่ยนเส้นทางผ่าน wscript เพื่อหลีกเลี่ยง job object ของ Cargo; แหล่งที่มา ความคิดเห็นระบุไว้ ขั้นตอนที่สอง ตามกระทู้ RustSec: เครื่องมือเข้าถึงระยะไกลที่มุ่งเป้าไปที่
1:52 เบราว์เซอร์และกระเป๋าเงินคริปโต น่าทึ่ง เพราะผู้ใช้รายใหญ่ที่สุดของ arrayref รวมถึง secp256k1 และ Solana git blame โมเดลของ Cargo, ห้าสิบห้าเปอร์เซ็นต์: dependency รันโค้ดบนเครื่องของคุณ ในเวลาคอมไพล์ ไม่มีแซนด์บ็อกซ์ และคำเตือนการ 'yank' นำคนไปสู่
git blame — การแบ่งแยก
2:07 ยาพิษ บัญชีเดียว, สามสิบ: หนึ่ง credential เผยแพร่ crate ซ้ำที่หนึ่งในสี่ของ พันล้านดาวน์โหลดไว้วางใจ เลขหนึ่ง, สิบห้า: การกดแป้นพิมพ์หนึ่งครั้งจาก crate ที่น่าเชื่อถือที่สุดของ Rust และไม่มีใครอ่านโครงสร้าง รัศมีผลกระทบ: 2,285 ดาวน์โหลดใน 86 นาที น้อยกว่าสิบเปอร์เซ็นต์ของการรับส่งข้อมูล เพราะ lockfiles ส่วนใหญ่ยังคงเป็น 0.3.9 crates.io ระบุว่าไม่มีหลักฐานการใช้งาน
รัศมีการระเบิด: 2,285 ดาวน์โหลด
2:27 สองคนในกระทู้ RustSec ไม่เห็นด้วย; คนหนึ่งพบ systemd service ใน Hacker News กระทู้ยอดนิยมไม่ใช่เรื่องมัลแวร์ มันคือหน้า crate ที่ตอนนี้ 0.3.10 ไม่เคยมีอยู่จริง คำตัดสิน, การชันสูตรหลังเกิดเหตุ: NEEDS REVIEW แปดสิบหกนาทีในการลบ, โพสต์บล็อกในวันเดียวกัน, บัญชีถูกล็อก: ส่วนนั้น คือ SHIP IT แต่หน้า crate แสดงว่าไม่มีอะไรเกิดขึ้น, cargo audit ยังคงเงียบเกี่ยวกับ
คำตัดสิน + เส้นวันจันทร์
2:48 สำเนาที่แคชไว้ และสคริปต์บิลด์ยังคงรันในฐานะคุณ วันจันทร์: รันคำสั่ง find ของ Rust blog และถือว่าคำเตือนการ 'yank' เป็น คำถาม ไม่ใช่คำแนะนำ ส่งเหตุการณ์ที่คุณยังไม่ได้รับอนุญาตให้พูดถึงมาให้ฉัน ในความคิดเห็น หรือที่ the daily diff dot dev และนั่นคือความแตกต่างสำหรับวันนี้ ฉันคือ Niko จาก Axrisi รวมอย่างรับผิดชอบ
แหล่งที่มา
- Rust Blog, "Supply chain attack on arrayref" (security-response, Aug 20, 2026)blog.rust-lang.org
- RUSTSEC-2026-0260 (arrayref)github.com
- RustSec issue #3161 (the original report, IOCs, victims)github.com
- SafeDep technical analysissafedep.io
- GitHub issue on the repo (0.3.11 spotted)github.com
- crates.iocrates.io
- Hacker News (554 points)news.ycombinator.com
- BleepingComputerwww.bleepingcomputer.com



