Address Poisoning: как подмена похожего криптоадреса приводит к ошибочным переводам

Address poisoning — класс атак, при котором злоумышленник подставляет в историю транзакций жертвы адрес, визуально похожий на легитимный. Пользователь копирует адрес из истории, сверяет первые и последние символы, подтверждает перевод — и отправляет средства на кошелёк атакующего. Блокчейн при этом не скомпрометирован: атака эксплуатирует человеческую ошибку и особенности отображения адресов в кошельках.

Почему атака работает​


Криптоадреса длинные и нечитаемые. Адрес Ethereum — 42 символа в шестнадцатеричном формате, Bitcoin-адрес в формате Bech32 — 42–62 символа. Ни один человек не способен запомнить или визуально отличить два адреса, различающихся в середине. Кошельки и эксплореры обычно показывают адрес целиком, но пользователь при копировании из истории транзакций ориентируется на первые 4–6 и последние 4–6 символов.

Атакующий генерирует адрес, у которого совпадают начало и конец с целевым. Для этого используется перебор: генерируются миллионы пар ключей, пока не найдётся адрес с нужным префиксом и суффиксом. Вычислительно это дорого, но для адресов с совпадением по 4–5 символов с каждой стороны — вполне реалистично на обычном оборудовании.

Механика атаки: zero-value transfer​


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

Когда пользователь в следующий раз хочет отправить средства на привычный адрес, он открывает историю транзакций, находит «знакомый» адрес и копирует его. Если он сверяет только начало и конец — попадает на адрес атакующего.

Ключевая особенность: для zero-value transfer не требуется подпись приватным ключом жертвы. Атакующий просто инициирует транзакцию со своего кошелька на адрес жертвы с нулевым значением. Это делает атаку массовой и дешёвой в масштабировании.

По данным Ledger, зафиксировано более 270 миллионов подобных попыток на Ethereum и BNB Chain, с подтверждёнными потерями свыше $83 миллионов.

Реальный кейс: потеря $2,6 миллиона за три часа​


26 мая 2025 года крипто-трейдер получил серию zero-value транзакций с адреса, имитирующего один из его контрагентов. В истории кошелька появились записи, визуально неотличимые от легитимных. Трейдер скопировал поддельный адрес и отправил $843 000 в USDT. Через три часа он повторил операцию на $1,75 миллиона. Общая потеря составила около $2,6 миллиона.

Приватные ключи не были скомпрометированы. Кошелёк не был взломан. Единственная причина потери — копирование адреса из истории без полной сверки.

Dusting как разведка и подготовка​


Dusting — отправка минимального количества токенов (буквально «пыли») на адрес жертвы. В отличие от zero-value transfer, здесь передаётся реальная, но ничтожная сумма. Цели две:

  • Деанонимизация. Если жертва перемещает полученные токены между своими кошельками, атакующий отслеживает цепочку и связывает адреса между собой, строя финансовый профиль.
  • Подготовка к poisoning. Dusting-транзакция создаёт запись в истории, которую позже можно использовать как приманку при копировании адреса.

Разница между dusting и zero-value transfer: dusting в первую очередь инструмент наблюдения, zero-value transfer — прямой метод подмены адреса в истории.

Address poisoning в Bitcoin: SegWit-имитация​


Хотя термин «address poisoning» чаще ассоциируется с EVM-цепочками, аналогичная техника применяется и в Bitcoin. Атакующий отправляет небольшую сумму BTC с адреса, имитирующего адрес жертвы или её контрагента. Эксплуатируется визуальное сходство между форматами Legacy (1...), SegWit (3...) и Bech32 (bc1...).

Механика та же: запись в истории, копирование без полной сверки, перевод на адрес атакующего.

Перехват транзакций через malware​


Отдельный вектор — вредоносное ПО на устройстве жертвы. Малварь отслеживает буфер обмена: когда пользователь копирует криптоадрес, вредонос мгновенно подменяет его на адрес атакующего. Пользователь вставляет адрес, видит знакомое начало и конец, подтверждает — средства уходят не туда.

Этот вектор опаснее zero-value transfer, потому что не зависит от истории транзакций. Защита от него — аппаратный кошелёк, где адрес получателя отображается на экране устройства и подтверждается физически.

Кейс ByBit: перехват на уровне инфраструктуры​


