Проверка криптоадреса перед переводом: как избежать подмены буфера обмена и похожих адресов

Почему ошибка в адресе необратима​


Транзакция в блокчейне необратима по дизайну. Если средства отправлены на неверный адрес, вернуть их можно только в одном случае — получатель сам решит их вернуть. Ни служба поддержки кошелька, ни разработчики протокола, ни майнеры не способны отменить или перенаправить подтверждённую транзакцию. Это фундаментальное свойство децентрализованных сетей, а не баг.

Именно поэтому проверка адреса перед отправкой — не формальность, а единственный барьер между вами и безвозвратной потерей средств.

Подмена буфера обмена: механика атаки​


Clipboard hijacker — вредоносное ПО, которое мониторит содержимое буфера обмена и подменяет криптоадрес в момент копирования или вставки. Схема работает так:

  1. Пользователь копирует адрес получателя из мессенджера, письма или веб-страницы.
  2. Вредонос перехватывает событие записи в буфер.
  3. Адрес заменяется на адрес злоумышленника, который визуально похож на оригинал — совпадают первые и последние символы.
  4. Пользователь вставляет адрес в поле отправки, бегло сверяет начало и конец, подтверждает транзакцию.

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

Как защититься от clipboard hijacker​


  • Не копируйте адрес из непроверенных источников. Если адрес прислали в мессенджере или по email, введите его вручную или отсканируйте QR-код.
  • Сверяйте адрес посимвольно после вставки. Достаточно проверить не только первые 4–6 и последние 4–6 символов, а минимум 10–12 символов в середине строки. Именно середину подменяют чаще всего, рассчитывая на поверхностную проверку.
  • Используйте QR-коды. Сканирование QR-кода напрямую из кошелька получателя исключает этап копирования через буфер.
  • Проверяйте буфер после вставки. Вставьте адрес в текстовый редактор и сравните с оригиналом. Если символы расходятся — система скомпрометирована.
  • Следите за окружением. Браузерные расширения с доступом к данным страниц, устаревшее ПО и файлы из ненадёжных источников — основные векторы заражения. Расширения запрашивают разрешение «читать и изменять данные сайтов» по умолчанию, и ранее безопасное расширение может получить вредоносный код при автообновлении.

Визуально похожие адреса​


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

Пример для Bitcoin (Legacy-формат):

Код:
Оригинал:  1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
Подделка:  1BvBMSEYstWxxxxxxxxxxxxxxxxxxxxxxJaNVN2

При беглом взгляде оба адреса начинаются на 1BvBMSEY и заканчиваются на JaNVN2. Середина не читается, потому что человеческий глаз не способен удержать в рабочей памяти 34 символа base58.

Почему чексуммы не спасают от этой атаки​


Форматы адресов включают контрольные суммы, но они защищают от случайных опечаток, а не от намеренной подмены:

  • Bech32 (адреса Bitcoin, начинающиеся с bc1) использует код Боуза–Чоудхури–Хоквингема (BCH), который обнаруживает до 4 ошибок в строке. Но если злоумышленник сгенерировал валидный адрес с нужным префиксом и суффиксом, чексумма будет корректной.
  • EIP-55 (адреса Ethereum) кодирует часть символов в верхний регистр как контрольную сумму. Это помогает заметить случайную замену одного символа, но не защищает от полностью валидного поддельного адреса.

Чексумма — это защита от опечаток, а не от социальной инженерии.

Практический алгоритм проверки​


Шаг 1: Получите адрес из доверенного канала​


Наиболее надёжные способы получения адреса получателя:

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

Наименее надёжные каналы: текстовые сообщения в мессенджерах, email, комментарии в социальных сетях, превью ссылок.

Шаг 2: Сверьте адрес полностью​


