# Một crate Rust đã chạy phần mềm độc hại trong thời gian biên dịch. 86 phút.

Published: 2026-09-15

Một crate Rust có bốn macro với 260 triệu lượt tải xuống đã thêm một phụ thuộc, và \`cargo build\` chạy một tệp nhị phân của người lạ trên máy của bạn. Ngày 20 tháng 8 năm 2026: arrayref 0.3.10 xuất hiện trên crates.io phụ thuộc vào proc-macro1 — không phải proc-macro2, cái thật — mà tập lệnh xây dựng của nó tải xuống một payload, thả nó vào /tmp/rust-setup và khởi chạy nó tách rời trong khi dự án của bạn biên dịch. Các phiên bản sạch đã bị gỡ bỏ nên cảnh báo của Cargo hướng dẫn bạn đến phiên bản bị nhiễm độc. 86 phút sau đó nó bị xóa.

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

## Nội dung video này đề cập

- cargo build chạy tệp nhị phân của người lạ
- Biên nhận: Rust Blog, SafeDep, Hacker News
- Đây là The Daily Diff, postmortem
- Dòng thời gian: 02:11 dàn dựng → 07:15 xuất bản → 08:41 đã xóa
- Cơ chế: build.rs, không có sandbox, mồi nhử gỡ bỏ

## Chương

- 0:00 cargo build chạy tệp nhị phân của người lạ
- 0:20 Biên nhận: Rust Blog, SafeDep, Hacker News
- 0:33 Đây là The Daily Diff, postmortem
- 0:40 Dòng thời gian: 02:11 dàn dựng → 07:15 xuất bản → 08:41 đã xóa
- 1:25 Cơ chế: build.rs, không có sandbox, mồi nhử gỡ bỏ
- 2:05 git blame — sự phân chia
- 2:25 Phạm vi ảnh hưởng: 2.285 lượt tải xuống
- 2:45 Phán quyết + dòng Thứ Hai

## Bản ghi đã dịch

Được dịch từ lời tường thuật tiếng Anh gốc. Âm thanh và phụ đề có sẵn được điều khiển bởi YouTube.

### cargo build chạy tệp nhị phân của người lạ

0:00 Một crate Rust có bốn macro với một phần tư tỷ lượt tải xuống đã thêm một phụ thuộc, và cargo build chạy một tệp nhị phân của người lạ trên máy của bạn. Ngày 20 tháng 8 năm 2026. arrayref 0.3.10 xuất hiện trên crates.io phụ thuộc vào proc-macro1. Không phải proc-macro2, cái thật: chỉ khác một chữ số, và tập lệnh xây dựng của nó chạy một payload trong khi dự án của bạn biên dịch. Nhóm bảo mật của Rust đã xóa nó 86 phút sau đó.

### Biên nhận: Rust Blog, SafeDep, Hacker News

0:22 SafeDep xuất bản bài phân tích. Hacker News: 554 điểm. Nó xảy ra như thế nào, tại sao Cargo lại cho phép, và ai phải chịu trách nhiệm. Đây là The Daily Diff, postmortem. Hai giờ sáng, UTC.

### Đây là The Daily Diff, postmortem

0:33 Một tài khoản tên d-tolney, cách David Tolnay một chữ cái, người duy trì một nửa Rust, xuất bản proc-macro1 1.0.106: proc-macro2 thật,

### Dòng thời gian: 02:11 dàn dựng → 07:15 xuất bản → 08:41 đã xóa

0:41 đã đổi tên. Dàn dựng. 07:11. Phiên bản 1.0.107 thêm một tập lệnh xây dựng, cộng với base64, TLS và một HTTP client. Đối với một trình phân tích mã thông báo. 07:15. Tài khoản của người duy trì xuất bản lại arrayref dưới dạng 0.3.10 và gỡ bỏ mọi phiên bản cũ hơn. Cargo in ra: hãy cân nhắc cập nhật lên một phiên bản không bị gỡ bỏ. Phiên bản duy nhất còn lại là phiên bản bị nhiễm độc.

1:02 Cảnh báo là mồi nhử. Cùng phút, một công ty bảo mật báo cáo nó cho Rust. 07:54, một vấn đề RustSec. 08:29, một vấn đề trên repo; kẻ tấn công trả lời bằng 0.3.11 và một phụ thuộc độc hại thứ hai. 08:41, đã xóa. Tám mươi sáu phút. Tại sao? Một: Cargo xây dựng mọi phụ thuộc đã khai báo, dù được gọi hay không. Một dòng manifest là đủ.

1:21 Hai: một tập lệnh xây dựng chạy trên máy của bạn, với tư cách là bạn, với các khóa SSH và mã thông báo cargo của bạn,

### Cơ chế: build.rs, không có sandbox, mồi nhử gỡ bỏ

1:26 trước khi mã của bạn biên dịch. Không có sandbox, theo thiết kế: đó là cách các crate tìm thư viện C. Ba: bên trong là proc-macro2 thật, vì vậy quá trình xây dựng thành công. Payload: một client TLS tin cậy bất kỳ chứng chỉ nào tải về một tệp nhị phân, thả nó vào /tmp/rust-setup và khởi chạy nó tách rời. Trên Windows nó đi đường vòng qua wscript để thoát khỏi đối tượng công việc của Cargo; một chú thích nguồn nói vậy. Giai đoạn thứ hai, theo luồng RustSec: một công cụ truy cập từ xa nhắm vào

1:52 các trình duyệt và ví tiền điện tử. Thơ mộng, vì những người dùng lớn nhất của arrayref bao gồm secp256k1 và Solana. git blame. Mô hình của Cargo, năm mươi lăm phần trăm: các phụ thuộc chạy mã trên máy của bạn vào thời điểm biên dịch, không có sandbox, và cảnh báo gỡ bỏ đã dẫn mọi người đến

### git blame — sự phân chia

2:07 chất độc. Một tài khoản, ba mươi: một thông tin xác thực xuất bản lại một crate mà một phần tư tỷ lượt tải xuống tin cậy. Chữ số một, mười lăm: một lần gõ phím từ crate đáng tin cậy nhất của Rust, và không ai đọc cây. Phạm vi ảnh hưởng: 2.285 lượt tải xuống trong 86 phút. Dưới mười phần trăm lưu lượng truy cập, vì hầu hết các lockfile giữ 0.3.9. crates.io nói không có bằng chứng sử dụng.

### Phạm vi ảnh hưởng: 2.285 lượt tải xuống

2:27 Hai người trên luồng RustSec không đồng ý; một người tìm thấy một dịch vụ systemd. Trên Hacker News luồng hàng đầu không phải về phần mềm độc hại. Đó là trang crate, nơi 0.3.10 giờ đây chưa bao giờ tồn tại. Phán quyết, postmortem: NEEDS REVIEW. Tám mươi sáu phút để xóa, một bài đăng trên blog cùng ngày, tài khoản bị khóa: phần đó là SHIP IT. Nhưng trang crate không hiển thị gì xảy ra, cargo audit vẫn im lặng trên một bản sao

### Phán quyết + dòng Thứ Hai

2:48 đã lưu trong bộ nhớ cache, và các tập lệnh xây dựng vẫn chạy với tư cách là bạn. Thứ Hai: chạy lệnh tìm của Rust blog, và coi cảnh báo gỡ bỏ là một câu hỏi, không phải là một hướng dẫn. Gửi cho tôi sự cố mà bạn vẫn chưa được phép nói về, trong phần bình luận, hoặc tại the daily diff dot dev. Và đó là diff cho ngày hôm nay. Tôi là Niko từ Axrisi. Hợp nhất một cách có trách nhiệm.

## Nguồn

- [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
