Трассировка двоичного кода
Один из методов определения потенциальных уязвимостей заключается в трассировке выполнения программы. Для трассировки используется различный инструментарий. Для этой цели в системе Solaris применяется специальный пакет программ truss компании Sun. В других операционных системах используются аналогичные программы, например strace для Linux.
Трассировка выполнения программы позволяет наблюдать за ее взаимодействием с операционной системой. Используемые программой переменные окружения могут быть исследованы в соответствии с режимами ее работы. Дополнительно при трассировке программы можно просмотреть используемые программой адреса памяти и получить другую полезную информацию о возможных проблемах в каких-либо частях программы.
Использование трассировки позволяет определить, где и когда проявится уязвимость в исследуемой программе.
Отладчики
Применение отладчиков – еще один способ поиска уязвимостей. Отладчики позволяют выявить ошибки программы во время ее выполнения. На практике применяются различные отладчики. Gnu Debugger (GDB) – один из наиболее известных среди них.
Отладчики могут управлять работой программы во время ее выполнения. С помощью отладчика может быть выполнена как вся программа целиком, так и ее часть. Отладчик может отображать содержимое регистров, память по указанным адресам и другую полезную для поиска уязвимостей информацию.
Аудит документации
Другой способ аудита двоичного кода заключается в анализе принятых соглашений и документов по разработке программ (которые не следует путать с исходным кодом программ). Материалы по разработке программ обычно представляются в виде диаграмм, информационных листов или спецификаций, как, например, RFC (Requests for Comments – запросы на комментарии, серия документов IETF, первые упоминания о которой относятся к 1969 году. Документы этой серии содержат описания протоколов Internet и связанную с ними информацию).
Анализ программ на основе протокола спецификации может привести к различным выводам. Этот тип исследования заключается не только в установлении соответствия анализируемой программы спецификациям проектирования, но и в детальном анализе проблемных ситуаций в ней. Воспользовавшись результатами исследования основополагающих принципов построения протокола, например Telnet или POP3, можно протестировать службу, написанную на основе выбранного протокола, на предмет ее соответствия протоколу. Рассматривая ранее изученные классы атак на выбранные части реализации протокола (атаки, нацеленные на переполнение буфера или ошибки форматирующей строки), можно написать программу, демонстрирующую найденную уязвимость.
Анализаторы
Последний, заслуживающий внимания метод поиска уязвимостей – это применение анализаторов. Анализаторы – это инструмент исследования уязвимостей, который применяется как средство поиска неисправностей или для отладки. Другими словами, анализаторы – это модули проверки текущего состояния программы. К сожалению, цели применения анализаторов могут быть разными.
Анализаторы могут применяться для контроля взаимодействия между системой и ее пользователями. С их помощью можно графически отображать происходящие в работе программы события, например генерацию последовательности чисел. Они также позволяют контролировать работу программ общего шлюзового интерфейса, определять предназначение программ CGI и даже собирать информацию о критических ошибках проектирования этих программ.
Анализаторы применяются совместно с ранее упомянутым аудитом документации проектирования. С их помощью проводятся исследования Web-интерфейсов или других сетевых протоколов, которые хотя и не являются общепризнанными стандартами, но широко используются.
Значение экспертизы исходного текста программы
Аудит исходных текстов программы должен быть предусмотрен при установке любой системы. Аудит исходных текстов предполагает поиск потенциально опасных (подверженных ошибкам) функций и методологии построчного анализа исходных текстов программы. Часто это затруднено из-за того, что исходный текст программы размещается в нескольких файлах, а не в одном. Например, исходный текст почтовых транспортных агентов, Web-серверов и им подобных программ может быть размещен в нескольких исходных файлах, файлах заголовков, сборочных файлах проекта и в нескольких директориях.
Читать дальше
Конец ознакомительного отрывка
Купить книгу