
Разработчики Bitcoin Core 12 июня в X подтвердили, что в новой функции -privatebroadcast версии Bitcoin Core 31.0 есть уязвимость конфиденциальности: при определённых сетевых условиях, если не удаётся установить рукопожатие v2, соединение будет выполняться с узлами-партнёрами через IPv4 или IPv6, из-за чего получателю будет раскрываться открытый IP-адрес отправителя.
Согласно официальному объявлению Bitcoin Core, узлы будут затронуты этой уязвимостью только при одновременном выполнении всех следующих пяти условий:
· узел работает под Bitcoin Core 31.0 и включена функция -privatebroadcast
· транзакции передаются через RPC-команду sendrawtransaction (кошелёчные RPC вроде sendtoaddress, sendall и т. п. не используют приватную рассылку, поэтому не затронуты)
· можно напрямую установить исходящее соединение IPv4 или IPv6 (без ограничений -onlynet и без настройки -proxy=...)
· передача BIP324 v2 не отключена (не задан параметр -v2transport=0)
Соединения с узлами-партнёрами в onion и I2P не затронуты, потому что при любой повторной попытке в v1 эти соединения всегда идут через соответствующую прокси-маршрутизацию.
Согласно официальному описанию, механизм срабатывания уязвимости таков: когда выбор приватной рассылки включает узлы-партнёры, поддерживающие передачу v2 (BIP324) через IPv4 или IPv6, начальное соединение должно быть установлено через Tor-прокси-маршрутизацию. Если рукопожатие v2 не удаётся, Bitcoin Core пытается повторить соединение по протоколу v1; при этом повтор в v1 выполняется не через Tor-прокси-маршрутизацию, а напрямую через IPv4 или IPv6, из-за чего раскрывается IP-адрес инициатора.
Это нарушает гарантию конфиденциальности, указанную в описании версии 31.0: «Получатель никогда не узнает их IP-адрес (а также географическое местоположение)». Разработчики подтвердили, что наиболее вероятно, что уязвимость намеренно вызывается злоумышленными узлами-партнёрами путём искусственного отключения рукопожатия v2, чтобы принудить повтор по v1.
Официально Bitcoin Core предлагает следующие три временных решения:
Вариант первый (рекомендуется): полностью отключить параметр -privatebroadcast, установив -privatebroadcast=0
Вариант второй: отключить передачу v2, задав -v2transport=0. Важно: это приведёт к тому, что все соединения узла будут использовать нешифрованный протокол v1; в открытой сети это делает узел более подверженным идентификации по отпечаткам и воздействию цензуры.
Вариант третий: маршрутизировать исходящий трафик IPv4/IPv6 в Tor, задав -proxy=127.0.0.1:9050 (замените на фактический порт Tor SOCKS). Важно: это сделает узел более уязвимым к атакам Сибил (Sybil Attack).
Согласно объявлению Bitcoin Core, кошелёчные RPC (например sendtoaddress, sendall и т. п.) не используют функцию приватной рассылки, поэтому на них эта уязвимость не влияет. Уязвимость срабатывает только при широковещательной рассылке через sendrawtransaction и при выполнении остальных четырёх условий.
Согласно официальному описанию, для узлов-партнёров, которые реально поддерживают передачу v2, рукопожатие v2 в нормальных условиях не должно часто терпеть неудачу. Наиболее вероятно, что уязвимость намеренно вызывается злоумышленными узлами-партнёрами путём искусственного отключения рукопожатия v2, чтобы принудить повтор по v1.
Согласно объявлению Bitcoin Core, исправление будет выпущено вместе с версией 31.1, но в объявлении не указана конкретная дата релиза. Официальная рекомендация — до обновления до 31.1 использовать одно из трёх временных решений, описанных выше.
Связанные новости
Coinbase сообщает о предупреждении: количество в 7 млн BTC несет квантовый риск; представлены три основных способа противодействия
Circle запускает Arc Privacy для защиты данных корпоративной блокчейн-инфраструктуры Enterprise Blockchain Data Protection
Circle запускает Arc Privacy для конфиденциальных смарт-контрактов
Ежедневный отчёт Gate (11 июня): атаке подверглась программа автоматического маркет-мейкинга Raydium; Том Ли заявил, что предложение Ethereum сокращается