Một sự cố chuỗi cung ứng mới trong hệ sinh thái Rust đang thu hút sự chú ý của cộng đồng phát triển phần mềm sau khi Rust Project gỡ bỏ các phiên bản độc hại của ba crate phổ biến trên crates.io. Theo The Hacker News, các phiên bản bị ảnh hưởng gồm arrayref 0.3.10, internment 0.8.7 và append-only-vec 0.1.9, đều được phát hành từ cùng một tài khoản chủ sở hữu vào ngày 20/08/2026.
Điểm đáng chú ý là mã độc không cần ứng dụng gọi trực tiếp hàm nào trong các crate nói trên. Payload được kích hoạt thông qua build script của một dependency giả mạo tên proc-macro1, một tên typosquat dễ gây nhầm lẫn với proc-macro2. Vì vậy, chỉ cần một dự án resolve và build dependency bị nhiễm, mã độc đã có thể chạy trong môi trường của nhà phát triển.
Ba phiên bản độc hại tồn tại trong thời gian ngắn nhưng rủi ro lớn
The Hacker News dẫn thông tin từ Rust Security Response Team cho biết các phiên bản độc hại đã bị gỡ trong khoảng 86 đến 107 phút sau khi xuất hiện. Cụ thể, arrayref 0.3.10 tồn tại khoảng 86 phút, internment 0.8.7 khoảng 90 phút và append-only-vec 0.1.9 khoảng 107 phút.
Dù thời gian hiện diện không dài, mức độ đáng lo nằm ở vị trí của các package trong chuỗi phụ thuộc. Riêng arrayref được The Hacker News ghi nhận có hơn 245 triệu lượt tải mọi thời đại và hơn 53 triệu lượt tải trong 90 ngày gần nhất tính đến 20/08. Một số chuỗi dependency có thể chấp nhận phiên bản 0.3.10 do dùng caret range trong cấu hình semver.

Cách mã độc được kích hoạt
Theo phân tích được công bố, mỗi release bị nhiễm chỉ thêm một dependency vào manifest. Dependency này trông giống một thư viện hợp lệ để quá trình build hoàn tất bình thường, nhưng build script sẽ ghép lại địa chỉ payload và máy chủ điều khiển từ các mảnh base64, vô hiệu hóa kiểm tra TLS bằng custom certificate verifier, sau đó chọn payload theo hệ điều hành và kiến trúc CPU.
Trên Unix và macOS, payload được ghi xuống /tmp/rust-setup, cấp quyền thực thi và chạy tách khỏi tiến trình build. Trên Windows, mã độc ghi một PowerShell script vào thư mục tạm, sau đó khởi chạy ẩn thông qua VBScript và wscript.exe. Các phân tích được The Hacker News tổng hợp cũng đề cập khả năng duy trì bám trụ qua Registry Run key trên Windows, LaunchAgent trên macOS và systemd user service trên Linux.
Khuyến nghị cho nhà phát triển
Nhà phát triển Rust nên kiểm tra thư mục cache ~/.cargo/registry/cache để tìm các file crate đã bị gỡ, đặc biệt nếu hệ thống từng build dự án trong khung thời gian sự cố. Với các dự án phụ thuộc vào arrayref, khuyến nghị hiện tại là pin về 0.3.9 hoặc thấp hơn theo hướng dẫn được The Hacker News trích dẫn từ Rust Security Response Team.
Các nhóm kỹ thuật cũng nên rà soát log build, kiểm tra kết nối bất thường tới hạ tầng lạ, đặc biệt là những kết nối liên quan chỉ báo mạng được cộng đồng chia sẻ trong quá trình phân tích. Nếu build được thực hiện trên máy trạm cá nhân, cần coi đây là bề mặt rủi ro nghiêm trọng vì payload chạy trong môi trường có quyền truy cập mã nguồn, token, SSH key hoặc thông tin đăng nhập trình duyệt.
Bài học từ sự cố
Sự cố lần này tiếp tục cho thấy chuỗi cung ứng phần mềm không chỉ bị tấn công ở runtime mà còn có thể bị khai thác ngay trong quá trình build. Với những hệ sinh thái có tốc độ phát hành nhanh, một gói độc hại tồn tại chưa đầy hai giờ vẫn có thể gây tác động lớn nếu rơi vào dependency phổ biến hoặc được hệ thống CI tự động kéo về.
Đối với doanh nghiệp, chính sách kiểm soát dependency mới phát hành, khóa phiên bản, kiểm tra provenance và tách biệt môi trường build nên được xem là yêu cầu vận hành cơ bản. Các công cụ tự động cập nhật package cần có khoảng chờ an toàn trước khi chấp nhận phiên bản mới, nhất là với thư viện nằm sâu trong chuỗi phụ thuộc.
VNCyberS tổng hợp từ The Hacker News, BleepingComputer và Rust Security Response Team















