Ceny aktywów są tymczasowo opóźnioneNiektóre aktywa przestały otrzymywać aktualne dane cenowe. Aktualizacje zostaną wznowione automatycznie po przywróceniu połączenia danych.
Bitculator

Bitculator na Androida

Kapitalizacja rynkowa:

$1,995,421,489,076

Wolumen 24h:

$196,800,200,171

cze 23 Likwidacje:

$0

24H Długi/Krótki:

Wkrótce

Bitculator · Dowiedz się

Reentrancy Attack

Co oznacza Reentrancy Attack w terminologii kryptowalutowej?

# 350·Zaktualizowany cze 2026·2 min czytania

Atak Reentrancy Attack to luka bezpieczeństwa w inteligentnych kontraktach, w której atakujący wykorzystuje podatność kontraktu, wywołując go wielokrotnie, zanim początkowe wykonanie się zakończy.

Czym jest Reentrancy Attack?

Reentrancy Attack to sytuacja, gdy kontrakt przekazuje kontrolę do innego kontraktu podczas wywołania, a zewnętrzny kod wraca do pierwszego kontraktu zanim ten zdąży zaktualizować swoje zapisy. Taka sztuczka czasowa pozwala atakującemu wielokrotnie powtarzać wrażliwe operacje, na przykład wypłaty. Wyobraź sobie proszenie o zwrot pieniędzy, a potem powrót do okienka zanim kasjer zamknie kasę.


Mit

„Tylko stary kod może zostać trafiony przez Reentrancy Attack.” To nieprawda. Każdy kontrakt, który wykonuje wywołanie zewnętrzne przed zabezpieczeniem własnego stanu, może być podatny jeśli logika jest niedbała.


Jak działa Reentrancy Attack

Szybka historia. Typowy smart kontrakt ma funkcję withdraw, która wysyła środki do wywołującego. Jeśli najpierw wysyła środki, a potem czyści saldo, atakujący może wstrzyknąć callback i poprosić o więcej zanim saldo zostanie ustawione na zero.

  1. Początek: Atakujący deponuje trochę środków, by wyglądać wiarygodnie.
  2. Wywołanie: Atakujący uruchamia withdraw w docelowym kontrakcie.
  3. Fallback: Kontrakt docelowy wysyła środki, co uruchamia funkcję fallback atakującego.
  4. Powtórka: Ten fallback wywołuje withdraw ponownie zanim saldo zostanie zaktualizowane.
  5. Opróżnienie: Pętla trwa aż kontrakt skończy środki lub gaz. Tak właśnie działa sztuczka.

Jeden drobny błąd w kolejności, duży problem.


Dlaczego Reentrancy Attack ma znaczenie

Powinno cię to obchodzić, ponieważ błędy czasowe przesuwają prawdziwe środki, bardzo szybko. Dodatkowo to klasyczny exploit, który każdy twórca i ciekawy użytkownik powinien rozpoznać na pierwszy rzut oka.

  • Korzyść: Znajomość wzorca pomaga wykrywać ryzykowny kod i chronić środki.
  • Perspektywa: Wykorzystuje publiczną przejrzystość, bo wszystko na blockchain jest widoczne i da się to wywołać.
  • Zastosowanie: Zobaczysz to w DeFi, mostach, skarbcach, a nawet w wypłatach dla DAO.

Wskazówka

Stosuj zasadę checks then effects then interactions. Najpierw zaktualizuj salda, potem wykonuj wywołania zewnętrzne. Dodaj prosty mechanizm ochronny przeciw Reentrancy Attack dla dodatkowego bezpieczeństwa.


Główne cechy Reentrancy Attack

To, co powoduje ten problem:

  • Rekurencja: Zewnętrzny kod wywołuje ponownie ten sam kontrakt zanim ten się zakończy.
  • Kolejność: Błąd pojawia się, gdy wysyłanie środków lub wywołania zewnętrzne następują przed aktualizacją stanu.
  • Międzykontraktowo: Może odbijać się po wielu kontraktach, nie tylko jednej funkcji.
  • Aktywa: Działa z ETH, tokenami, a nawet zapisami księgowymi jeśli są źle zaimplementowane.

Warianty

Różne odmiany, ten sam problem dla niedbale napisanego kodu:

  • Pojedynczy: Ponowne wejście do tej samej funkcji wielokrotnie.
  • Międzyfunkcyjny: Ponowne wejście przez inną funkcję w tym samym kontrakcie.
  • Wielokrotny: Ponowne wejście obejmujące dwa lub więcej kontraktów w pętli.
  • Tylko do odczytu: Manipulowanie widokami lub oraklami cen, by oszukać późniejsze zapisy.

Przypomnienie

Naprawa Reentrancy Attack to nie tylko jedna funkcja. Przejrzyj każde wywołanie zewnętrzne, dodaj testy dla nietypowych łańcuchów wywołań i zaplanuj regularne audyty.


Przykład

Wykorzystanie The DAO z 2016 roku użyło pętli reentrancy przy withdraw zanim salda zostały wyczyszczone, co opróżniło ogromny skarbiec w ciągu kilku minut.


Ciekawostka

Hasło społeczności checks then effects then interactions pochodzi z wczesnych przewodników dotyczących bezpieczeństwa i przyjęło się, bo jest krótkie, łatwe do zapamiętania i skuteczne.


Podsumowanie

Krótko, do zapamiętania: jeśli zewnętrzny kod może wywołać cię zanim skończysz własne rozliczenia, zakładaj, że tak zrobi i możesz mu oddać darmowe środki. To jest Reentrancy Attack.

Czy o czymś zapomnieliśmy??

Twój wkład pomaga nam utrzymywać poprawność. Skontaktuj się z nami, jeśli coś jest niepoprawne lub brakuje.

Kontakt