Вернуться в блог
Solana

Взломанный кошелёк Solana не отправляет токены? Как безопасно их перенести

Некоторые дрейнеры Solana не просто выводят ваши SOL. Они меняют сам аккаунт кошелька, после чего он больше не может отправлять SOL, а любые добавленные SOL может вывести атакующий. Токены и NFT обычно остаются на месте, но обычный способ их перенести, отправка из приложения кошелька, не срабатывает или отдаёт атакующему ещё больше SOL.

В этом руководстве объясняется, что изменилось, почему не нужно отправлять SOL на кошелёк и как перенести оставшееся на новый кошелёк, пока комиссии платит другой кошелёк.

Как понять, что ваш кошелёк Solana преобразован?

Отправки с кошелька не проходят, хотя на нём ещё есть токены, а обозреватель показывает адрес как nonce-аккаунт с authority, которое не принадлежит вам, или как аккаунт, принадлежащий программе. При подключении к Sol Incinerator вы увидите «Ваш кошелёк взломан» со временем захвата и ссылкой на транзакцию.

Обычный кошелёк Solana — это простой аккаунт System Program без данных. Преобразованный кошелёк остаётся по тому же адресу, но аккаунт за ним изменился. Проверьте это тремя способами:

  1. Откройте адрес в обозревателе. Solana Explorer показывает для преобразованного кошелька данные nonce-аккаунта, включая адрес authority. Если это authority не ваш адрес, SOL аккаунта контролирует кто-то другой.
  2. Найдите транзакцию, которая это сделала. В изученных нами случаях жертва подписала вместе с атакующим транзакцию с двумя инструкциями System Program: allocate выделила адресу кошелька 80 байт данных, а initializeNonce превратила его в durable nonce-аккаунт с атакующим в роли authority. Сетевую комиссию оплатил атакующий. В одном случае вывод SOL жертвы произошёл через 30 секунд.
  3. Подключите кошелёк к 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. Он распознаёт преобразованные кошельки, а его бесплатный аккаунт разделяет кошелёк, который получает ваши активы, и кошелёк, который платит комиссии.

  1. Создайте новый кошелёк. Если вы когда-либо вводили seed-фразу или приватный ключ на сайте, создайте новый кошелёк с новой seed-фразой. Ещё один аккаунт под старой фразой — это не новый кошелёк.
  2. Посмотрите, что осталось. Вставьте взломанный адрес в Sol Recovery. Он сканирует токены, застейканные позиции, позиции DeFi, коллекционные активы и домены без подключения кошелька.
  3. Укажите безопасный кошелёк и плательщика. Добавьте новый кошелёк как получателя и отдельный кошелёк для оплаты сетевых комиссий. Пополняйте только кошелёк-плательщик, никогда не взломанный адрес.
  4. Проверьте и подпишите. Взломанный кошелёк подписывает каждый перевод как владелец токенов. Перед одобрением проверьте, что делает каждая транзакция, и убедитесь, что активы пришли.

Sol Recovery также предлагает бот-сервис для застейканных или заблокированных позиций, которые разблокируются в заданное время, чтобы опередить атакующего в момент разблокировки. Этот сервис берёт 10% от спасённого и требует приватный ключ взломанного кошелька, чтобы подписывать мгновенно. Это серьёзное решение о доверии: передавайте только ключ кошелька, который уже скомпрометирован, и никогда не передавайте seed-фразу нового кошелька.

Sol Recovery не связан с Sol Incinerator. Перед подписанием проверьте его текущие комиссии и каждую транзакцию. Разработчики могут собрать такой же перевод сами: перевод токенов действителен, когда его подписывает владелец токенов, независимо от того, какой кошелёк платит комиссию.

Можно ли всё ещё забрать SOL из токен-аккаунтов?

Да. Пустые токен-аккаунты держат возвратный депозит rent, и их закрытие возвращает эти SOL. Обычный возврат выплачивает их на сам кошелёк, то есть в данном случае атакующему, поэтому Sol Incinerator обрабатывает преобразованные кошельки иначе.

Когда вы подключаете преобразованный кошелёк, Sol Incinerator запрашивает адрес безопасного кошелька и выплачивает возвращённые SOL туда. Он сам оплачивает сетевую комиссию, а эта комиссия и обычная комиссия за очистку вычитаются из возвращённых SOL. На взломанный адрес ничего не отправляется. Поддерживаются закрытие пустых токен-аккаунтов и вывод избыточного rent; сжигание и другие действия, при которых кошелёк должен сам платить комиссии, не поддерживаются.

После переноса токенов их токен-аккаунты остаются пустыми. Если ваш инструмент восстановления их не закрывает, заберите SOL ещё раз, чтобы получить и этот rent.

Что ещё стоит проверить?

  • Прочитайте транзакцию захвата целиком. Она могла также перевести активы или одобрить делегата. Запишите подпись и все незнакомые адреса для жалоб.
  • Составьте список застейканных и заблокированных позиций. Некоторым нужен анстейкинг или период ожидания, прежде чем их можно перенести, а атакующий может ждать того же момента.
  • Замените старый адрес везде, куда приходят средства. Списки вывода на биржах, настройки выплат и регистрации в airdrop, которые платят на взломанный адрес, теперь платят атакующему.
  • Перестаньте пользоваться этим адресом. Когда активы выведены, не используйте кошелёк снова, даже для небольших сумм.
Sol Incinerator

Sol Incinerator

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

Попробовать

Читайте также

Часто задаваемые вопросы

Почему я не могу отправить токены со взломанного кошелька Solana?

Транзакция дрейнера может превратить адрес вашего кошелька в durable nonce-аккаунт под его контролем или передать адрес программе. Сетевые комиссии должны оплачиваться из SOL кошелька, а атакующий может вывести любые SOL сверх резерва аккаунта, поэтому переводы не проходят, либо добавленные вами SOL исчезают первыми.

Стоит ли отправить SOL на взломанный кошелёк, чтобы оплатить комиссии?

Нет. Если кошелёк превращён в nonce-аккаунт, атакующий является его nonce authority и может вывести всё сверх резерва rent, так что считайте, что за адресом следит бот. Используйте инструмент, в котором отдельный кошелёк платит сетевые комиссии, а взломанный кошелёк подписывает только как владелец токенов.

Мои токены и NFT всё ещё принадлежат мне после захвата через nonce?

Обычно да, если та же транзакция не перевела их и не одобрила делегата. Захват через nonce меняет сам аккаунт кошелька, а не принадлежащие ему токен-аккаунты, поэтому ваш ключ по-прежнему подписывает переводы токенов. Откройте транзакцию захвата в обозревателе и посмотрите всё, что она изменила, прежде чем планировать перенос.

Могу ли я всё ещё забрать SOL из пустых токен-аккаунтов?

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

Нужно ли делиться приватным ключом, чтобы спасти активы?

Для обычных переводов нет. Инструмент восстановления может собрать транзакцию, которую подписывает взломанный кошелёк, пока другой кошелёк платит комиссии. Бот-сервис Sol Recovery для застейканных или заблокированных позиций запрашивает приватный ключ, чтобы действовать в момент разблокировки. Это решение о доверии, и никогда не передавайте seed-фразу нового кошелька.

Взломанный кошелёк Solana: как безопасно перенести токены