#CriticalVulnerability 🚨 Внимание, разработчики приложений
$BTC : критическая уязвимость в «bitcoinjs-lib»
В популярной библиотеке `bitcoinjs-lib` исправлены две серьёзные ошибки. Из-за этих уязвимостей приложения могли критически занижать комиссии майнеров для полностью корректных подписанных транзакций PSBT (частично подписанных транзакций Bitcoin).
В чём проблема?
В Bitcoin комиссия — это разница между суммой входов и суммой выходов. Две отдельные логические ошибки приводили к тому, что библиотека сообщала о минимальной комиссии (например, 200 или 1 000 сатоши), хотя фактически со счёта могло списываться и передаваться майнерам почти 1 BTC (900 миллионов сатоши).
1. Несоответствие значений входов: при подписании использовались полные данные предыдущей транзакции, а модуль расчёта комиссии опирался на конфликтующую запись с меньшим значением. Подпись оставалась действительной, но комиссия рассчитывалась неверно.
2. Отсутствие записей о значениях входов: если для финализированных входов сумма не была указана, библиотека считала её равной «0». Это позволяло скрыть огромную фактическую комиссию в импортированных транзакциях.
Какие версии затронуты? Серия v5: исправлено в версии
➡️ 5.2.2 (уязвимы: 5.1.0 – 5.2.1)
➡️ Серия v6: исправлено в версии 6.1.9 (уязвимы: 6.0.0 – 6.1.8)
➡️ Серия v7: исправлено в версии 7.0.4 (уязвимы: 7.0.0-rc.0 – 7.0.3)
Что делать?
➡️ Обновитесь до исправленных версий (5.2.2, 6.1.9, 7.0.4).
➡️ Если обновление пока невозможно, независимо проверяйте значения входов и отклоняйте любые несогласованные данные перед подписанием или расчётом комиссий.
Безопасность вашего приложения зависит от того, доверяете ли вы библиотекам вслепую или проверяете каждый сатоши. 🛡️