+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Ένα Rust crate εκτέλεσε κακόβουλο λογισμικό κατά τη μεταγλώττιση. 86 λεπτά.

Ένα Rust crate τεσσάρων μακροεντολών με 260 εκατομμύρια λήψεις προσθέτει μία εξάρτηση, και το `cargo build` εκτελεί ένα δυαδικό αρχείο αγνώστου στο μηχάνημά σας.

Ένα Rust crate τεσσάρων μακροεντολών με 260 εκατομμύρια λήψεις προσθέτει μία εξάρτηση, και το `cargo build` εκτελεί ένα δυαδικό αρχείο αγνώστου στο μηχάνημά σας. 20 Αυγούστου 2026: το arrayref 0.3.10 προσγειώνεται στο crates.io εξαρτώμενο από το proc-macro1 — όχι το proc-macro2, το πραγματικό — του οποίου το build script κατεβάζει ένα payload, το τοποθετεί στο /tmp/rust-setup και το εκκινεί αποσπασμένο ενώ το έργο σας μεταγλωττίζεται. Οι καθαρές εκδόσεις αποσύρονται (yanked) έτσι ώστε η προειδοποίηση του Cargo να σας οδηγεί στην μολυσμένη. 86 λεπτά αργότερα διαγράφεται.

Διαβάστε την γραπτή έκδοση (Αγγλικά) ↗

Τι καλύπτει αυτό το βίντεο

  • το cargo build εκτελεί ένα δυαδικό αρχείο αγνώστου
  • Οι αποδείξεις: Rust Blog, SafeDep, Hacker News
  • Αυτό είναι το The Daily Diff, μεταθανάτια ανάλυση
  • Χρονολόγιο: 02:11 προετοιμασία → 07:15 δημοσιεύθηκε → 08:41 διαγράφηκε
  • Μηχανισμός: build.rs, χωρίς sandbox, το δέλεαρ της απόσυρσης (yank lure)

Μεταφρασμένη μεταγραφή

Μεταφράστηκε από την πρωτότυπη αγγλική αφήγηση. Ο διαθέσιμος ήχος και οι υπότιτλοι ελέγχονται από το YouTube.

το cargo build εκτελεί ένα δυαδικό αρχείο αγνώστου

0:00 Ένα Rust crate τεσσάρων μακροεντολών με ένα τέταρτο του δισεκατομμυρίου λήψεις προσθέτει μία εξάρτηση, και το cargo build εκτελεί ένα δυαδικό αρχείο αγνώστου στο μηχάνημά σας. 20 Αυγούστου 2026. Το arrayref 0.3.10 προσγειώνεται στο crates.io εξαρτώμενο από το proc-macro1. Όχι το proc-macro2, το πραγματικό: μία ψηφίο διαφορά, και το build script του εκτελεί ένα payload ενώ το έργο σας μεταγλωττίζεται. Η ομάδα ασφαλείας της 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: πραγματικό

Χρονολόγιο: 02:11 προετοιμασία → 07:15 δημοσιεύθηκε → 08:41 διαγράφηκε

0:41 proc-macro2, μετονομασμένο. Προετοιμασία. 07:11. Η έκδοση 1.0.107 προσθέτει ένα build script, συν base64, TLS και έναν HTTP client. Για έναν αναλυτή συμβόλων. 07:15. Ο λογαριασμός του συντηρητή επαναδημοσιεύει το arrayref ως 0.3.10 και αποσύρει κάθε παλαιότερη έκδοση. Το Cargo εκτυπώνει: εξετάστε την ενημέρωση σε μια έκδοση που δεν έχει αποσυρθεί. Η μόνη που απομένει είναι η μολυσμένη.

1:02 Η προειδοποίηση είναι το δέλεαρ. Την ίδια στιγμή, μια εταιρεία ασφαλείας το αναφέρει στη Rust. 07:54, ένα ζήτημα RustSec. 08:29, ένα ζήτημα στο repo· ο επιτιθέμενος απαντά με 0.3.11 και μια δεύτερη κακόβουλη εξάρτηση. 08:41, διαγράφηκε. Ογδόντα έξι λεπτά. Γιατί; Ένα: Το Cargo δημιουργεί κάθε δηλωμένη εξάρτηση, είτε καλείται είτε όχι. Μία γραμμή manifest είναι αρκετή.

