Атака 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, здається, встановлюють суму, коефіцієнт і винагороду Debt користувача на нуль. Однак ці суми встановлюються на нуль після того, як функцію «isSolvent» уже було викликано.

Команда Качконіс підтверджений 16 лютого, що зловмисник скористався «недоліком [у] механізмі перевірки платоспроможності USP», але спочатку команда не надала додаткових деталей. Цей новий звіт від аудитора проливає додаткове світло на те, як зловмиснику вдалося здійснити експлойт.

Команда Platypus оголосила 16 лютого, що стався напад. Він намагався зв’язатися з хакером і повернути кошти в обмін на винагороду за баг. Нападник користувався прошитими кредитами щоб виконати експлойт, який схожий на стратегію, що використовується в Експлойт Defrost Finance 25 грудня 2022 р.