# یک Rust crate بدافزار را در زمان کامپایل اجرا کرد. 86 دقیقه.

Published: 2026-09-15

یک Rust crate چهار ماکرویی با 260 میلیون دانلود، یک وابستگی اضافه می‌کند و \`cargo build\` یک باینری غریبه را روی دستگاه شما اجرا می‌کند. 20 اوت 2026: arrayref 0.3.10 در crates.io با وابستگی به proc-macro1 (نه proc-macro2، واقعی) قرار می‌گیرد که اسکریپت ساخت آن یک بار مفید را دانلود کرده، آن را در /tmp/rust-setup قرار داده و در حین کامپایل پروژه شما آن را به‌طور جداگانه اجرا می‌کند. نسخه‌های سالم حذف می‌شوند تا هشدار خود Cargo شما را به سمت نسخه آلوده هدایت کند. 86 دقیقه بعد حذف می‌شود.

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

## این ویدیو چه مواردی را پوشش می‌دهد

- cargo build یک باینری غریبه را اجرا می‌کند
- رسیدها: Rust Blog, SafeDep, Hacker News
- این The Daily Diff، پس از واقعه است
- جدول زمانی: 02:11 مرحله‌بندی → 07:15 منتشر شد → 08:41 حذف شد
- سازوکار: build.rs، بدون سندباکس، فریب حذف

## فصل‌ها

- 0:00 cargo build یک باینری غریبه را اجرا می‌کند
- 0:20 رسیدها: Rust Blog, SafeDep, Hacker News
- 0:33 این The Daily Diff، پس از واقعه است
- 0:40 جدول زمانی: 02:11 مرحله‌بندی → 07:15 منتشر شد → 08:41 حذف شد
- 1:25 سازوکار: build.rs، بدون سندباکس، فریب حذف
- 2:05 git blame — تقسیم
- 2:25 شعاع انفجار: 2,285 دانلود
- 2:45 حکم + خط دوشنبه

## رونوشت ترجمه شده

ترجمه شده از روایت اصلی انگلیسی. صوت و زیرنویس‌های موجود توسط YouTube کنترل می‌شوند.

### cargo build یک باینری غریبه را اجرا می‌کند

0:00 یک Rust crate چهار ماکرویی با یک چهارم میلیارد دانلود، یک وابستگی اضافه می‌کند و 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 مرحله‌بندی → 07:15 منتشر شد → 08:41 حذف شد

0:41 واقعی، با نام تغییر یافته. مرحله‌بندی. 07:11. نسخه 1.0.107 یک اسکریپت ساخت، به علاوه base64، TLS و یک کلاینت HTTP اضافه می‌کند. برای یک تجزیه کننده توکن. 07:15. حساب نگهداری کننده arrayref را با نام 0.3.10 مجدداً منتشر می‌کند و تمام نسخه‌های قدیمی‌تر را حذف می‌کند. Cargo چاپ می‌کند: به‌روزرسانی به نسخه‌ای که حذف نشده است را در نظر بگیرید. تنها نسخه‌ای که باقی مانده، نسخه آلوده است.

1:02 هشدار، فریب است. در همان دقیقه، یک شرکت امنیتی آن را به Rust گزارش می‌دهد. 07:54، یک مشکل RustSec. 08:29، یک مشکل در مخزن؛ مهاجم با 0.3.11 و یک وابستگی مخرب دوم پاسخ می‌دهد. 08:41، حذف شد. هشتاد و شش دقیقه. چرا؟ اول: Cargo هر وابستگی اعلام شده را، چه فراخوانی شده باشد چه نه، می‌سازد. یک خط مانیفست کافی است.

1:21 دوم: یک اسکریپت ساخت روی دستگاه شما، به عنوان شما، با کلیدهای SSH و

### سازوکار: build.rs، بدون سندباکس، فریب حذف

1:26 توکن cargo شما، قبل از کامپایل کد شما اجرا می‌شود. بدون سندباکس، طبق طراحی: اینگونه crates کتابخانه‌های C را پیدا می‌کنند. سوم: داخل آن proc-macro2 واقعی است، بنابراین ساخت موفقیت آمیز است. بار مفید: یک کلاینت TLS که به هر گواهی اعتماد می‌کند، یک باینری را واکشی می‌کند، آن را در /tmp/rust-setup قرار داده و آن را به‌طور جداگانه اجرا می‌کند. در ویندوز از طریق wscript دور می‌زند تا از شیء کار Cargo فرار کند؛ یک نظر منبع این را می‌گوید. مرحله دوم، طبق رشته RustSec: یک ابزار دسترسی از راه دور با هدف

1:52 مرورگرها و کیف پول‌های رمزارز. شاعرانه، زیرا بزرگترین کاربران arrayref شامل secp256k1 و Solana هستند. git blame. مدل Cargo، پنجاه و پنج درصد: وابستگی‌ها کد را روی دستگاه شما در زمان کامپایل اجرا می‌کنند، بدون سندباکس، و هشدار حذف، مردم را به سمت

### git blame — تقسیم

2:07 سم هدایت کرد. یک حساب، سی درصد: یک اعتبارنامه یک crate را که یک چهارم میلیارد دانلود به آن اعتماد دارند، مجدداً منتشر می‌کند. رقم یک، پانزده درصد: یک ضربه کلید از مورد اعتمادترین crate Rust، و هیچ کس درخت را نمی‌خواند. شعاع انفجار: 2,285 دانلود در 86 دقیقه. زیر ده درصد ترافیک، زیرا بیشتر lockfiles 0.3.9 را نگه داشته بودند. crates.io می‌گوید هیچ مدرکی از استفاده وجود ندارد.

### شعاع انفجار: 2,285 دانلود

2:27 دو نفر در رشته RustSec مخالفند؛ یکی یک سرویس systemd پیدا می‌کند. در Hacker News رشته اصلی در مورد بدافزار نیست. صفحه crate است، جایی که 0.3.10 اکنون هرگز وجود نداشته است. حکم، پس از واقعه: NEEDS REVIEW. هشتاد و شش دقیقه برای حذف، یک پست وبلاگ در همان روز، حساب قفل شده: این قسمت SHIP IT است. اما صفحه crate نشان می‌دهد که هیچ اتفاقی نیفتاده است، cargo audit در مورد یک کپی

### حکم + خط دوشنبه

2:48 کش شده ساکت می‌ماند، و اسکریپت‌های ساخت همچنان به عنوان شما اجرا می‌شوند. دوشنبه: دستور find وبلاگ Rust را اجرا کنید، و یک هشدار حذف را به عنوان یک سوال در نظر بگیرید، نه یک دستورالعمل. حادثه‌ای را که هنوز اجازه ندارید در مورد آن صحبت کنید، برای من بفرستید، در نظرات، یا در 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
