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

Bitcoin транзакции безопасность кошельки Psbt cryptoslate.com

Устранена уязвимость в Bitcoin Core: подписи SIGHASH_SINGLE теперь надежно привязывают средства к получателю. Обновление защищает от несанкционированного изменения адреса.

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

Изменение, объединенное в основную ветку разработки Bitcoin Core 25 сентября, нацелено на незначительный недостаток в частично подписанных транзакциях Bitcoin, или PSBT, который мог привести к действительной подписи без защиты предполагаемого вывода.

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

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

Для устаревших входов случай отсутствующего выхода может привести к подписи по фиксированному хеш-значению. Разработчики Bitcoin Core заявили, что такая подпись затем может быть повторно использована против других неизрасходованных выходов, контролируемых тем же ключом, при наличии тех же структурных условий.

SegWit v0 транзакции сохраняют более надежную защиту, поскольку подпись по-прежнему привязывается к конкретной монете, которая расходуется, и ее сумме. Однако выход назначения может остаться не привязанным.

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

Bitcoin Core блокирует рискованный запрос на подпись

Bitcoin Core уже отклонял крайний случай через свой интерфейс подписи необработанных транзакций. Его путь PSBT, включая walletprocesspsbt, все еще мог подписать его.

Новый код перемещает проверку в общую логику создания подписи Bitcoin Core, предотвращая подписание затронутых устаревших входов и входов SegWit v0, позволяя при этом обрабатывать другие действительные входы в том же PSBT.

PSBT обычно используются для координации транзакций между программными кошельками, аппаратными устройствами и автономными подписантами. Они позволяют создателям транзакций передавать информацию отдельному подписанту, не передавая этому системе контроль над закрытыми ключами.

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

Bitcoin Improvement Proposal 174, определяющий PSBT, уже предписывает подписантам отклонять неприемлемые режимы подписи и рекомендует SIGHASH_ALL, если не указано иное. Изменение в Bitcoin Core явно предотвращает достижение этой конфигурации с отсутствующим выходом на этапе подписи.

Пользователи еще не имеют подтвержденного производственного релиза, содержащего эту защиту. Изменение от 25 сентября было объединено в ветку разработки Bitcoin Core, в то время как в опубликованных списках релизов проекта по состоянию на 4 октября не было указано исправленной версии или подтвержденного бэкпорта.

Это оставляет поставщикам кошельков и интеграторам аппаратных подписей более непосредственное решение: пересмотреть собственную обработку запросов SIGHASH_SINGLE, вместо того чтобы ждать релиза Bitcoin Core для обеспечения такой же защиты на последующих этапах.

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

Похожие новости: