Nedávný hack @ResupplyFi ukazuje, jak jednoduché dělení celých čísel může vést ke katastrofické manipulaci s trezorem. Exploit za 9,56 milionu dolarů byl proveden během několika hodin od nasazení. Pojďme si tuto kritickou ERC4626 zranitelnost rozebrat ↓
2/ Vektor útoku: ERC4626 manipulace s "prvním darováním": • Vyprázdnit úschovnu při nasazení • Útočník vloží 1 wei • Daruje velké prostředky • Cena akcií se astronomicky nafoukla • Přestávky při výpočtu směnného kurzu protokolu
3/ Zranitelnost v jedné linii: _exchangeRate = 1e36 / IOracle(_exchangeRateInfo.oracle).getPrices(adresa(zajištění)); Celočíselné dělení bez ochrany proti zaokrouhlení → směnný kurz zaokrouhlí na nulu, když je cena orákula příliš velká.
4/ Řetězec exploitů: 1. Vložte 1 wei do prázdného trezoru 2. Darujte a nafoukněte cenu akcií 3. Oracle hlásí nadsazenou cenu 4. Směnný kurz = 0 v důsledku dělení 5. Kontrola LTV: 0 <= maxLTV (vždy platí!) 6. Neomezené půjčování odemčeno
5/ Prevence je jednoduchá: _exchangeRate = 1e36 / cena; require(_exchangeRate 0, "Neplatná sazba"); Také: • Vynucujte minimální vklady • Přidejte kontroly poměru podílu • Sledování likvidity trezoru
6/ Klíčová lekce: ERC4626 vaulty potřebují při nasazení extra ochranu. Problém "prvního vkladatele" není nový, ale ResupplyFi ukazuje, jak se může kaskádovitě vyvinout v kritickou zranitelnost. Přečtěte si celou technickou analýzu na našem blogu:
3,39K