Definicja:
Reentrancy (podatność) to jeden z najstarszych i najgroźniejszych błędów w smart kontraktach. Polega na tym, że kontrakt pozwala na ponowne wywołanie tej samej funkcji, zanim poprzednie wywołanie się zakończy. Atakujący może w ten sposób wielokrotnie wypłacić środki, zanim kontrakt zaktualizuje swój stan.
Znaczenie:
Najgłośniejszym przykładem tego ataku był The DAO hack z 2016 roku, który doprowadził do utraty milionów dolarów i ostatecznie do hard forka Ethereum. Od tamtej pory reentrancy jest podstawowym przypadkiem testowym przy audytach smart kontraktów.
Ochrona:
Aby bronić się przed reentrancy, stosuje się wzorce programistyczne takie jak checks-effects-interactions, czyli najpierw sprawdzanie warunków, potem aktualizacja stanu, a dopiero na końcu wysyłanie środków. Coraz więcej języków i frameworków (np. Solidity z reentrancyGuard) wspiera programistów w unikaniu tego błędu.
Zobacz też: Smart contract, Exploit, Flash loan.