После вставки адреса в поле отправки:

  1. Сравните первые 8–10 символов с оригиналом.
  2. Сравните последние 8–10 символов.
  3. Сравните минимум 6–8 символов в середине.
  4. Проверьте общую длину строки. Для Bitcoin Legacy это 25–34 символа, для Bech32 — 42 символа, для Ethereum — 42 символа (включая 0x).

Если хотя бы один символ не совпадает — не отправляйте.

Шаг 3: Используйте адресную книгу кошелька​


Большинство кошельков позволяют сохранять адреса с метками. После первой успешной проверки сохраните адрес в адресную книгу. При повторных переводах выбирайте его из списка, а не вставляйте заново.

Шаг 4: Тестовая транзакция​


Для крупных сумм отправьте сначала минимальный объём (например, 0.0001 BTC или 0.001 ETH). Дождитесь подтверждения от получателя, затем отправьте основную сумму на тот же адрес. Стоимость тестовой транзакции несопоставима с риском потери всей суммы.

Шаг 5: Верификация на устройстве подписи​


Если вы используете аппаратный кошелёк (hardware wallet), адрес получателя отображается на экране самого устройства перед подписанием. Это независимый канал верификации: даже если компьютер скомпрометирован и подменил адрес в интерфейсе, на экране аппаратного кошелька будет показан реальный адрес из неподписанной транзакции. Сверяйте адрес на экране устройства с ожидаемым.

Форматы адресов и на что обращать внимание​


СетьФорматПример началаДлина
Bitcoin LegacyBase58Check1...25–34
Bitcoin P2SHBase58Check3...34
Bitcoin Bech32Bech32bc1q...42
Bitcoin Bech32mBech32mbc1p...62
EthereumHex + EIP-550x...42

Если адрес не соответствует ожидаемому формату для данной сети — это повод остановиться. Например, адрес, начинающийся с 0x, не является Bitcoin-адресом. Адрес bc1q... не может быть адресом Ethereum.

Ошибка отправки в неверную сеть​


Отдельная категория потерь — отправка токена в сеть, которую адрес не поддерживает. Например, отправка ERC-20 токена на адрес биржи, который предназначен для другой сети. Адрес может быть валидным с точки зрения формата, но средства уйдут в сеть, где биржа не отслеживает этот адрес. Уточняйте у получателя, какая сеть ожидается.

Гигиена окружения​


Проверка адреса бессмысленна, если сама среда, в которой вы работаете, скомпрометирована. Несколько принципов:

  • Обновляйте ОС и ПО. Устаревшие версии содержат уязвимости, через которые устанавливаются clipboard hijacker и кейлоггеры.
  • Ограничьте браузерные расширения. Каждое расширение с доступом к данным страниц — потенциальный вектор. Устанавливайте только необходимые и из официальных источников.
  • Не храните seed-фразу и приватные ключи в цифровом виде. Скриншоты и текстовые файлы с seed-фразой могут синхронизироваться в облако и стать доступными злоумышленнику.
  • Используйте аппаратный кошелёк для значительных сумм. Приватный ключ не покидает устройство, а транзакция подписывается изолированно. Даже при полном контроле над компьютером злоумышленник не получит ключ.
  • Разделяйте кошельки. Для повседневных операций используйте горячий кошелёк с небольшой суммой. Основную часть средств храните в холодном хранилище или на аппаратном устройстве.

Чек-лист перед подтверждением транзакции​


  1. Адрес получен из доверенного канала (QR-код, адресная книга, верифицированный сайт).
  2. Адрес вставлен и сверен посимвольно: начало, середина, конец.
  3. Длина строки соответствует ожидаемому формату сети.
  4. Сеть отправки совпадает с сетью, которую ожидает получатель.
  5. Для крупной суммы отправлена тестовая транзакция и получено подтверждение.
  6. При использовании аппаратного кошелька адрес на экране устройства совпадает с ожидаемым.
  7. Окружение чистое: нет подозрительных расширений, ПО обновлено.

Если хотя бы один пункт не выполнен — остановитесь и устраните пробел до подтверждения.

Источники​


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