Как сообщает Crypto Pwnage в блоге на Medium, с 12 апреля 2021 года человек, у которого был доступ к адресу администратора PancakeSwap в Binance Smart Chain (0x35f16a46d3cf19010d28578a8b02dfa3cb4095a1), украл из пула лотереи PancakeSwap 59 765 CAKE стоимостью около $1.8 млн.
Злоумышленник использовал уязвимость несколько раз. Вскоре после последней кражи лотерея была приостановлена, и адрес был заблокирован PancakeSwap. Согласно статье, ее автор подождал несколько недель, чтобы дать PancakeSwap достаточно времени для публикации информации о краже и покрытия убытков пострадавших пользователей. Однако децентрализованная биржа так и не раскрыла данные.
По информации Crypto Pwnage, администратор PancakeSwap использовал свою возможность вручную вызывать методы лотерейного контракта. Он одновременно выполнил несколько коллов (покупка, вход в розыгрыш, розыгрыш) и поместил их все в один блок. Это дало ему возможность предсказывать количество джекпотов, поскольку генератор случайных чисел, основанный на хэше предыдущего блока, больше не был случайным.
Для выполнения запросов в правильной последовательности внутри каждого блока, он устанавливал разные понижающиеся цены на газ для каждой транзакции. Злоумышленник также оптимизировал свою стратегию с 21 апреля и уточнял цены на газ, чтобы транзакции стали ближе друг к другу внутри блока.
Можно предположить, что транзакции не связаны, и это всего лишь случайная опережающая сделка. Однако Crypto Pwnage приводит несколько подтверждений, развеивающих это предположение. Например, согласованное изменение цен на газ с 19 по 21 апреля и то, что администратор фактически создал возможность использования уязвимости для одновременного выполнения двух транзакций.
Аналитик также предложил исправление для устранения возможностей использования подобных уязвимостей в будущем, включая изменения критериев транзакции розыгрыша, чтобы номера джекпотов были действительно случайными.
Напомним, что в марте децентрализованная биржа PancakeSwap подверглась фишинговым атакам на серверы DNS.