1:21 Δύο: ένα build script εκτελείται στο μηχάνημά σας, ως εσείς, με τα κλειδιά SSH και το cargo

Μηχανισμός: build.rs, χωρίς sandbox, το δέλεαρ της απόσυρσης (yank lure)

1:26 token σας, πριν μεταγλωττιστεί ο κώδικάς σας. Χωρίς sandbox, εξ ορισμού: έτσι βρίσκουν τα crates τις βιβλιοθήκες C. Τρία: μέσα υπάρχει το πραγματικό proc-macro2, οπότε η κατασκευή επιτυγχάνει. Το payload: ένας TLS client που εμπιστεύεται οποιοδήποτε πιστοποιητικό ανακτά ένα δυαδικό αρχείο, το τοποθετεί στο /tmp/rust-setup και το εκκινεί αποσπασμένο. Στα Windows εκτρέπεται μέσω του wscript για να ξεφύγει από το αντικείμενο εργασίας του Cargo· ένα σχόλιο πηγαίου κώδικα το λέει. Το δεύτερο στάδιο, σύμφωνα με το νήμα του RustSec: ένα εργαλείο απομακρυσμένης πρόσβασης που στοχεύει

1:52 προγράμματα περιήγησης και πορτοφόλια κρυπτονομισμάτων. Ποιητικό, αφού οι μεγαλύτεροι χρήστες του arrayref περιλαμβάνουν τα secp256k1 και Solana. git blame. Το μοντέλο του Cargo, πενήντα πέντε τοις εκατό: οι εξαρτήσεις εκτελούν κώδικα στο μηχάνημά σας κατά τη μεταγλώττιση, χωρίς sandbox, και η προειδοποίηση απόσυρσης οδήγησε τους ανθρώπους στο

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. Ογδόντα έξι λεπτά για διαγραφή, ένα blog post την ίδια μέρα, ο λογαριασμός κλειδωμένος: αυτό το μέρος είναι SHIP IT. Αλλά η σελίδα του crate δείχνει ότι τίποτα δεν συνέβη, το cargo audit παραμένει σιωπηλό σε ένα αποθηκευμένο

Ετυμηγορία + η γραμμή της Δευτέρας

2:48 αντίγραφο, και τα build scripts εξακολουθούν να εκτελούνται ως εσείς. Δευτέρα: εκτελέστε την εντολή εύρεσης του blog της Rust, και αντιμετωπίστε μια προειδοποίηση απόσυρσης ως μια ερώτηση, όχι ως οδηγία. Στείλτε μου το περιστατικό για το οποίο ακόμα δεν σας επιτρέπεται να μιλήσετε, στα σχόλια, ή στο 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 · el · 13 Σεπ 2026

Έντεκα γραμμές JavaScript διέλυσαν το διαδίκτυο. Μια ανάκληση δημοσίευσης.

22 Μαρτίου 2016, 21:30 UTC: ένας προγραμματιστής ανακαλεί τη δημοσίευση και των 273 πακέτων του npm αφότου το npm παραδίδει το όνομα πακέτου «kik» στην Kik, την εφαρμογή ανταλλαγής μηνυμάτων, της οποί

2:52 ↗
postmortem · el · 25 Σεπ 2026

Ένα σφάλμα ενός χιλιοστού του δευτερολέπτου σταμάτησε την εναέρια κυκλοφορία του Ηνωμένου Βασιλείου. Έξι ώρες.

Στις 10:00 το πρωί της Τρίτης, 8 Σεπτεμβρίου, μια αίτηση ρουτίνας για κωδικό squawk εντός του Εθνικού Συστήματος Εναέριου Χώρου (NAS) της NATS διακόπτεται από ένα μήνυμα υψηλότερης προτεραιότητας ενώ

3:06 ↗
postmortem · el · 22 Σεπ 2026

Μια επανεκκίνηση έστειλε την Telstra στο 2006. Εννέα εκατομμύρια τηλέφωνα.

Ένας μηχανικός στη Μελβούρνη ενεργοποιεί ξανά ένα χρονομετρικό σασί στις 2:50 π.μ. και μέχρι το πρωινό το μεγαλύτερο δίκτυο κινητής τηλεφωνίας της Αυστραλίας συμφωνεί ότι είναι Νοέμβριος 2006. 8 Ιουλί

3:15 ↗