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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-23008-Solidity-Assembly-Return-Data-Size-Confusion — Образовательный PoC для путаницы с размером возвращаемых данных в Solidity assembly; включает уязвимый контракт, симуляцию эксплуатации и рекомендации по смягчению для безопасного декодирования ABI. | Kitploit
Инструменты/GitHubGitHub/george0papasotiriou/cve-2026-23008-solidity-assembly-return-data-size-confusion
Анализ уязвимостейАнализ КодаЭксплуатацияОбучение и Образование
GitHubgeorge0papasotiriou/cve-2026-23008-solidity-assembly-return-data-size-confusion

CVE-2026-23008-Solidity-Assembly-Return-Data-Size-Confusion

Образовательный PoC для путаницы с размером возвращаемых данных в Solidity assembly; включает уязвимый контракт, симуляцию эксплуатации и рекомендации по смягчению для безопасного декодирования ABI.

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

Популярное

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

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

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

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

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

CVE-2026-23008 – Путаница с размером возвращаемых данных в ассемблере Solidity

Программный код (Solidity)

root@kitploit:~
// ReturnSizeConfusion.sol
contract Victim {
    function callExternal(address target) external returns (bytes memory) {
        (bool success, bytes memory ret) = target.call(abi.encodeWithSignature("someFunc()"));
        require(success, "call failed");
        // Vulnerability: assumes ret is at least 32 bytes, but could be empty
        uint256 value;
        assembly {
            value := mload(add(ret, 32))
        }
        return ret;
    }
}

CVE-2026-23008 – Путаница с размером возвращаемых данных в ассемблере Solidity

Severity: High

Обзор

Контракт Solidity использует встроенный ассемблер для чтения возвращаемого значения, но не проверяет, что длина возвращаемых данных достаточна. Атакующий может вернуть пустые данные, в результате чего ассемблер прочитает произвольные данные стека, что приведёт к повреждению памяти или обходу защиты.

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

  • Тип: Безопасность памяти / Логическая ошибка
  • Влияние: Кража средств, захват контракта.
  • Корневая причина: Контракт предполагает, что внешний вызов всегда возвращает как минимум 32 байта; пустые или усечённые данные вызывают чтение за пределами границ.

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

Разверните уязвимый контракт и контракт атакующего, который возвращает пустой ответ. В этом случае mload считывает устаревшие данные.

Смягчение

  • Проверяйте длину ret перед доступом через ассемблер.
  • Используйте ABI-декодер (abi.decode) вместо прямого использования ассемблера.
  • Избегайте встроенного ассемблера для разбора данных.

Установка и использование

root@kitploit:~
git clone https://github.com/yourorg/CVE-2026-23008.git
cd CVE-2026-23008
# Use Foundry to test
Скачать инструмент