Атаката на Platypus използва неправилно подреждане на код, твърди одитор

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

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

Според доклада, договорът Platypus MasterPlatypusV4 „съдържа фатално погрешно схващане в своя механизъм за аварийно изтегляне“, което го накара да извърши „проверката на платежоспособността си, преди да актуализира 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" вече е била извикана.

Екипът на Platypus потвърди на 16 февруари, че нападателят е използвал „пропуск в механизма за проверка на платежоспособността на USP“, но екипът първоначално не предостави повече подробности. Този нов доклад от одитора хвърля допълнителна светлина върху това как нападателят може да е успял да извърши експлойта.

Екипът на Platypus обяви на 16 февруари, че е настъпила атака. Той се е опитал да се свърже с хакера и да получи средствата върнати в замяна на награда за грешки. Нападателят използвани мигащи заеми за извършване на експлойта, който е подобен на стратегията, използвана в Експлойт на Defrost Finance на 25 декември 2022 г.