За даними моніторингу ризиків безпеки Beosin EagleEye, моніторингу платформи раннього попередження та блокування аудиторської компанії безпеки блокчейну Beosin**, контракт LibertiVault на ланцюжок Polygon був атакований і втратив близько 123 ETH і 56 234 USDT на суму близько 290 000 доларів США. , а ланцюжок Ethereum 35ETH і 96223USDT коштує близько 160 000 доларів США, що на загальну суму перевищує 450 000 доларів США. **Технічний персонал проаналізував і виявив, що ця атака була спричинена вразливістю повторного входу в контракті LibertiVault.
Зловмисник позичив 5 мільйонів доларів США, використовуючи флеш-позику, і викликав функцію депозиту контракту LibertiVault для застави. Логіка застави використовуватиме частину закладених токенів для обміну, а потім обчислить кількість викарбуваних монет. монети карбуються на основі контракту та депозиту. Розрахунок базується на співвідношенні кількості депонованих токенів до балансу до депонування контракту.
Операція обміну свопом викличе контракт хакера. У цей час хакер повторно вводить депозит виклику вперше, а потім повторно вводить цю функцію вдруге, вносячи 2,5 мільйона доларів США в контракт.
Після другого повторного входу контракт карбуватиме монети для хакера відповідно до співвідношення 2,5 мільйона доларів США до балансу попереднього контракту. Після виконання першого повторного депозиту хакер вносить ще 2,5 мільйонів доларів США.
У цей час операція обміну у функції зовнішнього депозиту завершена, і контракт буде карбувати монети відповідно до співвідношення 2,5 мільйона USDT до контрактного балансу USDT.
Проблема полягає в четвертому пункті. Логічно кажучи, другий розрахунок сальдо за контрактом повинен бути попереднім сальдо плюс сальдо 2,5 мільйона, введене вперше як параметр для цього розрахунку, але ось У формі reentry, баланс контракту був отриманий на самому початку, тому параметри не змінилися, і вихідний баланс все ще використовується для розрахунку, що призводить до карбування великої кількості токенів ваучерів для хакерів.
Нарешті хакер видалив токени та повернув флеш-позику з прибутком.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Аналіз атаки на контракт LibertiVault на ланцюг багатокутників
За даними моніторингу ризиків безпеки Beosin EagleEye, моніторингу платформи раннього попередження та блокування аудиторської компанії безпеки блокчейну Beosin**, контракт LibertiVault на ланцюжок Polygon був атакований і втратив близько 123 ETH і 56 234 USDT на суму близько 290 000 доларів США. , а ланцюжок Ethereum 35ETH і 96223USDT коштує близько 160 000 доларів США, що на загальну суму перевищує 450 000 доларів США. **Технічний персонал проаналізував і виявив, що ця атака була спричинена вразливістю повторного входу в контракті LibertiVault.
Зловмисник позичив 5 мільйонів доларів США, використовуючи флеш-позику, і викликав функцію депозиту контракту LibertiVault для застави. Логіка застави використовуватиме частину закладених токенів для обміну, а потім обчислить кількість викарбуваних монет. монети карбуються на основі контракту та депозиту. Розрахунок базується на співвідношенні кількості депонованих токенів до балансу до депонування контракту.
Операція обміну свопом викличе контракт хакера. У цей час хакер повторно вводить депозит виклику вперше, а потім повторно вводить цю функцію вдруге, вносячи 2,5 мільйона доларів США в контракт.
Після другого повторного входу контракт карбуватиме монети для хакера відповідно до співвідношення 2,5 мільйона доларів США до балансу попереднього контракту. Після виконання першого повторного депозиту хакер вносить ще 2,5 мільйонів доларів США.
У цей час операція обміну у функції зовнішнього депозиту завершена, і контракт буде карбувати монети відповідно до співвідношення 2,5 мільйона USDT до контрактного балансу USDT.
Проблема полягає в четвертому пункті. Логічно кажучи, другий розрахунок сальдо за контрактом повинен бути попереднім сальдо плюс сальдо 2,5 мільйона, введене вперше як параметр для цього розрахунку, але ось У формі reentry, баланс контракту був отриманий на самому початку, тому параметри не змінилися, і вихідний баланс все ще використовується для розрахунку, що призводить до карбування великої кількості токенів ваучерів для хакерів.
Нарешті хакер видалив токени та повернув флеш-позику з прибутком.