# Rust crate รันมัลแวร์ตอนคอมไพล์ 86 นาที

Published: 2026-09-15

Rust crate สี่มาโครที่มี 260 ล้านดาวน์โหลดเพิ่มหนึ่ง dependency และ \`cargo build\` รันไบนารีของคนแปลกหน้าบนเครื่องของคุณ 20 สิงหาคม 2026: arrayref 0.3.10 ลงบน crates.io โดยขึ้นอยู่กับ proc-macro1 — ไม่ใช่ proc-macro2 ซึ่งเป็นตัวจริง — โดยสคริปต์การบิลด์จะดาวน์โหลดเพย์โหลด วางไว้ใน /tmp/rust-setup และเริ่มทำงานแบบดีแทชในขณะที่โปรเจ็กต์ของคุณคอมไพล์ เวอร์ชันที่สะอาดถูกดึงออก ดังนั้นคำเตือนของ Cargo เองจะนำคุณไปสู่เวอร์ชันที่เป็นอันตราย 86 นาทีต่อมามันก็ถูกลบ

Canonical: https://thedailydiff.dev/th/video/2026-09-15-arrayref-proc-macro/

## วิดีโอนี้ครอบคลุมอะไรบ้าง

- cargo build รันไบนารีของคนแปลกหน้า
- หลักฐาน: Rust Blog, SafeDep, Hacker News
- นี่คือ The Daily Diff, การชันสูตรหลังเกิดเหตุ
- ไทม์ไลน์: 02:11 staging → 07:15 published → 08:41 deleted
- กลไก: build.rs, ไม่มีแซนด์บ็อกซ์, เหยื่อล่อ 'yank'

## บท

- 0:00 cargo build รันไบนารีของคนแปลกหน้า
- 0:20 หลักฐาน: Rust Blog, SafeDep, Hacker News
- 0:33 นี่คือ The Daily Diff, การชันสูตรหลังเกิดเหตุ
- 0:40 ไทม์ไลน์: 02:11 staging → 07:15 published → 08:41 deleted
- 1:25 กลไก: build.rs, ไม่มีแซนด์บ็อกซ์, เหยื่อล่อ 'yank'
- 2:05 git blame — การแบ่งแยก
- 2:25 รัศมีการระเบิด: 2,285 ดาวน์โหลด
- 2:45 คำตัดสิน + เส้นวันจันทร์

## บทถอดเสียงที่แปลแล้ว

แปลจากการบรรยายภาษาอังกฤษต้นฉบับ เสียงและคำบรรยายที่มีให้จะควบคุมโดย 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)](https://blog.rust-lang.org/2026/08/20/supply-chain-attack-on-arrayref/) — blog.rust-lang.org
- [RUSTSEC-2026-0260 (arrayref)](https://github.com/rustsec/advisory-db/blob/main/crates/arrayref/RUSTSEC-2026-0260.md) — github.com
- [RustSec issue #3161 (the original report, IOCs, victims)](https://github.com/rustsec/advisory-db/issues/3161) — github.com
- [SafeDep technical analysis](https://safedep.io/arrayref-proc-macro1-rust-build-time-malware/) — safedep.io
- [GitHub issue on the repo (0.3.11 spotted)](https://github.com/droundy/arrayref/issues/33) — github.com
- [crates.io](https://crates.io/crates/arrayref) — crates.io
- [Hacker News (554 points)](https://news.ycombinator.com/item?id=49374269) — news.ycombinator.com
- [BleepingComputer](https://www.bleepingcomputer.com/news/security/hackers-poison-arrayref-rust-crate-to-push-infostealer-malware/) — www.bleepingcomputer.com
