2 грудня 2024 року спільнота Solana зіткнулася зі значним інцидентом, пов’язаним з безпекою пакета @solana/web3.js npm. @Solana/web3.js – критично важлива бібліотека для розробників, що працюють на блокчейні Solana з більш ніж 450 тис. завантажень щотижня. Цей пост має на меті розібрати потік атаки, дослідити, як це сталося, і обговорити важливість безпеки ланцюга постачання.
Що сталося?
Інцидент стосувався версій 1.95.6 та 1.95.7 бібліотеки @solana/web3.js, які були скомпрометовані через, ймовірно, фішингову атаку на облікові дані для публікації npm-пакетів. Ось як це працювало:
- Зловмисники впровадили бекдор у бібліотеку, додавши функцію addToQueue. Ця функція була призначена для перехоплення та викрадення приватних ключів, які використовуються для підписання транзакцій та доступу до гаманців. Зловмисник використовував заголовки, схожі на заголовки CloudFlare, щоб не викликати підозр у мережевих журналах.
- Шкідливий код вставлявся у функції, відповідальні за обробку криптографічних операцій, такі як Keypair.fromSecretKey і Keypair.fromSeed. Він фактично перехоплював ці операції для крадіжки ключів.
- Скомпрометовані версії були доступні на npm протягом приблизно п’яти годин. Вони потенційно впливали на будь-яку програму, яка оновлювала або встановлювала ці версії протягом цього часу.

Наслідки
- За словами Мерта Мумтаза, генерального директора Helius Labs, збитки від цієї атаки становлять приблизно $130 тис.
- Швидка реакція та виявлення командою Solana були дійсно важливими для того, щоб скоротити час завантаження цих версій до мінімуму – до 5 годин.
- Важливо зазначити, що немає жодних проблем з безпекою блокчейну, оскільки проблема полягає в клієнтській бібліотеці Javascript.

Пропозиції щодо виправлення:
- Оновлення до останньої версії – 1.95.8, в якій було видалено шкідливий код.
- Переконатися, що всі підозрілі ключі повноважень ротуються, включно з мультипідписами, повноваженнями програм, парами серверних ключів тощо.
Як Mend виявив атаку
Команда Mend відстежувала цю проблему як MSC-2024-17462 та MSC-2024-17463 з самого початку. Це причина, чому їхні клієнти, які використовують цю бібліотеку, отримають сповіщення про ці дві скомпрометовані версії.
Крім того, команда Solana вже випустила профіль CVE для розв’язання цієї проблеми.
Важливість безпеки ланцюга постачання
Це вже третя атака на безпеку ланцюга постачання дуже популярної бібліотеки з відкритим вихідним кодом після атак на Lottie Player і Polyfill, виявлених за останні шість місяців. Усі ці інциденти поєднуються з незабутнім інцидентом XZ на початку року, а також атаками Північної Кореї на розробників та іншими так званими «звичайними атаками», які щодня відбуваються на основних реєстрах відкритого коду.
Висновок
З наближенням нового року настав час замислитися про безпеку ланцюгів постачання. Наскільки відомо, компанії ставляться до вразливостей серйозніше, ніж до шкідливих пакетів, попри те, що наявність шкідливого пакета в їхньому коді означає, що вони неодмінно будуть скомпрометовані. Настав час припинити ігнорувати інциденти, пов’язані з ланцюгами постачання, і винайти більше ресурсів для захисту ланцюгів постачання та всіх аутсорсингових операцій.







