У централізованому каталозі пакетів Rust Crates.io виявлено два шкідливі крейти — faster_log та async_println, що сумарно зібрали близько 8500 завантажень. За даними компанії Socket, опубліковані 25 травня 2025 року пакети непомітно використовували функції додатків на Rust для сканування середовища розробника й вихідного коду з метою викрадення приватних криптографічних ключів та інших секретів.
Що сталося: атака на ланцюг постачання Crates.io
Crates.io — основний реєстр бібліотек для Rust — знову став точкою входу для атаки на ланцюг постачання. За оцінками дослідників, faster_log завантажили близько 7200 разів, а async_println — приблизно 1200 разів. Обидва пакети вже видалені з платформи.
Адміністрація Crates.io 24 вересня заблокувала облікові записи rustguruman та dumbnbased, які публікували ці залежності. Вказано, що у шкідливих пакетів не було залежних проєктів (downstream), а заблоковані користувачі не мали інших публікацій. Водночас кожній команді, яка потенційно інтегрувала ці крейти, рекомендовано терміново провести аудит середовища.
Як маскувалися крейти faster_log і async_println
Зловмисники обрали стратегію правдоподібної підміни: імітували популярний легітимний пакет fast_log, копіюючи README, метадані та базову логувальну функціональність. Така тактика знижувала ймовірність виявлення під час поверхневих перевірок коду.
Під прикриттям «розширених можливостей логування» у код було вбудовано пейлоад, який активувався під час виконання застосунків, що підключали ці залежності. Саме на етапі рантайму відбувалося непомітне збирання конфіденційних даних.
Механізм ексфільтрації: пошук ключів і відправка на Cloudflare Workers
Вбудований пейлоад сканував файлову систему і змінні середовища у пошуках приватних криптогаманців, ключів доступу, токенів і подібних секретів. Виявлену інформацію пакети доповнювали контекстом, зокрема шляхами до файлів і номерами рядків, після чого надсилали на жорстко закодовану адресу Cloudflare Workers: mainnet[.]solana-rpc-pool[.]workers[.]dev.
Дослідники підкреслюють, що цей ендпоінт приймав POST-запити під час аналізу, проте не є офіційним RPC-вузлом Solana. Це свідчить про створену інфраструктуру управління та ексфільтрації, спеціально призначену для цієї кампанії.
Оцінка ризиків для розробників і проєктів на Rust
Попри відсутність залежних пакетів, понад вісім тисяч інсталяцій означають реальний ризик компрометації робочих станцій розробників. Якщо проєкт збирався або запускався з використанням faster_log чи async_println, існувала ймовірність витоку приватних ключів, токенів доступу та інших чутливих даних.
Подібні атаки використовують довіру до екосистеми та автоматизацію збірок — характерний патерн інцидентів із менеджерами пакетів у різних мовах. Головний урок: зовнішня легітимність пакета не гарантує його безпеку, навіть якщо функціональність здається коректною.
Рекомендації з реагування та профілактики
Негайні кроки для потенційно постраждалих
• Видаліть faster_log і async_println із залежностей та виконайте чисте перевстановлення середовища збірки (toolchains, кеші, артефакти).
• Проведіть ротацію секретів: перенесіть цифрові активи у нові гаманці, перевипустіть ключі та токени, анулюйте скомпрометовані облікові дані.
• Зробіть інвентаризацію репозиторіїв, CI/CD кешів і логів, видаліть чутливі дані, що могли бути збережені ненавмисно.
Процесна та технологічна профілактика
• Перевіряйте репутацію публікатора на Crates.io, історію комітів і відповідність вихідних кодів опублікованій версії. Використовуйте code review для нових залежностей.
• Фіксуйте версії і застосовуйте контроль ланцюга постачання: audit інструменти, lock-файли, allow-/deny-листи, моніторинг змін.
• Мінімізуйте автоматичне додавання неперевірених пакетів у пайплайни збірки; увімкніть ізоляцію середовищ і принцип найменших привілеїв.
• Зберігайте секрети у менеджерах секретів, обмежуйте їх потрапляння у логи, активуйте політики ротації й валідації.
Інцидент із faster_log та async_println демонструє, що атаки на ланцюг постачання залишаються одним із найрезультативніших способів компрометації середовищ розробників. Застосовуйте принцип «довіряй, але перевіряй» до кожного пакета з Crates.io, впроваджуйте процедури огляду залежностей та регулярний аудит секретів. Своєчасна ротація ключів, контроль джерел і дисципліна збірки суттєво знижують ймовірність витоків і фінансових втрат.