Case Study: Audyt protokołu DeFi
Protokół pożyczkowy oparty o L2
Zleceniodawca: Anonimowy projekt DeFi (TVL: $45M przed wdrożeniem)
8
podatności
2
krytyczne
14 dni
czas audytu
Znalezione podatności
KRYTYCZNA
Reentrancy w mechanizmie likwidacji
Funkcja likwidacyjna nie spełniała wzorca "checks-effects-interactions", co umożliwiałoby wielokrotne wycofanie środków.
function liquidate(address user) external {
uint256 debt = getDebt(user);
(bool success,) = user.call{value: debt}("");
updateState(user); // ⚠️ aktualizacja stanu PO wywołaniu
}
uint256 debt = getDebt(user);
(bool success,) = user.call{value: debt}("");
updateState(user); // ⚠️ aktualizacja stanu PO wywołaniu
}
KRYTYCZNA
Manipulacja ceną oracle'a
Kontrakt korzystał z pojedynczego źródła cenowego, które mogło być podatne na manipulację przy niskiej płynności.
Efekt końcowy
Po wdrożeniu poprawek protokół został uruchomiony bez żadnych incydentów bezpieczeństwa w ciągu pierwszych 6 miesięcy. Zidentyfikowane podatności krytyczne zostały załatane przed wdrożeniem.