Атака Platypus использовала неправильный порядок кода, утверждает аудитор

Отказ от ответственности: статья была обновлена, чтобы отразить, что Omniscia не проверяла версию контракта MasterPlatypusV4. Вместо этого компания провела аудит версии контракта MasterPlatypusV1 с 21 ноября по 5 декабря 2021 года.

Атака флеш-кредита Platypus на 8 миллионов долларов стала возможной из-за кода, который был в неправильном порядке. согласно к отчету о вскрытии от аудитора Platypus Omniscia. Аудиторская компания утверждает, что в проверяемой версии проблемного кода не было.

Согласно отчету, контракт Platypus MasterPlatypusV4 «содержал фатальное заблуждение в своем механизме EmergencyWithdraw», что заставляло его выполнять «проверку платежеспособности перед обновлением токенов LP, связанных с позицией ставки».

В отчете подчеркивалось, что в коде функции EmergencyWithdraw были все необходимые элементы для предотвращения атаки, но эти элементы просто были написаны в неправильном порядке, как объяснила Omniscia:

«Проблему можно было бы предотвратить, переупорядочив операторы MasterPlatypusV4::emergencyWithdraw и выполнив проверку платежеспособности после того, как ввод суммы пользователя был установлен на 0, что предотвратило бы атаку».

Omniscia провела аудит версии контракта MasterPlatypusV1 с 21 ноября по 5 декабря 2021 года. Однако эта версия «не содержала точек интеграции с внешней системой platypusTreasure» и, следовательно, не содержала неправильно упорядоченных строк кода.

Важно отметить, что на момент проверки Omniscia не существовало взломанного кода. С точки зрения Omniscia подразумевается, что разработчики должны были развернуть новую версию контракта в какой-то момент после проведения аудита.

Связанный: Raydium раскрывает подробности взлома и предлагает компенсацию пострадавшим

Аудитор утверждает, что реализация контракта по адресу Avalanche C-Chain 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 была Эксплуатируемый. Строки 582–584 этого контракта, по-видимому, вызывают функцию под названием «isSolvent» в контракте PlatypusTreasure, а строки 599–601, по-видимому, устанавливают нулевое значение суммы, коэффициента и вознаграждения пользователя. Однако эти суммы обнуляются после того, как функция «isSolvent» уже была вызвана.

Команда Утконос подтвердил 16 февраля злоумышленник воспользовался «недостатком в механизме проверки платежеспособности USP», но команда изначально не предоставила дополнительных подробностей. Этот новый отчет аудитора проливает дополнительный свет на то, как злоумышленнику удалось осуществить эксплойт.

Команда Platypus объявила 16 февраля, что произошло нападение. Он попытался связаться с хакером и вернуть средства в обмен на вознаграждение за ошибку. Злоумышленник использованные кредиты для выполнения эксплойта, который аналогичен стратегии, используемой в Эксплойт размораживания финансов 25 декабря 2022 г.