Анализаторы исходных кодов
  • Категории
  • Подписка
  • Разместить статью
04/10/10 4 7019 Средства аудита программ
-

Анализаторы исходных кодов

Осведомлен – значит вооружен, в случае с ИТ — защищен. Закрыться изнутри, настроив firewall, ограничить доступ, отключить ненужные службы, все это хорошо. А что делать, если то программное обеспечение, которое мы используем для своих целей под лицензией GNU, скаченное и установленное из надежного источника имеет уязвимости? Тогда вся наша безопасность катится «коту под хвост». Чтобы понять с какой стороны подойдет хакер, нужно разобраться во многих понятиях и в этом в частности. Хорошо, тогда как определить надежную программу мы ставим или нет? Нет, я не хочу сказать, что все программы «глючные», в любом случае на сайтах разработчиков есть техническая поддержка, форум для того, чтоб обсудить некоторые нюансы настройки, работы и если есть, то и уязвимости которые находят спецы и делятся с сообществом, этим и силен Linux.

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

LCLint

С помощью LCLint или Splint (http://lclint.cs.virginia.edu/ или http://www.splint.org/) можно выявлять ошибки в программах на языке С. Это средство позволяет провести множество стандартных проверок программ, а также выявить ошибки зашиты информации, контролировать интерфейсы функ­ций, обнаруживать некорректное использование глобальных переменных, ошибки управления памятью, совместное использование потенциально опасных данных, потенциальные возмож­ности обращения к несуществующим в памяти объектам и еще многие другие проблемы. Практическое руководство по использованию LCLint, Splint можно найти по адресу http://lclint.cs.virginia.edu/guide/guide-full.html или http://www.splint.org/manual/.

Cqual

Cqual (http://www.cs.umd.edu/~jfoster/cqual/) представляет собой средст­во для проверки соответствия типов и позволяет программисту устанавливать спецификаторы типов. Затем программист может добавить описание для спецификатора в свою программу и Cqual предоставит свой вывод относительно правильности этих описаний.

RATS

Средство аудита и обеспечения безопасности RATS позволяет провести проверку программ, написанных на языках С, C++, Perl, Python и PHP. Оно выдает предупреждения при наличии наиболее популярных ошибок про­граммирования. Это средство особенно хорошо использовать для выполнения предваритель­ной проверки кода.

Параметры:

RATS v1.3 — Rough Auditing Tool for Security

Copyright 2001 by Secure Software Solutions

http://www.securesw.com

usage: rats [-adhilrwx] name1 name2 … namen

-a <fun> report any occurrence of function «fun» in the source file(s)

-d <filename> specify an alternate vulnerability database.

-h display usage information (what you»re reading)

-i report functions that accept external input

-l <language> force the specified language to be used

-r include references that are not function calls

-w <1,2,3> set warning level (default 2)

-x do not load default databases

Flawfinder

Проверить безопасность команд в исходном коде программ позволяет программа Flawfinder (http://www.dwheeler.com/flawfinder). Эта программа осуществляет поиск функций, ошибки при работе с которыми чаще всего используются для проведения различных атак, на­пример атак на переполнение буфера (функции strcpy (), scanf () и другие), атак с помо­щью строки форматирования (функции printf (), syslog() и другие), ситуаций «гонки на выживание» (функции access(), chmod() и другие), потенциальных проблем, связанных с использованием метасимволов для командного интерпретатора (функции ехес(), system() и другие), а также ошибок при использовании генераторов случайных чисел (функция random() и другие). При выявлении какой-либо проблемы программисту выдается соответст­вующий совет.

Опции:

—context, -c Показывает строку, которая содержит потенциальную недоработку; сходна с использованием grep для поиска каждой функции или демонстрации результатов каждого совпадения.
—columns Показывает номер столбца потенциальной недоработки. Например, уязвимый strcpy может начинаться с 16-го символа строки.
—minlevel=X, -m X Задает минимальный уровень риска, для которого сообщается совпадение. Значение X может быть от 0 (нет риска) до 5 (максимальный риск). По умолчанию — 1.
—neverignore, -n Не поддерживает директиву ignore в исходном файле.
—immediate, -i Показывает потенциальные совпадения по мере их нахождения.
—inputs Показывает только функции, которые получают внешний ввод (задает переменные из данных, полученных извне программы). Устанавливает минимальный уровень равный 0.
—quiet Не показывает информацию о совпадении во время сканирования.
—loadhitlist=F Загружает совпадения из файла F вместо анализа исходных программ.
—savehitlist=F Сохраняет совпадения в файле F.
—diffhitlist=F Не показывает совпадения, содержащиеся в файле F. Полезна для сравнения пересмотров.

SPIKE и Sharefuzz

SPIKE (http://sourceforge.net/projects/spike/) представляет собой полезное средство для анализа протоколов и воспроизведения данных. Программа Sharefuzz с помощью переменной среды LD_PRELOAD позволяет анализировать SUID-программы на предмет воз­можного переполнения буфера.


4 комментария на «“Анализаторы исходных кодов”»

  1. Спасибо за статейку. Я в исходном коде в основном проверяю дуфолоу или ноуфолоу :) А вот в браузере опера у меня не открывается исходный код, незнаю почему :) гуглил, но нет, а мозилла подвисает

  2. Стася:

    Прикольная штука! СПС

  3. Обычно проверяю исходный код мозилой на предмет ссылок. А так тоже неплохая вещь.

    • Бодя:

      Вася:
      как вариант, разве что для выявления подозрительных javascript-тов, данные способы более детально анализируют скрипты…

Добавить комментарий

Яндекс.Метрика