Просто витратив трохи часу, перевіривши атаку на $9 млн @yearnfi Yeth. Хоча більшість людей зазначають, що хакер відкарбував величезну кількість єтів за кілька вей токенів (P1), я вважаю, що це не єдина корінна причина. Чому? Хакер фактично НЕ зняв викарбований йет, лише частину продав у пулі yETH-ETH за 1000 ETH (~3M), що значно менше, ніж фактичний прибуток хакера (P2). На мою думку, є 2 кореневі причини (або вектори атаки): (Застереження: це просто аналіз, заснований на моєму попередньому аналізі. Я можу і іноді роблю помилки!) (1) помилка округлення призвела до карбування майже нескінченного yETH. Це насправді схоже на хак балансувальника. Коефіцієнт масштабування (у yETH називається швидкістю) — це число близько 1e18+x%, а множення на ділення дозволяє віртуальному балансу порушувати інваріанти. Код фактично використовує округлений віртуальний баланс для розрахунку нової загальної кількості yETH і випущеного (new_supply - old_supply) зловмиснику (P3). (2) update_rate функція призвела до значної втрати сховища yETH Насправді нападник двічі кликав «update_rates» на загорнутому OETH, і yETH буквально втрачав ~1000 ETH щоразу (тоді як yETH був спалений зі сховища st-yeth, P4). -> 6 мільйонів втрати. Плюс прибуток від проданого yETH разом йде до ~9 мільйонів. Це могло бути спричинено неправильним обчисленням інваріанта, а не просто похибкою округлення. ---- Я оновлю інформацію в коментарях до цього твіту для будь-яких нових розумінь щодо цієї атаки.
@yearnfi Оновлення (1) мене забанили за те, що я намагався запропонувати свою допомогу в Discord 🤣 @yearnfi
@yearnfi Оновлення: посилання вище не є офіційним PM. Але, на мою думку, вона вже відкриває корінь причини і вказує на вразливий код.
28,61K