Визначення
Wallet drain (драйн гаманця) — це несанкціоноване виведення всіх або частини активів із криптогаманця внаслідок підписання користувачем транзакції, яка містить приховані інструкції на переказ коштів зловмиснику. На Solana така атака найчастіше реалізується через додавання шкідливих інструкцій до транзакції, яку користувач вважає безпечною, або через надання необмежених дозволів на витрачання токенів.
Як працює
На Solana одна транзакція може містити кілька інструкцій, які виконуються послідовно в межах одного підпису. Зловмисники використовують цю особливість так:
- Користувач підключає гаманець до сайту, який виглядає як звичний dApp (безкоштовний аірдроп, мінтинг NFT, стейкінг).
- Сайт формує транзакцію, де перша інструкція виглядає легітимно — наприклад, створення токен-акаунту або виклик розумного контракту.
- До тієї ж транзакції додається друга інструкція: переказ SOL або SPL-токенів на адресу зловмисника.
- Гаманець за замовчуванням показує лише першу інструкцію, тому користувач бачить очікуваний текст і підписує транзакцію.
- Після підписання всі інструкції виконуються миттєво — кошти залишають гаманець.
Окремий різновид драйну — через токен-апруви. Користувач схвалює витрачання токена на велику суму, після чого зловмисник окремою транзакцією забирає ці токени.
Приклад
Користувач переходить за посиланням із Telegram-каналу, де обіцяють безкоштовний NFT за підписку. Натискає «Connect Wallet», обирає Phantom, бачить запит на підписання транзакції. У вікні гаманця відображається інструкція «Create Token Account» — це виглядає нормально для отримання NFT. Користувач натискає «Approve». Через секунду баланс SOL стає нульовим: друга інструкція в цій транзакції переказала всі кошти на адресу атакувальника.
Типова помилка
Підписувати транзакцію, не розгорнувши повний список інструкцій. Більшість гаманців на Solana (зокрема Phantom) показують лише першу інструкцію — саме туди зловмисники і поміщають виглядно безпечну дію. Якщо не натиснути на деталі транзакції та не перевірити кожну інструкцію, драйн залишається непомітним до моменту втрати коштів.
Пов'язані матеріали
- Replay attack — повторне відтворення раніше підписаної транзакції в іншому контексті для викрадання коштів.
- MEV — екстракція максимальної цінності, що може включати перехоплення та модифікацію транзакцій користувачів.