медленный туман разбирает Liquid: почти 4 тысячи L-BTC — это пустое чеканение, а не peg-in

SlowMist разделила эту транзакцию от 6 сентября: злоумышленник не делал peg-in, а пустым чеканением создал примерно 3998,5 L-BTC, и уже через несколько минут peg-out превратил их в BTC основной сети. Затем он вернул около 3400; у него осталось около 598,5 — сумма уже упоминалась на прошлой неделе: «как именно это было отчеканено».

Причина кроется в кэше проверки Rangeproof в Elements: при сборке кэш-ключа из нескольких полей переменной длины не добавлялся префикс длины. Из-за этого разные комбинации параметров могут «столкнуть» ключ и дать один и тот же результат «проверено». Узел в таком случае пропускает вызов secp256k1_rangeproof_verify и проверку минимальной суммы. Сначала подставляют корректное доказательство, чтобы «прогреть» кэш, а затем отправляют вторую фальшивую выдачу с коллизией ключа. В итоге без обеспечения было создано чеканение.

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