21 февраля 2025 года атака на биржу ByBit привела к краже $1,5 миллиарда в Ethereum. Атакующие (приписывается группе Lazarus) внедрили вредоносный код в программное обеспечение, используемое для переводов между холодными и горячими кошельками. При рутинном переводе вредонос перехватил запрос на транзакцию, подменил адрес получателя и представил изменённую транзакцию как валидную для мультиподписного одобрения.

Это показывает, что address poisoning работает не только на уровне пользовательского интерфейса, но и на уровне инфраструктуры, если есть доступ к промежуточному ПО.

Атака через смарт-контракты и DApp​


Уязвимости в децентрализованных приложениях позволяют манипулировать параметрами транзакции до её подписания. Пользователь видит в интерфейсе один адрес, но в данные транзакции, которые он подписывает, подставлен другой. Это требует эксплуатации конкретного бага в DApp, но такие случаи зафиксированы.

Chainalysis обнаружил более 82 000 кошельков, связанных с кампаниями, целенаправленно атакующими пользователей с высокими балансами.

Как распознать poisoning в истории кошелька​


Несколько признаков, которые указывают на попытку отравления истории:

  • Транзакция с нулевой суммой или ничтожно малым количеством токенов от неизвестного адреса.
  • Адрес, который визуально похож на один из ваших контрагентов, но не совпадает полностью.
  • Появление записей, которые вы не инициировали и не ожидаете.
  • Несколько похожих адресов в истории за короткий промежуток времени.

Если видите такие записи — не копируйте из них адреса. Помечайте как подозрительные, если кошелёк это позволяет.

Меры защиты​


Полная сверка адреса​


Единственная надёжная защита при ручном копировании — сверять адрес целиком, символ за символом. Не первые и последние 4–6 знаков, а весь адрес. Это неудобно, но это единственный способ гарантировать, что вы отправляете на правильный адрес.

Аппаратный кошелёк​


Аппаратный кошелёк (Ledger, Trezor и аналоги) отображает адрес получателя на собственном экране устройства. Даже если малварь на компьютере подменил адрес в буфере обмена, на экране аппаратного кошелька будет показан реальный адрес из подписываемой транзакции. Пользователь видит подмену и отклоняет транзакцию.

Адресная книга с верификацией​


Многие кошельки позволяют сохранять адреса в адресную книгу. Если вы один раз проверили адрес полностью и сохранили его, дальнейшие переводы идут из книги без ручного копирования. Это устраняет риск копирования из истории транзакций.

Отказ от повторного использования адресов​


Современные HD-кошельки генерируют новый адрес для каждой транзакции. Если вы используете один и тот же адрес постоянно, атакующему проще его имитировать и проще отслеживать вашу активность. Генерация новых адресов усложняет задачу.

Проверка через несколько источников​


Если вы получили адрес от контрагента, сверьте его по двум независимым каналам: например, в мессенджере и на официальном сайте. Если адрес пришёл только из одного источника — риск подмены выше.

Ограничение сумм и мультисигнатура​


Для крупных переводов используйте мультисигнатуру: транзакция требует подтверждения с нескольких независимых устройств. Даже если один адрес скомпрометирован, второй подписант увидит несоответствие.

Обновление кошелька​


Разработчики кошельков добавляют защиту от известных векторов: предупреждения при копировании похожих адресов, фильтрацию zero-value транзакций из истории, пометки подозрительных записей. Обновлённая версия кошелька с большей вероятностью содержит такие механизмы.

Что делать, если средства уже отправлены на поддельный адрес​


Транзакция в блокчейне необратима. Если вы отправили средства на адрес атакующего, вернуть их через протокол невозможно. Варианты действий:

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

Шансы на возврат низкие, но не нулевые — особенно если атакующий использует централизованную биржу для вывода.

Итоговая проверка перед каждым переводом​


  1. Не копируйте адрес из истории транзакций.
  2. Используйте адресную книгу или вводите адрес из проверенного источника.
  3. Сверяйте адрес полностью, а не по первым и последним символам.
  4. Для крупных сумм — аппаратный кошелёк с подтверждением на экране устройства.
  5. Игнорируйте входящие транзакции с нулевой или ничтожной суммой от неизвестных адресов.
  6. Обновляйте кошелёк до последней версии.

Источники​


 
Назад
Верх Низ