← pikov.expert · каталог материаловАвторские материалы · Виталий ПиковЛекция по динамическому анализу →
Учебная практика · C++ · фаззинг

Найти. Объяснить. Исправить. Проверить.

Практикумы по динамическому анализу с AFL++, libFuzzer и AddressSanitizer. Материалы для самостоятельной работы и занятий со студентами.

Маршрут работы

Для студентов, начинающих разработчиков C/C++ и специалистов по безопасной разработке. Нужны базовые знания C++, терминала Linux, сборки и работы с файлами.

  1. Подготовьте локальный стенд и запустите AFL++ по первой методичке.
  2. Повторите цикл с libFuzzer: harness, корпус, crash и минимизация.
  3. Разберите первопричину, исправьте проверку границ и подтвердите результат повторным прогоном.

Темп самостоятельный: подготовка → два практикума → отчёт. Продолжительность зависит от подготовки стенда и не измерялась при публикации.

Учебная среда. Работайте только с приложенными примерами в собственной WSL2/Ubuntu или Linux VM. Используйте отдельную рабочую папку и синтетические входные данные. При неожиданном изменении файлов за её пределами остановите работу. Внешние сервисы и рабочие данные не являются целями этих заданий.

В исходных методичках зафиксирована проверка на WSL2, Ubuntu 24.04.4 LTS, Clang 18.1.3, AFL++ 4.09c и g++ 13.3.0. Это сведения из подготовленного комплекта; на странице не заявляется новый прогон всех лабораторных команд.

Методички и примеры

AFL++: от первого запуска до исправления

Подготовка WSL2 и Ubuntu, сборка C++ цели, запуск фаззинга, диагностика ASan и повторная проверка.

libFuzzer: исследование C++ приложения

Harness, корпус, инструментированная сборка, воспроизведение и минимизация crash, исправление и регрессия.

Разбор ошибки и её исправления

Почему проверки размера входа недостаточно, как возникает переполнение и что меняет проверка границ.

Общий архив для практикумов

Исходники C++, seed-данные, образцы результатов и все три методички. Распакуйте архив в своей учебной среде; программы собираются из исходников по шагам методичек.

Что должно остаться после практикума

Критерий завершения: ошибка воспроизводится до исправления, причина объяснена, старый вход больше не вызывает прежний сбой после исправления; ограничения и параметры прогона явно записаны. Отсутствие находок за ограниченное время не доказывает отсутствие ошибок.

Учебный цикл соотнесён с пунктами 8.3.11–8.3.23 первой редакции проекта. Подробные задания и контрольные вопросы находятся в методичках.

Текст проекта и конспект лекции

Проект национального стандарта — полный текст

ГОСТ Р «Защита информации. Разработка безопасного программного обеспечения. Технологии динамического анализа. Общие требования». Первая редакция, использованная в этом разборе. Не подлежит применению до утверждения.

Нормативный первоисточник и пояснительная записка; авторский конспект лекции скачивается отдельно.