В bip322 — обход проверки владения Bitcoin-адресом: CVSS 9.1
09.10.2026В крейте bip322 найдена критическая уязвимость: функции проверки подписи BIP-322 принимали доказательство, подписанное ключом атакующего, как подтверждение владения чужим адресом стандарта P2WPKH и P2SH-P2WPKH. Оценка CVSS 9.1, выпущено 9 октября 2026 года.
Суть уязвимости
verify_simple, verify_simple_encoded, verify_full и verify_full_encoded должны доказывать, что подписавший контролирует указанный Bitcoin-адрес. В пострадавших версиях публичный ключ для проверки брался из свидетеля, предоставленного вызывающим, и при сверке по ошибке сравнивался с самим собой: проверка была тавтологичной. Код подтверждал, что подпись относится к ключу из свидетеля, но никогда — что этот ключ является хешем заявленного адреса.
В результате атакующий мог выбрать любой адрес жертвы, сформировать по нему BIP-322-вызов, подписать своим ключом и получить принятое доказательство. Известных обходных мер нет.
Что исправлено
Ошибка устранена в версии 0.0.11: ожидаемый scriptPubKey теперь выводится из публичного ключа свидетеля и обязан в точности совпадать с scriptPubKey заявленного адреса. Пострадавшие версии 0.0.6–0.0.10 отозваны с crates.io. Проверка P2TR не затронута: там ключ выводится из программы адреса, а не из свидетеля.
Оригинал
Affected versions of bip322 accepted a BIP-322 proof created with an attacker-controlled private key as a valid signature for an unrelated victim P2WPKH or P2SH-P2WPKH address, allowing complete authentication bypass ... The code verified that the signature was valid for the public key embedded in the witness, but never verified that this public key hashes to the claimed address.
Упоминаний: 1 · Просмотров: 6