Протокол «кредитования» децентрализованного финансирования, bZx, переживает не лучший свой год. Спустя семь месяцев после того, как платформа подверглась двум серьезным хакерским атакам, в результате которых она потеряла более 954 тысяч долларов. Сегодня bZx снова был взломан, в следствии чего хакерам удалось украсть более 8 миллионов долларов с балансов пользователей.
В ходе взлома хакеры использовали ошибку дублирования, которая позволила им украсть 219,199.66 LINK, 4,502.70 ETH, 1,756,351.27 USDT, 1,412,048.48 USDC, 667,988.62 DAI.
Команда разработчиков BZX сразу же после взлома провела расследование, состоявшейся атаки, результатом которой в своем Twitter поделился один из разработчиков, Антон Буков.
Согласно опубликованному отчету, хакеры использовали лазейку в функции transferFrom (), которая позволила им переводить токены ERC20 от одного протокола к другому.
“Хакеры вызвали эту функцию для создания и передачи iToken себе, что позволило искусственно увеличивать свой баланс.” – написано в отчете.
Злоумышленники вызвали функцию передачи с тем же адресом _from и _to, что и исходная функция.
Затем они сразу же вызвали функцию _internalTransferFrom с тем же набором аргументов, что сделало приведенные ниже строки кода ошибочными.
Это привело к равенству _balancesFrom _balancesTo .
Данный маневр, позволил злоумышленникам «уменьшить баланс _balancesFrom и увеличить баланс _balancesTo».
“Пользователь фактически смог искусственно увеличить свой баланс.”- написано в отчете.
Разработчики bZx сообщили, что исправили ошибочный код после потери 8 миллионов долларов. В отчете об исправлении заявлено, что теперь «перемещение балансов устанавливается после вычета из балансов [_from]», что эффективно предотвращает искусственное завышение баланса.
Ранее в феврале хакеры нанесли две последовательные атаки, украв в общей сложности $1 млн долларов в ETH. В первой атаке, произошедшей 14 февраля, хакеру удалось вывести $350 тыс. Во второй, состоявшейся 18 февраля, злоумышленник украл около $600 тыс. Во второй атаке, состоявшейся 18 февраля, злоумышленник вывел около $600 тыс.