Атаки на ланцюг постачання: шкідливі пакети та скомпрометовані бібліотеки гаманців
Атака на ланцюг постачання в крипті ховає шкідливий код у програмах, яким ви довіряєте. Дізнайтеся, як працюють скомпрометовані пакети й бібліотеки гаманців і як захиститися.
Атака на ланцюг постачання в крипті — це ситуація, коли злочинці компрометують програмне забезпечення, від якого залежать гаманці, застосунки чи сайти, наприклад пакет із відкритим кодом, розширення браузера або сервер оновлень, щоб шкідливий код дійшов до користувачів довіреним каналом. Зазвичай такий код підміняє адреси отримувачів, вбудовує на сайт wallet drainer або викрадає сид-фрази, а жертви часто нічого не роблять неправильно — вони просто користуються продуктом, якому вже довіряють.
Ці атаки стосуються всіх у крипті, а не лише розробників. Сучасні гаманці та децентралізовані застосунки складаються із сотень сторонніх компонентів, і один скомпрометований компонент може зачепити одразу багато продуктів. У цьому посібнику пояснюємо, як працюють такі атаки, на що звертати увагу та як зменшити ризики, якщо ви користувач або розробник.
Як працює атака на ланцюг постачання
«Ланцюг постачання» криптозастосунку — це все, з чого він складається: бібліотеки коду, інструменти збирання, хостинг-провайдери, мережі доставки контенту та сервери оновлень. Атака зазвичай відбувається за такими кроками:
- 1Отримання доступу. Зловмисник фішингом виманює дані в мейнтейнера популярної бібліотеки, купує покинутий пакет, підбирає слабкий пароль або зламує сервер збирання.
- 2Додавання шкідливого коду. Він публікує нову версію з прихованим кодом, часто обфускованим і розрахованим на спрацювання лише за певних умов, наприклад за наявності криптогаманця.
- 3Поширення через оновлення. Застосунки, які автоматично підтягують останню версію бібліотеки, додають шкідливий код до наступної збірки, а сайти — одразу під час завантаження скрипту.
- 4Крадіжка. Код може підміняти скопійовані в буфер обміну адреси, показувати підроблений запит транзакції, просити сид-фразу або вбудовувати дрейнер у фронтенд децентралізованого застосунку.
- 5Приховування слідів. Зловмисники часто швидко видаляють код після використання, що ускладнює розслідування.
Існують задокументовані реальні інциденти за цією схемою. У 2018 році до популярного пакета JavaScript додали шкідливу залежність, призначену для крадіжки в користувачів конкретного застосунку біткоїн-гаманця. У грудні 2023 року скомпрометована версія бібліотеки Connect Kit від Ledger ненадовго спричинила те, що кілька децентралізованих застосунків показували своїм користувачам wallet drainer. Обидва випадки показують, що слабким місцем був спільний код, а не користувачі. Детальніше читайте у статті Ризики vanity-адрес і схожих адрес.
Типові точки входу
| Точка входу | Як її використовують | Хто постраждає |
|---|---|---|
| Пакети з відкритим кодом (npm, PyPI та подібні) | Публікується шкідлива версія або завантажується пакет із майже такою самою назвою | Застосунки й розробники, що використовують пакет |
| Фронтенд-скрипти, які завантажуються від третіх сторін | Скрипт змінюють, щоб вбудувати дрейнер | Кожен відвідувач сайту |
| Розширення браузера | Розширення продають або викрадають, а потім оновлюють шкідливим кодом | Користувачі, у яких встановлено розширення |
| Оновлення застосунків | Компрометуються сервер оновлень або ключі підпису | Користувачі, які встановили оновлення |
| Інструменти розробника та пакети, запропоновані ШІ | Підроблені назви пакетів, що виглядають правдоподібно | Розробники, які встановлюють пакети без перевірки |
Тайпосквотинг — завантаження пакета з назвою, дуже схожою на назву популярного, — трапляється особливо часто. Розробник, який помилився в назві пакета, може встановити шкідливе ПЗ, навіть не помітивши цього.
Гіпотетичний приклад
Це збірний ілюстративний приклад, а не реальний випадок. Уявіть невелику децентралізовану біржу, яка завантажує популярну бібліотеку підключення гаманців із публічного реєстру пакетів. Одного ранку мейнтейнер бібліотеки потрапляє на фішинг, і зловмисник публікує нову версію. Сайт біржі автоматично завантажує останню версію.
Протягом кількох годин кожен користувач, який підключає гаманець, бачить те, що виглядає як звичайний запит на своп. Насправді це запит на схвалення його токенів на користь контракту зловмисника. Користувачі, які уважно читають екран схвалення в гаманці, помічають незнайомий контракт і зупиняються. Ті, хто клацає не дивлячись, втрачають токени. Команда біржі виявляє проблему, коли користувачі повідомляють про втрати, і публікує попередження, але на той момент код уже видалено.
Тривожні ознаки для користувачів
- Знайомий застосунок раптом просить сид-фразу або крок «валідації гаманця», якого раніше ніколи не було.
- Звичайна дія викликає незвичний запит у гаманці, наприклад необмежений дозвіл або підпис для невідомого контракту.
- Адреса на екрані вашого апаратного гаманця не збігається з тією, яку ви збиралися використати.
- Розширення браузера оновлюється й запитує нові дозволи, особливо на читання та зміну даних на всіх сайтах.
- Проєкт або дослідники безпеки публікують термінові попередження не користуватися сайтом чи застосунком.
Багато з цих ознак збігаються з ознаками шкідливого ПЗ для буфера обміну та підроблених застосунків-гаманців, що використовують схожі прийоми. Дивіться також: Підроблені оновлення браузера та капча-шкідники, націлені на криптокористувачів.
Як захиститися
Користувачу
- 1Використовуйте апаратний гаманець і перед підтвердженням читайте на його екрані адресу, суму та контракт.
- 2Зведіть розширення до мінімуму. Видаліть ті, якими не користуєтеся, і будьте обережні, якщо в розширення змінюється власник або воно запитує нові дозволи.
- 3Розділяйте кошти. Зберігайте довгострокові активи в гаманці, який рідко підключається до сайтів, а для повсякденного DeFi використовуйте інший гаманець.
- 4Робіть паузу після попереджень про безпеку. Не користуйтеся застосунком, доки він не підтвердить, що проблему усунуто.
- 5Регулярно відкликайте непотрібні дозволи.
Розробнику або проєкту
- Фіксуйте версії залежностей і використовуйте lock-файли; перевіряйте зміни перед оновленням.
- Уважно перевіряйте назви пакетів і віддавайте перевагу добре підтримуваним бібліотекам.
- Вимагайте багатофакторну автентифікацію для акаунтів у реєстрах пакетів і на хостингах коду.
- Використовуйте підписані релізи та, де можливо, відтворювані збірки, щоб користувачі могли перевіряти бінарні файли.
- Застосовуйте content security policy та subresource integrity для сторонніх скриптів.
Що робити, якщо ви постраждали
- 1Припиніть користуватися ураженим застосунком чи розширенням і від’єднайте всі гаманці.
- 2Перевірте історію транзакцій на наявність дозволів або переказів у відповідний період.
- 3Відкличте підозрілі дозволи та перемістіть решту коштів на новий гаманець із новою сид-фразою, якщо вашу сид-фразу могли розкрити.
- 4Зберіть хеші транзакцій та адреси, а потім повідомте про інцидент через офіційні канали проєкту та нашу форму для повідомлень про шахрайство.
Дотримуйтеся повного чек-листа у статті що робити негайно, якщо ваш гаманець скомпрометовано.
Підсумок
Атаки на ланцюг постачання перетворюють довірене ПЗ на канал для крадіжки, тому не можна покладатися лише на те, що ви уникаєте підозрілих посилань. Вважайте екран апаратного гаманця та запити гаманця останньою перевіркою, використовуйте якомога менше програм і швидко реагуйте на офіційні попередження про безпеку. Основна відповідальність лежить на розробниках: фіксуйте, перевіряйте й підписуйте все, що випускаєте.
Поширені запитання
Що таке атака на ланцюг постачання в крипті?
Це атака, під час якої злочинці компрометують програмне забезпечення, від якого залежать інші продукти, — наприклад, бібліотеку коду, розширення браузера чи оновлення застосунку, — замість того щоб атакувати користувачів напряму. Коли довірене ПЗ оновлюється, шкідливий код потрапляє до кожного застосунку й користувача, що від нього залежать, найчастіше щоб викрасти криптовалюту або підмінити адреси.
Чи може атака на ланцюг постачання вплинути на апаратний гаманець?
Екран апаратного гаманця створений, щоб захищати вас навіть тоді, коли ваш комп’ютер або сайт скомпрометовано, адже реальну адресу й суму ви підтверджуєте на пристрої. Проте атака все одно може змусити вас схвалити шкідливу транзакцію, якщо ви не читаєте екран, тому завжди перевіряйте дані на самому пристрої.
Як дізнатися, чи постраждав сайт, яким я користувався?
Зазвичай про це повідомляють в офіційних оголошеннях постраждалого проєкту або дослідники безпеки. Якщо проєкт, яким ви користувалися, повідомляє про скомпрометовану бібліотеку чи фронтенд, перевірте, чи підписували ви щось у цей період, відкличте дозволи та за потреби перемістіть кошти на новий гаманець.
Чи захищені гаманці з відкритим кодом від атак на ланцюг постачання?
Відкритий код допомагає, бо його можуть перевірити більше людей, але не робить ПЗ невразливим. Шкідливий код може потрапити через залежності, скомпрометовані акаунти мейнтейнерів або системи збирання. Відтворювані збірки, підписані релізи й ретельне керування залежностями зменшують ризик.
