Инструменты аудита безопасности

В архиве Debian доступны несколько пакетов, которые разработаны облегчения проведения аудита исходного кода. Вот они:

Заметьте также, что существуют и другие инструменты, созданные специально для поиска определённого набора уязвимостей в безопасности, для которых пока может быть и не созданы пакеты Debian, но которые могут быть полезны тому, кто проводит аудит. Среди них:

Ни один инструмент не является совершенным; инструменты могут использоваться только в качестве руководств для дальнейшего исследования, но учитывая то, как они просты в использовании, полезно выделить на них время.

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

Flawfinder

flawfinder — это инструмент, написанный на Python, разработанный для анализа исходного кода на C и C++ в поиске потенциальных проблем с безопасностью.

Когда в качестве параметра указывается каталог, содержащий исходный код, этот инструмент выведет отчёт о потенциальных проблемах, которые были обнаружены; отчёт будет отсортирован по риску (где риск — это целое число от 1 до 5). Для отключения незначительных рисков можно передать программе параметр, тогда программа не будет сообщать об ошибках, уровень риска которы ниже определённого уровня. По умолчанию вывод будет иметь вид обычного текста, но можно вывести отчёт и в формате HTML.

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

Для облегчения чтения отчёта можно указать параметр, использование которого приведёт к тому, что отчёт будет содержать строку, содержащую используемую функцию; это может быть полезно для немедленного обнаружения проблемы или для её исключения.

Вы можете посмотреть пример использования flawfinder, и его вывод в разделе примеров аудита.

ITS4

ITS4 — инструмент, содержащийся в разделе non-free архива Debian; он доступен только для выпуска woody.

ITS4 может использоваться для сканирования кода на C и на C++ в поисках потенциальных дыр в безопасности подобно flawfinder.

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

RATS

RATS — инструмент, похожий на приведённые выше, с тем лишь исключением, что он поддерживает более широкий спектр языков. В настоящее время в нём имеется поддержка C, C++, Perl, PHP и Python.

Этот инструмент использует простой файл XML для хранения информации об уязвимостях, что делает его наиболее простым для настройки из доступных инструментов. Новые функции могут быть легко добавлены для поддерживаемы языков.

Вы можете посмотреть пример использования RATS и его вывод в разделе примеров аудита.

pscan

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

Этот инструмент пытается найти потенциальные проблемы использования таких вариативных функций в исходном коде на C и C++, как printf, fprintf и syslog.

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

Вы можете посмотреть пример использования pscan, и его вывод в разделе примеров аудита.

Понимание вывода сканера

Каждый инструмент общего сканирования в качестве результатов работы выдаст вывод, описывающий обнаруженную проблему и возможно содержащий совет о том, как исправить код.

Например, следующий вывод RATS описывает опасность getenv:

"Environment variables are highly untrustable input. They may be of any length, and contain any data. Do not make any assumptions regarding content or length. If at all possible avoid using them, and if it is necessary, sanitize them and truncate them to a reasonable length."

Если вам нужны дальнейшие советы о том, как исправить обнаруженную дыру, вам следует изучить книгу о безопасном программировании, напр. HOWTO по безопасному программированию для Linux и Unix Дэвида А. Уилера (David A. Wheeler).

(Помните, что при отправке отчёта о проблеме безопасности приветстуется заплата, закрывающая дыру)

Обсуждение закрытия очень трудного куска кода может также проводиться в списке рассылки debian-security, но поскольку это публичный список рассылки с публичным архивом, пишите о проблемах в коде так, чтобы не было понятно, о какой программе идёт речь.