Защита от хакеров корпоративных сетей - страница 91

Шрифт
Интервал


Следует сказать, что для анализа различных типов данных требуются разные методы исследования. Для анализа двоичных данных требуется совершенно иной подход, чем для анализа исходного текста программы. Поэтому рассмотрим эти два подхода отдельно друг от друга.

Анализ исходного текста программы

Анализ исходного текста программы предполагает экспертизу текста программы на предмет ошибок. Программа может быть написана на языках C, Perl, Java, C++, ASP, PHP и им подобных. Обычно аудит исходного текста программы начинается с поиска потенциально небезопасных функций, или, другими словами, функций, подверженных ошибкам.

Поиск подверженных ошибкам функций

Аудит исходного текста программы осуществляется различными способами. Прежде всего это поиск потенциально небезопасных функций при помощи различных утилит поиска, например grep.

Следует обратить внимание на использование функций языка C strcpy и sprintf. Злоумышленник часто их применяет, пытаясь добиться переполнения буфера из-за отсутствия или неверного выполнения проверки принадлежности адресов диапазону правильных адресов памяти. Использование других функций, как, например, mktemp, может привести к перезаписи файлов в результате конкуренции программ, содержащих функцию, или к повышению привилегий.

Построчная экспертиза исходного текста

Один из методов анализа исходного теста программы – построчная экспертиза программы в соответствии с алгоритмом ее выполнения. Это более тщательное изучение программы, на которое уходит больше времени.

Согласно этому методу от исследователя требуется просмотреть исходный текст программы в соответствии с гипотетической последовательностью ее выполнения. Гипотетическая последовательность выполнения отражает различные условия выполнения программы, определяемые ее входными данными. Ход выполнения программы визуально прослеживается исследователем, мысленно отслеживающим обработку данных различными функциями по мере их вызова программой.

Анализ различий

Анализ различий – метод определения уязвимостей программы, который применяется, если производитель сообщил об уязвимости, не детализируя ее сути. С помощью этого метода определяется, был ли изменен файл программы, a если был, то где именно.

diff – одна из лучших утилит, реализующая рассматриваемый метод. Она поставляется с большинством версий операционных систем UNIX и благодаря Фонду свободно распространяемого программого обеспечения (Free Software Foundation) реализована на многих платформах. diff сравнивает две копии данных и отображает любые различия между ними, то есть она позволяет найти различия в двух исходных файлах программ и их местонахождение.