Исследователь под ником 0xb10c обнаружил, что более миллиона специальных timelocked-транзакций биткоина, совершенных в период с сентября 2019 года по март 2020 года, имеют ошибку.
Timelocked-транзакции осуществляются с привязкой ко времени и не позволяют получателю сразу получить доступ к монетам. Вместо этого нужно подождать, пока сеть не добавит определенное количество блоков. Поскольку для записи каждого нового блока требуется около 10 минут, то можно запрограммировать время получения транзакции, установив для этого соответствующую высоту блока.
Однако 0xb10c обнаружил в таких транзакциях уязвимость, при которой майнеры могли красть комиссии у других майнеров. Ошибка затрагивает 10% timelocked-транзакций или 2% от всех транзакций с биткоинами.
В случае обнаруженных транзакций, время было установлено на текущий блок. Злоумышленники пытаются перехватить и подменить блок, который кто-то только что добыл. В блок злоумышленника включаются те же транзакции плюс другие, которые все еще ожидают рассмотрения. В результате доход от транзакции перехватывается злоумышленником.
Исследователь предвидит, что нечестные майнеры будут строить на этом бизнес.
«В настоящее время невыполнение временной блокировки не имеет последствий для большинства транзакций. Но через несколько лет, когда вознаграждение за блок будет состоять в основном из комиссионных за транзакции, это может сделать перехват комиссионных более выгодным делом», — сказал 0xb10c.
Из-за этой ошибки пользователи не теряют деньги и она не влияет на временные блокировки, заданные на будущее. Но для пользователей все же есть последствия перехвата в виде некоторой утечки информации. Неправильно заданный таймлок отличается от всех других таймлоков в сети, поэтому злоумышленники, просматривающие блокчейн, могут легко увидеть, что транзакция происходит из определенного кошелька.
Многие из обнаруженных ошибочных транзакций были совершены в неком крупном кошельке, но исследователь отказался сказать его название. Он лишь сообщил, что уже обратился к компании-поставщику и она ответила, что придумала решение, но для его развертывания может потребоваться время. Однако 0xb10c отмечает, что есть и другие компании, совершающие ту же ошибку.
«Трудно найти все приложения, создающие ошибочные транзакции. Некоторые из них могут быть с закрытым исходным кодом, что делает обнаружение еще сложнее», — сказал 0xb10c.