Резюме
Резюме
Методологии поиска уязвимости часто используют принципы аудита безопасности систем. Изучение исходного текста программ начинается с выявления потенциально небезопасных функций, например strcpy и sprintf. Другой способ заключается в тщательной построчной экспертизе исходного текста программы в соответствии с логикой ее работы. Анализ различий – еще один способ поиска уязвимостей, при котором широко применяется утилита diff. Утилита diff, сравнивая две версии программы, позволяет найти внесенные в программу исправления. При исследовании выполнимого кода программы применяются различные средства: программы трассировки, отладчики, анализаторы, а также аудит документации.
Аудит исходного текста программы предполагает поиск потенциально опасных функций и применение методологии построчного аудита. В этой главе были рассмотрены примеры, демонстрирующие переполнение буфера при использовании функций strcpy, sprintf, strcat и gets. Были рассмотрены такие ошибки проверки входных данных, как уязвимость форматирующей строки функции printf и функции open в программе, написанной на языке Perl. Также был рассмотрен пример конкуренции программ за ресурсы и сопутствующая ей ошибка условия гонок на примере функции mktemp.
Реинжиниринг – один из наиболее часто используемых методов поиска уязвимостей в программе, исходный текст которой недоступен. Этот тип исследования проводится по методике «сверху вниз». Средства аудита в Windows можно найти на сайте sysinternals.com, а список Rosetta Stone поможет выбрать средства трассировки на различных платформах. В этой главе был рассмотрен пример трассировки команды cat сначала в среде Red Hat Linux и в Solaris 7.
Дизассемблер и отладчики позволяют исследовать выполнимый код. Дизассемблер (также известный как декомпилятор) – это программа, которая преобразует двоичный код в исходный текст программы на языке высокого уровня, но чаще всего на языке ассемблера. Отладчик – программа, которая может управлять выполнением другой программы. В этой главе был приведен пример дизассемблирования программы на платформе Windows с использованием отладчика IDA Pro, а также пример сессии отладки под управлением отладчика GDB в Linux. Также были обсуждены возможности программ objdump и nm. Программа objdump позволяет управлять объектными файлами программ, а nm — отображает содержащуюся в них символьную информацию.
«Черный ящик» – концептуальный компонент, чьи внутренние функции скрыты от пользователя. Тестирование «черного ящика» похоже на бинарный аудит. На практике к методам тестирования «черного ящика» прибегают при реинжиниринге интегральных схем. Определить предназначение чипа можно, изучив выходные сигналы чипа, а если это не поможет – вскрыв его корпус. «Черные ящики» могут различаться по степени своей прозрачности для исследователя, в зависимости от его знаний об устройстве анализируемой системы.
Данный текст является ознакомительным фрагментом.