Токены из воздуха: как 320 миллионов долларов в Bitcoin утекли из сайдчейна Liquid

Liquid Btc уязвимость сеть токены блокчейн cryptoslate.com

Эксперты нашли причину сбоя в сети Liquid на $320 млн: уязвимость кэша транзакций. Узнайте, как необеспеченные токены обменивались на BTC, и почему одни узлы принимали, а другие отклоняли транзакции. Развертывание кода оказалось в центре скандала.

Исследователи, изучающие инцидент с сетью Liquid на сумму около 320 миллионов долларов, выявили предполагаемый сбой в кэше проверки транзакций программного обеспечения, предложив более конкретное объяснение того, как необеспеченные токены могли быть обменены на реальные биткойны.

Также возникают вопросы относительно развертывания. Пользователь Mononaut заявил, что эксплуатируемый баг появился в основной ветке разработки Elements на предыдущей неделе, но так и не был включен в официальный релиз. По его словам, функционеры федерации Liquid, по-видимому, использовали этот код, в то время как другие узлы отклоняли недействительные транзакции.

Это объяснение развертывания остается неподтвержденным Blockstream в доступных заявлениях. Если оно подтвердится, то именно процесс выпуска программного обеспечения окажется в центре инцидента, в ходе которого действительные учетные данные для подписи разрешили выпуск биткойнов в обмен на предположительно созданные из-за бага L-BTC.

Liquid — это сайдчейн биткойна, токены L-BTC которого должны быть обеспечены один к одному BTC, хранящимися у его федерации. Как ранее сообщал CryptoSlate, SideSwap заявил, что 6 сентября клиент отправил через его сервис вывода 4000 L-BTC, что привело к выпуску примерно 3996 BTC.

Liquid заявил, что ни ключ авторизации вывода SideSwap, ни другие ключи федерации не были скомпрометированы.

Появляющиеся технические объяснения сосредоточены на том, как токены попали в процесс вывода средств.

Пользователь Calle описал уязвимость, связанную с доказательствами диапазона (range proofs), которые позволяют узлам проверять, что скрытые суммы транзакций находятся в допустимом диапазоне, не раскрывая сами суммы.

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

Доказательства диапазона предназначены для предотвращения такого исхода. Поскольку их проверка требует значительных вычислительных ресурсов, узлы кэшируют результаты успешных проверок для повторного использования.

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

Шарль Гийемет подтвердил это объяснение, описав сфабрикованное столкновение ключей кэша, которое позволило недействительной конфиденциальной транзакции обойти проверку диапазона. Calle предупредил, что его объяснение упрощает механизм и может содержать ошибки.

Отдельная реконструкция транзакции от Stu выявила начальные транзакции, за которыми последовала предположительно недействительная транзакция в блоке Liquid 4 050 336. Stu заявил, что транзакция создала примерно 3996,0183 L-BTC перед последующим выводом средств через SideSwap.

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

Он сказал, что функционеры федерации приняли транзакции с использованием уязвимости, одобрили вывод средств и продолжили создание блоков. Другие узлы, включая те, что обеспечивают работу эксплорера Liquid mempool, отклонили затронутый блок. Это объясняет, почему эксплорер, следующий за отклоняющими узлами, мог исключить транзакции, видимые в других местах.

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

Тем временем, лица, контролирующие выведенные биткойны, назвали себя “белыми шляпами” (whitehats) и поставили условием возврата большей части средств исправление бага во всех затронутых узлах. Имеющаяся информация не подтверждает завершение возврата средств или развертывание исправления.

Восстановление биткойнов устранит дефицит резервов. Объяснение того, почему узлы федерации приняли транзакции, и демонстрация того, что исправленное программное обеспечение отклоняет их, устранят сбой, который позволил этим резервам уйти.

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

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