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