Аналіз атаки повторного входу за допомогою термінових позик на проект Jarvis Network
15 січня 2023 року проект Jarvis_Network зазнав атаки, втративши 663,101 MATIC. Ця атака в основному використовувала Термінові позики та вразливість повторного входу, що призвело до втрати коштів проекту.
Аналізуючи стек викликів транзакцій, було виявлено, що зловмисник здійснив повторний вхід у функцію remove_liquidity. Ця функція відповідає за видалення ліквідності та повернення токенів користувачеві. Оскільки Polygon має схожу структуру з EVM-ланцюгами, під час переказу MATIC було ініційовано повторний вхід у контракт.
Атака повторного входу відбувається на етапі запиту ціни. Атакуючий переносить MATIC до свого контракту під час видалення ліквідності. У процесі зворотного виклику атакуючий спочатку запитує ціну певного токена. Через те, що оновлення змінної self.D у контракті відстає від операції переказу, це призводить до помилки в отриманні початкової ціни.
Процес виконання функції remove_liquidity виглядає наступним чином:
Знищити LP токени користувача
Надіслати користувачу кошти для стекингу
Оновити змінну self.D
self.D змінна використовується для розрахунку ціни і оновлюється під час додавання та видалення ліквідності. Зловмисник використав великі обсяги коштів, що призвело до суттєвого збільшення значення self.D під час додавання ліквідності, тоді як під час видалення не вдалося своєчасно оновити.
Хоча функція remove_liquidity використовує декоратор @nonreentrant('lock'), щоб запобігти повторним входам, зловмисники обійшли це обмеження через міжконтрактні позики.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Jarvis Network зазнав атаки повторного входу через Термінові позики, втратила 663,101 MATIC
Аналіз атаки повторного входу за допомогою термінових позик на проект Jarvis Network
15 січня 2023 року проект Jarvis_Network зазнав атаки, втративши 663,101 MATIC. Ця атака в основному використовувала Термінові позики та вразливість повторного входу, що призвело до втрати коштів проекту.
Аналізуючи стек викликів транзакцій, було виявлено, що зловмисник здійснив повторний вхід у функцію remove_liquidity. Ця функція відповідає за видалення ліквідності та повернення токенів користувачеві. Оскільки Polygon має схожу структуру з EVM-ланцюгами, під час переказу MATIC було ініційовано повторний вхід у контракт.
Атака повторного входу відбувається на етапі запиту ціни. Атакуючий переносить MATIC до свого контракту під час видалення ліквідності. У процесі зворотного виклику атакуючий спочатку запитує ціну певного токена. Через те, що оновлення змінної self.D у контракті відстає від операції переказу, це призводить до помилки в отриманні початкової ціни.
! Аналіз інцидентів атаки повторного входу флеш-позики Jarvis Network
Процес виконання функції remove_liquidity виглядає наступним чином:
self.D змінна використовується для розрахунку ціни і оновлюється під час додавання та видалення ліквідності. Зловмисник використав великі обсяги коштів, що призвело до суттєвого збільшення значення self.D під час додавання ліквідності, тоді як під час видалення не вдалося своєчасно оновити.
Хоча функція remove_liquidity використовує декоратор @nonreentrant('lock'), щоб запобігти повторним входам, зловмисники обійшли це обмеження через міжконтрактні позики.
! Аналіз інцидентів атаки повторного входу в флеш-позику Jarvis Network
Цей напад виявив наявність небезпеки в коді проєкту. Щоб уникнути подібних проблем, рекомендується стороні проєкту вжити наступних заходів:
Оптимізація логіки коду та посилення заходів безпеки можуть ефективно підвищити безпеку та стабільність проєкту, запобігаючи повторенню подібних атак.
! Аналіз інцидентів атаки повторного входу флеш-позики Jarvis Network