Ошибки bitcoinjs-lib могли скрыть комиссию в 9 BTC за расчётом в 200 сатоши
Новость опубликована 26.10.2026 ⦁ источник
Изображение создано ИИ
Разработчики bitcoinjs-lib 26 октября раскрыли две уязвимости высокой опасности в расчёте комиссий частично подписанных биткоин-транзакций — PSBT. В демонстрации одной из ошибок библиотека показала комиссию 200 сатоши, хотя действительная комиссия корректно подписанной транзакции составляла 900 млн сатоши, или 9 BTC. Приложение, доверившееся этому расчёту, могло пропустить предупреждение о чрезмерной комиссии.
PSBT хранит саму транзакцию и служебные данные о расходуемых выходах. В первом случае пакет мог содержать две противоречащие друг другу записи об одном выходе: код подписи проверял полную предыдущую транзакцию, а счётчик комиссии брал меньшее ложное значение из другой записи. Встроенная проверка максимальной комиссии использовала тот же заниженный результат.
Во второй уязвимости bitcoinjs-lib принимала финализированный вход без данных о стоимости расходуемого выхода и считала его вклад равным нулю. В примере разработчиков реальная комиссия в 91 тыс. сатоши отображалась как 1 тыс. Обе ошибки не позволяют создать подпись без ключа и сами по себе не переводят деньги автору вредоносного PSBT: лишняя сумма становится комиссией майнеру. Для потери средств приложение должно принять такие данные, не проверить выходы самостоятельно, а затем отправить действительную транзакцию в сеть. На 28 октября разработчики не сообщали о подтверждённых атаках, потерях или конкретных затронутых кошельках.
Исправления вышли в bitcoinjs-lib 5.2.2, 6.1.9 и 7.0.4. Тем, кто пока не может обновиться, разработчики советуют самостоятельно сверять каждый расходуемый выход и отклонять расхождения до подписи или извлечения транзакции. Масштаб потенциальной цепочки зависимостей заметный: на странице npm 28 октября у пакета было указано около 295 тыс. загрузок за неделю, но число загрузок не показывает, сколько приложений использовали уязвимый код именно для приёма чужих PSBT.
Криптовалюты Кибербезопасность и хакинг bitcoinjs-lib, Bitcoin, PSBT, комиссия майнеру, GitHub Security Advisory