Иногда для кражи не нужно взламывать биржу или подменять фронтенд. Достаточно человеческой привычки копировать адрес не глядя. В мае 2024 года одна-единственная транзакция унесла около $68 млн — и всё, что для этого потребовалось, это адрес-двойник, похожий на настоящий началом и концом. Разберём эту атаку буквально по символам.
Криптоадрес — это длинная строка из десятков символов. Никто не помнит её наизусть, и почти никто не сверяет целиком. На практике люди делают одно из двух: либо копируют адрес из истории собственных транзакций, либо бегло сверяют «начало и конец», а середину пропускают. Именно на этой привычке и построена атака address poisoning — «отравление адреса».
Идея проста и коварна. Злоумышленник заранее генерирует адрес-двойник, у которого совпадают первые и последние символы с адресом, которым жертва реально пользуется. Затем он «подбрасывает» этот двойник в историю транзакций жертвы — например, крошечным или нулевым переводом, чтобы адрес-обманка засветилась в списке операций. Расчёт на то, что в следующий раз жертва скопирует адрес получателя не из надёжного источника, а из своей же «отравленной» истории — и отправит деньги двойнику.

В мае 2024 года эта схема сработала в особо крупном размере. В транзакции 0x87c6e5…bf73 жертва отправила средства на сумму около $68 млн — но не тому адресу, которому собиралась, а адресу-двойнику, подготовленному атакующим. Двойник был подобран так, что начинался на 0xd9A1 и заканчивался на 853a91: беглый взгляд «первые символы верные, последние верные» давал ложное ощущение, что всё в порядке.
Вся середина адреса при этом была чужой. Но именно середину человек и не проверяет. Одно движение — скопировать «знакомый» адрес из истории, вставить, подтвердить — и десятки миллионов ушли к преступнику. Ни взлома кошелька, ни украденных ключей, ни вредоносного кода: сработала чистая психология и невнимательность.
0x87c6e5…bf73, сумма — около $68 млн.0xd9A1, заканчивается на 853a91 — совпадают начало и конец, середина чужая.Разложим атаку на составляющие, чтобы понять, где именно рвётся защита обычного пользователя.
Ключевой психологический трюк — эксплуатация эвристики «начало-конец». Наш мозг ищет короткие пути: если первые четыре символа совпали и последние шесть совпали, он достраивает вывод «это тот самый адрес». Атака поисоннинга — это, по сути, атака не на код, а на этот когнитивный shortcut.
«Not your keys, not your coins» («Не твои ключи — не твои монеты»).
— Андреас Антонопулос; в контексте поисоннинга: даже полностью контролируя ключи, вы теряете монеты, если сами подписываете перевод не тому адресу
Здесь эта максима звучит особенно горько. Жертва полностью владела своими ключами и добровольно подписала транзакцию. Кража произошла не потому, что кто-то получил доступ к кошельку, а потому, что владелец сам направил средства двойнику. Против такой ошибки не спасает ни аппаратный кошелёк, ни надёжный пароль — только сверка адреса.
Отравление адреса важно и для проверяющего, а не только для владельца средств. Во-первых, «пылящие» микропереводы от адресов-двойников — это узнаваемый паттерн, который стоит замечать при разборе истории кошелька: их наличие говорит о том, что адрес пытались атаковать (а значит, у него могут быть и ошибочные исходящие). Во-вторых, адрес-двойник, получивший украденные $68 млн, сам становится «грязным» узлом: средства на нём — это средства кражи, и любая экспозиция на такой адрес несёт максимальный риск.
Наконец, это дело — напоминание о том, что не всякая крупная потеря средств связана со взломом инфраструктуры. Иногда «источником» грязных денег оказывается адрес обмана, а жертва — вполне добросовестный пользователь, совершивший одну роковую ошибку копирования. При разборе спорной транзакции полезно держать в голове и такой сценарий.
Есть соблазн отнести отравление адреса к «мелким» уловкам на фоне многомиллиардных взломов бирж и мостов. Это ошибка. У поисоннинга есть три свойства, которые делают его по-своему коварнее технических атак. Во-первых, он не требует никакой уязвимости в коде — а значит, от него не защищают ни аудиты смарт-контрактов, ни обновления кошельков, ни аппаратные устройства. Уязвимость находится в голове пользователя, и её нельзя «пропатчить» релизом.
Во-вторых, атака масштабируется дёшево. Сгенерировать двойник и подбросить «пыль» стоит копейки, а сделать это можно сразу для тысяч потенциальных жертв, терпеливо ожидая, кто из них ошибётся. Один сорванный куш в десятки миллионов окупает миллионы неудачных попыток. В-третьих, атака маскируется под норму: в отравленной истории двойник выглядит как обычная прошлая операция, а не как что-то подозрительное. Жертва не чувствует, что её атакуют, — она уверена, что действует привычно и безопасно.
Именно поэтому дисциплина сверки адреса — не паранойя, а базовая гигиена, сопоставимая по важности с хранением ключей. Технические средства защиты сместили точку атаки: раз взломать кошелёк напрямую трудно, злоумышленник атакует ритуал перевода. И единственная преграда на этом пути — привычка человека проверять адрес целиком и брать его только из доверенного источника.
0x87c6e5…bf73 на ~$68 млн. Защита проста и дисциплинарна: сверять адрес целиком, брать его только из доверенного источника, вести адресную книгу и делать тестовый перевод. А для AML-специалиста «пыль» от адресов-двойников — сигнал, а сам адрес-обманка с украденными средствами — грязный узел с максимальным риском.Факты изложены по открытым источникам. Материалы носят образовательный характер.