Некоторые дрейнеры Solana не просто выводят ваши SOL. Они меняют сам аккаунт кошелька, после чего он больше не может отправлять SOL, а любые добавленные SOL может вывести атакующий. Токены и NFT обычно остаются на месте, но обычный способ их перенести, отправка из приложения кошелька, не срабатывает или отдаёт атакующему ещё больше SOL.
В этом руководстве объясняется, что изменилось, почему не нужно отправлять SOL на кошелёк и как перенести оставшееся на новый кошелёк, пока комиссии платит другой кошелёк.
Как понять, что ваш кошелёк Solana преобразован?
Отправки с кошелька не проходят, хотя на нём ещё есть токены, а обозреватель показывает адрес как nonce-аккаунт с authority, которое не принадлежит вам, или как аккаунт, принадлежащий программе. При подключении к Sol Incinerator вы увидите «Ваш кошелёк взломан» со временем захвата и ссылкой на транзакцию.
Обычный кошелёк Solana — это простой аккаунт System Program без данных. Преобразованный кошелёк остаётся по тому же адресу, но аккаунт за ним изменился. Проверьте это тремя способами:
- Откройте адрес в обозревателе. Solana Explorer показывает для преобразованного кошелька данные nonce-аккаунта, включая адрес authority. Если это authority не ваш адрес, SOL аккаунта контролирует кто-то другой.
- Найдите транзакцию, которая это сделала. В изученных нами случаях жертва подписала вместе с атакующим транзакцию с двумя инструкциями System Program:
allocateвыделила адресу кошелька 80 байт данных, аinitializeNonceпревратила его в durable nonce-аккаунт с атакующим в роли authority. Сетевую комиссию оплатил атакующий. В одном случае вывод SOL жертвы произошёл через 30 секунд. - Подключите кошелёк к Sol Incinerator. Он читает аккаунт при подключении и, если находит захват, показывает предупреждение со временем захвата и ссылкой на Solscan.
Некоторые дрейнеры поступают иначе: назначают адрес программе. Результат для вас тот же: кошелёк больше не может сам оплачивать свои расходы.
Почему взломанный кошелёк не может платить сетевые комиссии?
Durable nonce-аккаунт — это обычная функция Solana для подписания транзакций заранее. Он хранит значение nonce и authority, и только это authority может продвинуть nonce, сменить authority или вывести SOL аккаунта. Когда дрейнер превращает ваш адрес в такой аккаунт, он становится authority над SOL вашего адреса.
- SOL больше не может уйти обычным путём. System Program отказывается переводить SOL с аккаунта, который содержит данные, а ваш кошелёк теперь содержит данные nonce.
- Комиссии оплачиваются из SOL, который может забрать атакующий. Nonce-аккаунт может платить сетевые комиссии только из SOL сверх своего резерва rent, а authority может вывести эти SOL сразу, как они появятся.
- Адрес, принадлежащий программе, вообще не может платить комиссии. Solana принимает комиссии только от простого аккаунта System или от nonce-аккаунта.
- Отменить это нельзя. Только текущее authority может сменить authority nonce-аккаунта, поэтому никакая подписанная вами транзакция его не вернёт.
С токенами всё иначе. Каждый токен-аккаунт записывает ваш адрес как владельца, а токен-программа проверяет вашу подпись, а не состояние аккаунта кошелька. Ваш ключ по-прежнему может перенести каждый токен и каждый NFT; нужно лишь, чтобы сетевую комиссию оплатил другой кошелёк.
Не отправляйте SOL на взломанный адрес, даже небольшую сумму на комиссии. Считайте, что за ним следит бот. Не подписывайте ничего с сайта или из личного сообщения, где обещают «разблокировать» или «починить» кошелёк: платные предложения восстановления в личных сообщениях — частое мошенничество после взлома.
Как вывести токены со взломанного кошелька Solana?
Используйте транзакцию, в которой другой кошелёк платит сетевую комиссию, а взломанный кошелёк подписывает только как владелец токенов. Приложения кошельков списывают комиссию с отправляющего кошелька, поэтому используйте инструмент восстановления, созданный для скомпрометированных кошельков, например Sol Recovery, и отправьте всё на новый кошелёк.
Sol Recovery — независимый сервис для скомпрометированных кошельков Solana. Он распознаёт преобразованные кошельки, а его бесплатный аккаунт разделяет кошелёк, который получает ваши активы, и кошелёк, который платит комиссии.
- Создайте новый кошелёк. Если вы когда-либо вводили seed-фразу или приватный ключ на сайте, создайте новый кошелёк с новой seed-фразой. Ещё один аккаунт под старой фразой — это не новый кошелёк.
- Посмотрите, что осталось. Вставьте взломанный адрес в Sol Recovery. Он сканирует токены, застейканные позиции, позиции DeFi, коллекционные активы и домены без подключения кошелька.
- Укажите безопасный кошелёк и плательщика. Добавьте новый кошелёк как получателя и отдельный кошелёк для оплаты сетевых комиссий. Пополняйте только кошелёк-плательщик, никогда не взломанный адрес.
- Проверьте и подпишите. Взломанный кошелёк подписывает каждый перевод как владелец токенов. Перед одобрением проверьте, что делает каждая транзакция, и убедитесь, что активы пришли.
Sol Recovery также предлагает бот-сервис для застейканных или заблокированных позиций, которые разблокируются в заданное время, чтобы опередить атакующего в момент разблокировки. Этот сервис берёт 10% от спасённого и требует приватный ключ взломанного кошелька, чтобы подписывать мгновенно. Это серьёзное решение о доверии: передавайте только ключ кошелька, который уже скомпрометирован, и никогда не передавайте seed-фразу нового кошелька.
Sol Recovery не связан с Sol Incinerator. Перед подписанием проверьте его текущие комиссии и каждую транзакцию. Разработчики могут собрать такой же перевод сами: перевод токенов действителен, когда его подписывает владелец токенов, независимо от того, какой кошелёк платит комиссию.
Можно ли всё ещё забрать SOL из токен-аккаунтов?
Да. Пустые токен-аккаунты держат возвратный депозит rent, и их закрытие возвращает эти SOL. Обычный возврат выплачивает их на сам кошелёк, то есть в данном случае атакующему, поэтому Sol Incinerator обрабатывает преобразованные кошельки иначе.
Когда вы подключаете преобразованный кошелёк, Sol Incinerator запрашивает адрес безопасного кошелька и выплачивает возвращённые SOL туда. Он сам оплачивает сетевую комиссию, а эта комиссия и обычная комиссия за очистку вычитаются из возвращённых SOL. На взломанный адрес ничего не отправляется. Поддерживаются закрытие пустых токен-аккаунтов и вывод избыточного rent; сжигание и другие действия, при которых кошелёк должен сам платить комиссии, не поддерживаются.
После переноса токенов их токен-аккаунты остаются пустыми. Если ваш инструмент восстановления их не закрывает, заберите SOL ещё раз, чтобы получить и этот rent.
Что ещё стоит проверить?
- Прочитайте транзакцию захвата целиком. Она могла также перевести активы или одобрить делегата. Запишите подпись и все незнакомые адреса для жалоб.
- Составьте список застейканных и заблокированных позиций. Некоторым нужен анстейкинг или период ожидания, прежде чем их можно перенести, а атакующий может ждать того же момента.
- Замените старый адрес везде, куда приходят средства. Списки вывода на биржах, настройки выплат и регистрации в airdrop, которые платят на взломанный адрес, теперь платят атакующему.
- Перестаньте пользоваться этим адресом. Когда активы выведены, не используйте кошелёк снова, даже для небольших сумм.

Sol Incinerator
Подключите взломанный кошелёк и заберите его возвращаемые SOL на адрес безопасного кошелька. На взломанный адрес ничего не отправляется.