Reentrancy (Réentrance)
SecuriteEnglish: Reentrancy
Definition
Vulnérabilité permettant à un attaquant d'appeler récursivement une fonction avant que l'exécution initiale ne soit terminée. Cause du hack The DAO (2016, $60M). Protection : Checks-Effects-Interactions pattern, ou modifier `nonReentrant` (OpenZeppelin). Toujours mettre à jour l'état avant les appels externes.
English version
Vulnerability allowing attacker to recursively call function before initial execution completes. Caused The DAO hack (2016, $60M). Protection: Checks-Effects-Interactions pattern, or `nonReentrant` modifier.
Exemple de Code
// ❌ VULNERABLE
function withdraw(uint amount) public {
require(balances[msg.sender] >= amount);
(bool success,) = msg.sender.call{value: amount}(""); // Appel externe AVANT maj état
require(success);
balances[msg.sender] -= amount; // Trop tard !
}
// ✅ SECURE : Checks-Effects-Interactions
function withdraw(uint amount) public {
require(balances[msg.sender] >= amount); // Check
balances[msg.sender] -= amount; // Effect
(bool success,) = msg.sender.call{value: amount}(""); // Interaction
require(success);
}Termes Lies
Pages Liees
Pratique ce concept sur Solingo
Maîtrise Reentrancy (Réentrance) avec des exercices interactifs et un IDE intégré.
Commencer gratuitement