Source code scanners

Xakep, номер #043, стр. 043-040-8


Я не буду приводить примера работы программы, так как считаю это лишним: Splint - не какая-нибудь там утилитка, а серьезная прога, место дислокации которой - целый сайт (а не «домашняя страничка автора»), на котором есть исчерпывающее количество информации по программе, начиная от мануала в несколько сотен страниц (в pdf-доке) и заканчивая наглядными описаниями того, как при помощи сканера проводили аудит безопасности известного ПО (да-да, так это называется, а ты и не знал что, сканируя сетку на шары, ты «проводишь аудит безопасности» :)). Разумеется, утилу портировали подо все, что только можно, но версия под Win32, на мой взгляд, кривоватая. Так что никсы и только никсы :).

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

The конец

Итак, к ознакомлению были представлены пять популярных прог. Я намеренно не стал скрупулезно анализировать качество работы каждой утилиты: исходники-тесты у тебя есть, репорты тоже есть, бери, сравнивай, анализируй и думай :). В принципе, написать самому подобную прогу - не проблема, главное - выработать эффективный алгоритм (мне, например, понравилась структура ITS4 с ее понятной и легко пополняемой базой в виде отдельного файла, но вот алгоритм у этого сканера фиговый, его легко «обмануть»). Ну а потом - никто не мешает тебе запихнуть все это дело в ГУИ. И еще. Надеюсь, ты понимаешь, что далеко не каждый найденный сканером баг - это баг (а не фича :), т.к. все они подходят к сканированию формально, в силу как раз используемых алгоритмов, и не являются панацеей, однако если твоя прога состоит из нескольких сот строк и будет использоваться в потенциально небезопасном месте (aka в сети, например, на серваке, да еще при этом обрабатывать какие-либо запросы извне), то проверить ее на подобные баги - не излишество, а суровая необходимость.

Назад на стр. 043-040-7  Содержание