+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

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 รวมอย่างรับผิดชอบ

แหล่งที่มา

  1. Rust Blog, "Supply chain attack on arrayref" (security-response, Aug 20, 2026)blog.rust-lang.org
  2. RUSTSEC-2026-0260 (arrayref)github.com
  3. RustSec issue #3161 (the original report, IOCs, victims)github.com
  4. SafeDep technical analysissafedep.io
  5. GitHub issue on the repo (0.3.11 spotted)github.com
  6. crates.iocrates.io
  7. Hacker News (554 points)news.ycombinator.com
  8. BleepingComputerwww.bleepingcomputer.com

วิดีโอที่เกี่ยวข้อง

postmortem · th · 17 ก.ย. 2569

Dependabot bump เผยแพร่เวิร์ม 22 แพ็กเกจ

บอทเปิด Pull Request มนุษย์รวมมันใน 24 นาทีหลังจากนั้น 95 นาทีหลังจากนั้น เวิร์มได้เผยแพร่ 110 เวอร์ชันที่เป็นอันตรายของ 22 แพ็กเกจ npm ของเขา ภายใต้ชื่อของเขา ด้วยโทเค็นที่มันพบใน CI ของเขา

3:04 ↗
postmortem · th · 13 ก.ย. 2569

JavaScript สิบเอ็ดบรรทัดทำให้เกิดปัญหาอินเทอร์เน็ต การยกเลิกเผยแพร่หนึ่งครั้ง

22 มีนาคม 2016, 21:30 UTC: นักพัฒนาคนหนึ่งยกเลิกการเผยแพร่แพ็กเกจ npm ทั้งหมด 273 รายการของเขา หลังจาก npm ได้มอบชื่อแพ็กเกจ "kik" ให้กับ Kik ซึ่งเป็นแอปส่งข้อความ ที่ตัวแทนสิทธิบัตรของ Kik เคยขู่ว่า

2:52 ↗
postmortem · th · 25 ก.ย. 2569

ข้อผิดพลาดหนึ่งมิลลิวินาทีหยุดการจราจรทางอากาศของสหราชอาณาจักร หกชั่วโมง

เวลา 10:00 น. ของวันอังคารที่ 8 กันยายน คำขอ squawk-code ปกติหนึ่งรายการภายในระบบน่านฟ้าแห่งชาติ (NAS) ของ NATS ถูกขัดจังหวะด้วยข้อความที่มีลำดับความสำคัญสูงกว่า ในขณะที่กำลังอัปเดตค่าบางส่วน หน้าต่าง

3:06 ↗
postmortem · th · 22 ก.ย. 2569

การรีบูตส่งผลให้ Telstra ย้อนกลับไปปี 2006 โทรศัพท์เก้าล้านเครื่อง

วิศวกรในเมลเบิร์นเปิดเครื่องโครงแชสซีควบคุมเวลาอีกครั้งในเวลา 02:50 น. และเมื่อถึงเวลาอาหารเช้า เครือข่ายมือถือที่ใหญ่ที่สุดของออสเตรเลียก็เห็นพ้องต้องกันว่ามันคือเดือนพฤศจิกายน 2006 8 กรกฎาคม 2026: ก

3:15 ↗