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

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

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

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

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

Категории

Все категории
Loading categories
tmux-fuzzing — Улучшенный фаззинг для tmux с использованием OSS-Fuzz. Включает пользовательские обвязки `cmd-fuzzer` и `argument-fuzzer` для улучшенного покрытия кода и PoC для `CVE-2020-27347`. | Kitploit
Инструменты/GitHubGitHub/lucadibello/tmux-fuzzing
Анализ уязвимостейАнализ КодаФаззингАнализ Бинарных ФайловОбучение и ОбразованиеЛаборатории и Практика
GitHublucadibello/tmux-fuzzing

tmux-fuzzing

Улучшенный фаззинг для tmux с использованием OSS-Fuzz. Включает пользовательские обвязки `cmd-fuzzer` и `argument-fuzzer` для улучшенного покрытия кода и PoC для `CVE-2020-27347`.

Репозиторий
1121 год назадЕщё не проверено

Популярное

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

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

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

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

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

Лаборатория фаззинга: Улучшение фаззинга для tmux

Безопасность программного обеспечения @ EPFL, весна 2025

Абстракт

В этой лабораторной работе мы улучшили усилия по фаззингу для терминального мультиплексора tmux в рамках инфраструктуры OSS-Fuzz от Google. Сначала мы установили базовый уровень, оценив покрытие строк существующего харнесса input-fuzzer, как с предоставленным начальным корпусом, так и без него, отметив сопоставимое начальное покрытие. Затем мы выявили две значительные области кода в tmux, плохо покрываемые базовым фаззером. Для устранения этих пробелов в покрытии мы разработали и оценили два новых целевых харнесса фаззинга: cmd-fuzzer и argument-fuzzer, продемонстрировав их способность улучшить покрытие в этих ранее недостаточно тестируемых областях. Поскольку эти улучшения фаззинга не выявили новых критических уязвимостей в рамках временных рамок проекта, наш анализ сбоев сосредоточился на известной исторической уязвимости. Мы разработали доказательство концепции (PoC) для CVE-2020-27347 (стековое переполнение буфера), проанализировали её первопричину, обсудили применённое исправление и оценили её последствия для безопасности.

Обзор проекта и цели

Этот проект был направлен на применение и улучшение методов фаззинга для открытого терминального мультиплексора tmux с использованием фреймворка OSS-Fuzz. Проект включал несколько ключевых этапов:

  1. Базовая оценка (Часть 1):

    • Понять и оценить существующий харнесс input-fuzzer для tmux.
    • Сравнить его производительность по покрытию кода при запуске с корпусом по умолчанию и с пустым корпусом.
  2. Анализ пробелов в покрытии (Часть 2):

    • Проанализировать отчёты о покрытии из Части 1, чтобы выявить значительные области кода в tmux, недостаточно покрываемые input-fuzzer.
    • Сосредоточиться на разборе аргументов (arguments.c), логике разбора и выполнения команд (cmd-parse.c, модули cmd-*.c) как на ключевых областях для улучшения.
  3. Улучшение фаззера (Часть 3):

    • Разработать два новых целевых харнесса фаззинга:
      • argument-fuzzer: специально предназначен для тестирования логики разбора аргументов командной строки в arguments.c.
      • cmd-fuzzer: предназначен для тестирования путей разбора и выполнения команд, нацелен на cmd-parse.c и различные модули cmd-*.c.
    • Оценить эффективность этих новых харнессов, измерив достигнутое покрытие кода и сравнив его с базовым уровнем.
  4. Анализ сбоев (Часть 4):

    • Поскольку в рамках временных рамок проекта улучшенными фаззерами не было обнаружено новых критических уязвимостей, для углублённого анализа была выбрана известная ранее существовавшая уязвимость в tmux (CVE-2020-27347).
    • Это включало разработку доказательства концепции (PoC) для воспроизведения сбоя, анализ его первопричины, понимание применённого исправления и оценку его последствий для безопасности.

Структура репозитория

Финальная версия организована следующим образом (внутри каталога submission/):

