вторник, 23 сентября 2014 г.

Jetinfo: Статический анализ кода: что могут инструментальные средства?

Попросили прокомментировать статью в Jetinfo. Кратко: по тексту - серьезных возражений не имею. Даже фраза про PT AI "На сегодняшний день набор применяемых правил для поиска уязвимостей достаточно беден" недалека от истины. Но есть нюанс (C)(R)(TM). Под катом.

Основное "НО" заключается в том, что Positive Technologies Application Inspector не является статическим анализатором. И даже не совсем анализатором исходных кодов, он вполне может "пережевывать" и например байткод Java.
В нем есть элементы SAST, но основное ядро (которое так и называется - AI, от Abstract Interpretation) работает на принципах интерактивного анализа (IAST), сочетающего реальное и символическое выполнение программы. Об этом пишет и старик Гартнер включив Positive Technologies в Sample Vendors в нише Interactive Application Security Testing.

Поэтому класический вопрос "сколько у вас паттернов (шаблонов)" особого смысла не имеет и приводит к "ложным срабатываниям" при подготовке технического задания или ТКП. Для классического "статического анализа", что по потоку лексем (aka grep), что по AST или другим CFG/DDG, количество шаблонов представляет собой более-менее понятную метрику, но не в нашем случае. Принцип анализа совсем немного другой.

В модуле AST pattern-matching мы ищем только простенькие вещи, что-то типа ODBC connection string с жестко зашитым паролем или "плохие" криптографические функции. Все вещи, связанные с dataflow обрабатываются ядром AI. А у него "шаблоны" конечно в каком-то виде есть, но они не совсем шаблоны, да и не шаблоны вовсе :)

Отсюда и низкий уровень ложных срабатываний, и возможность однократного "прогона" там, где лидеры "магического квадранта" требуют использовать последовательно 3 РАЗНЫХ инструмента для статического и динамического анализа, а потом магическим образом "совмещать результаты". Ну и возможность интеграции с WAF для быстрого virtual patch, чего пока не умеет (насколько я знаю, поправьте) ни одно из других средств анализа исходных кодов.

Если вдруг хочется подробностей, ждем 24 сентября на Infosecurity Moscow, ну или можно почитать вот тут:

http://habrahabr.ru/company/pt/blog/224547/
http://habrahabr.ru/company/pt/blog/191002/

Более "популярный" вариант: http://xakep.ru/positive-technologies-cto-interview/

PS. Ряд коллег спросил, достаточно ли для тестирования "15 тыс. CLOC". Недостаточно. Разве что на синтетических тестах по 20 строк на тест. Реальные приложения досаточно разлаписты, и я неоднократно видел как при попытке анализа обычного корпоративного портала на 500 000 LOC многие продукты просто падали. Возможно автор ошибся и было 15 000 [Kilo]LOC, что в принципе адекватно для конкурентного анализа.

PPS. "По нашему мнению, разработка ИС идет по правильному сценарию, с использованием верных технологий, что позволяет верить в успешность проекта и выход этого продукта в лидеры рынка в ближайшем будущем." - все так, все так!

Комментариев нет: