Об эффективности и результативности эвристического ана-
лиза.
Предложенный способ выявления широкого спектра уязвимо-
стей методом эвристического анализа имеет непосредственно при-
кладное значение, так как доведен до практической реализации и про-
шел апробацию в реальных проектах.
Разработанный теоретический аппарат стал основой создания
анализатора AppChecker, реализованного на парсерах языков Java
и C/C++. Правила продукционной системы анализатора выполнены
с помощью XPath-запросов к XML-представлению абстрактного син-
таксического дерева кода [17].
Полнота проверок обеспечена их привязкой к международному ре-
естру дефектов безопасности CWE. В настоящее время анализатор
(версия 1.0) включает в себя 74 эвристики для языка Java и 55 для
языка C/C++.
Сравнение статических анализаторов (основанных на проверках
свойств и поиске по шаблонам) на тестовых примерах с открытым
кодом показал сопоставимую их результативность и качество рабо-
ты [18].
Следует понимать, что эвристические подходы в большей степени
зависят от квалификации экспертов: как при написании эвристик, так
и при анализе потенциально опасного фрагмента кода [19]. В то же
время, выявление преднамеренных программных закладок обеспечено
только методом эвристического анализа [1].
Предложенный метод не претендует на исключительность: в ре-
альности важен синтез возможных методик выявления конкретного
класса дефектов по критериям быстродействия и уровней ошибок пер-
вого и второго рода. Например, международный стандарт ISO/IEC TR
20004:2012 предлагает методики выявления известных уязвимостей,
опубликованных в открытых бюллетенях по безопасности [20]. Такой
подход повышает эффективность структурного тестирования, напри-
мер, при первичном анализе заимствованных компонентов.
Заключение.
По результатам исследования можно сделать следу-
ющие выводы.
1. Предлагаемый эвристический метод обеспечивает полноту и не-
противоречивость проверок, так как не налагает ограничений на клас-
сификации дефектов программного кода.
2. Метод может служить базовым методом при практическом ком-
плексировании различных техник статического анализа безопасности
программ (с учетом мнений квалифицированных экспертов).
3. Особенность метода эвристического анализа — возможность
идентифицировать преднамеренные закладки, опираясь на экспертные
признаки деструктивного кода.
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2016. № 1 107