Небольшая книга по фаззингу издательства Syngress от группы авторов, среди которых фигурирует всем известный Чарли Миллер (@0xcharlie). Книгу можно рассматривать как введение в фаззинг. Содержание книги раскрывает различные аспекты фаззинга в 10 соответствующих главах. Правда объем книги (200 страниц) не позволяет раскрыть темы достаточно подробно.
Глава 1 (Introduction to vulnerability research) достаточно традиционна для подобного рода книг и объясняет основные классы программных ошибок и вкратце описывает подходы к поиску ошибок и уязвимостей. Большинство может пропустить 10 страниц, которые занимает первая глава, так как понятия buffer overflow, black/white box testing встречаются в каждой второй книжке по ИБ.
Глава 2 (Fuzzing - What's That?) будет интересна тем, кто до этого не сталкивался с понятием фаззинга. Приведен небольшой экскурс в историю, приводится ретроспектива развития идей, основные области применения фаззинга как инструмента. В главе упоминаются ведущие вендоры коммерческих решений в области фаззинга и их продукты.
Глава 3 (Building a Fuzzing Environment) должна раскрывать по идее вопросы построения среды для фаззинга. На деле - содержательная часть главы приводит перечень программных средств, используемых для процессов отладки, мониторинга за поведением процессов для Windows, Linux и OSX. Большей части разработчиков знакомы такие вещи как Windbg, OllyDBG, IDAPro, gdb, valgrind. Как-то совсем бедно на этом фоне выглядит упоминание XCode для OSX.
Четвертая глава (Open Source Fuzzing Tools) и пятая (Commercial Fuzzing Solutions) представляют собой перечисление бесплатных и коммерческих решений с кратким описанием, указанием области применения. Стоит отметить, что существенная часть приведенных бесплатных фаззеров не поддерживается и не развивается достаточно продолжительное время. Описание коммерческих решений более красочное за счет иллюстраций графических интерфейсов.
Шестая глава (Build Your Own Fuzzer) содержит описание основных составных частей средства фаззинга, вводит некоторое понятие базисного словаря фаззинга, вскользь упоминает о простом автомате и применимости этой модели к процессу фаззинга. В конце главы читателю предлагается создать собственный простой фаззер при помощи языка Perl.
Содержание седьмой и восьмой главы (Integration of Fuzzing in the Development Cycle и Standtartization and Certification) в большей степени направлено на людей занимающихся в софтверных компаниях вопросами QA и тестирования. В данных главах фаззинг рассматривается как элемент непрерывного и комплексного тестирования программных продуктов. Делается акцент на то, какие именно программные ошибки могут быть обнаружены средствами фаззинга. Шестая глава предлагает вариант плана по организации фаззинга, который отвечает на основные вопросы: кто, что, как, сколько будет фаззить. Приводится список наиболее часто встречаемых проблем при организации системного процесса фаззинга и пути их решения.
Глава 9 (What is a File?) рассматривает файлы как входную точку для фаззинга приложений. Приводится ряд популярных текстовых и бинарных форматов, подходы к анализу форматов файлов и их содержимого, список популярных hex-редакторов. В конце главы приводится ряд файловых фаззеров с краткими описаниями.
Глава 10 (Code coverage and fuzzing) на мой взгляд во всей книге самая содержательная, посвящена вопросам повышения эффективности методик фаззинга посредством анализа степени покрытия логики тестируемого приложения. Глава предлагает методы инструментализации программных продуктов как с доступным исходным кодом, так и закрытых решений. На достаточно простом примере показано, каким образом можно увеличить процент покрытия тестами целевого приложения.
Книга достаточно простая, без особых технических подробностей и вряд ли будет интересна техническим специалистам, занимающимися поиском уязвимостей. Содержание книги может быть передано в 2-3 статьях. Можно рекомендовать данную книгу техническим менеджерам, ответственным за сегмент QA и тестирование продуктов, желающим повысить безопасность и защищенность выпускаемого программного обеспечения. Приведенные списки утилит, средств и готовых программных сред для фаззинга могут помочь сориентироваться при выборе решения и организации плана по тестированию на уязвимости.
Вызывает вопрос и высокая стоимость книги (65$ на amazon), что в полтора раза больше чем более интересная и содержательная (даже по страницам 2,5 раза толще) Fuzzing: Brute Force Vulnerability Discovery. К тому же, вот уже как 2 года продается ее русскоязычный вариант.

Комментариев нет:
Отправить комментарий