submission/
├── README.md                   # Этот файл
├── part_1/                     # Файлы для Части 1: Базовая оценка
│   ├── oss-fuzz.diff           # Diff для удаления корпуса семян для input-fuzzer
│   ├── project.diff            # (Вероятно, пустой или незначительный для Части 1)
│   ├── remove_seed_corpus.patch # Фактический файл патча, который использовался
│   ├── report/                 # HTML-отчёты о покрытии для input-fuzzer
│   │   ├── w_corpus/
│   │   └── wo_corpus/
│   ├── run.w_corpus.sh         # Скрипт для запуска input-fuzzer с корпусом
│   └── run.wo_corpus.sh        # Скрипт для запуска input-fuzzer без корпуса
├── part_3/                     # Файлы для Части 3: Улучшения фаззера
│   ├── coverage_noimprove/     # Базовое покрытие (например, от input-fuzzer без корпуса)
│   │   └── ...
│   ├── improve1/               # Улучшение 1: argument-fuzzer
│   │   ├── coverage_improve1/  # Отчёт о покрытии для argument-fuzzer
│   │   ├── oss-fuzz.diff       # Изменения конфигурации OSS-Fuzz для argument-fuzzer
│   │   ├── project.diff        # Изменения Tmux для argument-fuzzer (например, новый .cc, Makefile.am)
│   │   └── run.improve1.sh     # Скрипт для запуска argument-fuzzer
│   └── improve2/               # Улучшение 2: cmd-fuzzer
│       ├── coverage_improve2/  # Отчёт о покрытии для cmd-fuzzer
│       ├── oss-fuzz.diff       # Изменения конфигурации OSS-Fuzz для cmd-fuzzer
│       ├── project.diff        # Изменения Tmux для cmd-fuzzer
│       └── run.improve2.sh     # Скрипт для запуска cmd-fuzzer
├── part_4/                     # Файлы для Части 4: Анализ сбоев (CVE-2020-27347)
│   ├── environment/            # Docker-окружение для PoC
│   │   ├── Dockerfile
│   │   ├── run_tmux_cve_test.sh # Основная логика теста PoC
│   │   ├── test_fixed.sh
│   │   └── test_vulnerable.sh
│   └── run.poc.sh              # Скрипт для сборки Docker-образа и запуска тестов PoC
└── report.pdf                  # Полный отчёт по проекту

(Примечание: Каталог scripts/, содержащий _run_fuzz_core.sh, является вспомогательным и будет частью корня, если этот README находится в истинном корне проекта рядом с submission/)

Настройка и использование

Все кампании фаззинга и воспроизведение PoC CVE предназначены для запуска в Docker-окружениях, управляемых shell-скриптами.

Настройка и использование

Все кампании фаззинга и воспроизведение PoC CVE предназначены для запуска в Docker-окружениях, управляемых shell-скриптами.

Предварительные требования:

  • Docker установлен и запущен в Unix-подобной системе.
  • Shell bash и клиент git.
  • Настроены SSH-ключи для [email protected], если скриптам нужно клонировать oss-fuzz (они пытаются клонировать, если oss-fuzz/ не найден в корне проекта). В качестве альтернативы вы можете предварительно клонировать https://github.com/google/oss-fuzz.git в корень проекта.

Общая архитектура скриптов: Проект использует централизованный основной скрипт scripts/_run_fuzz_core.sh (не включён в каталог submission/, но является частью общей структуры проекта, которую предполагает этот README). Индивидуальные скрипты запуска, расположенные в submission/part_1/, submission/part_3/improve1/, submission/part_3/improve2/ и submission/part_4/, отвечают за:

  1. Настройку конкретной тестовой среды путём применения специфичных для запуска патчей oss-fuzz.diff к чистой копии репозитория oss-fuzz (ожидается, что он находится по пути ../../oss-fuzz относительно большинства скриптов запуска).
  2. Экспорт переменных конфигурации (таких как PROJECT, HARNESS, LABEL, пути к специфичным для проекта патчам и выходным каталогам).
  3. Вызов скрипта _run_fuzz_core.sh, который затем обрабатывает:
    • Применение необязательного патча на уровне проекта (например, для добавления новых исходных файлов фаззеров в tmux).
    • Сборку Docker-образа OSS-Fuzz (если установлен флаг).
    • Сборку указанного фаззера(ов) с выбранным санитайзером.
    • Запуск фаззера на заданное время (обычно 4 часа).
    • Генерацию и экспорт корпуса и HTML-отчётов о покрытии в указанные места в структуре каталога submission/.

Запуск скриптов: Обычно рекомендуется запускать скрипты из корневого каталога проекта, чтобы обеспечить правильное разрешение относительных путей для oss-fuzz/ и выходных каталогов.

1. Часть 1: Базовая оценка (input-fuzzer) Эти скрипты оценивают существующий input-fuzzer для tmux.

# Из корневого каталога проекта:
./submission/part_1/run.w_corpus.sh  # Запуск input-fuzzer с корпусом по умолчанию
./submission/part_1/run.wo_corpus.sh # Запуск input-fuzzer без корпуса семян
Скачать инструмент