Модель, алгоритмы и программный комплекс автоматизированного поиска уязвимостей в исполняемом коде
Ключевые слова:
уязвимость, исполняемый код, динамическое тестирование, ошибка, критерийАннотация
В настоящей работе рассматривается проблема автоматизированного поиска уязвимостей в исполняемом коде. В работе проводится анализ проблематики, и выделяются недостатки существующих решений, в части отсутствия возможности обнаружения уязвимостей с учётом тех угроз, которые они несут для защищаемой информации, которая обрабатывается в ПО. Для решения этой проблемы предлагается оригинальная модель автоматизированного поиска уязвимостей в трассе программы, её алгоритмическое обеспечение и программная реализация. В рамках модели приводятся формальные критерии отнесения ошибки к уязвимости с учётом распределения защищаемой информации в памяти программы. Для выделения участков памяти с защищаемой информацией в работе используется методика анализа помеченных данных. Кроме того приводится экспериментальная оценка эффективности разработанного программного комплекса, которая показала, что разработанное решение позволяет детектировать на 5 типов уязвимостей больше в ОС Windows и на 4 типа уязвимостей больше в Linux по сравнению с существующими аналогами. Все модули разработанного комплекса были опубликованы как ПО с открытым исходным кодом, могут свободно использоваться в других проектах и доступны для скачивания в Интернете.
Литература
2. Исследование международной базы уязвимостей CVE. URL: http://opennet.ru/opennews/art.shtml?num=36287 (дата обращения 17.08.2015).
3. Аветисян А.И., Белеванцев А.А., Чукляев И.И. Технологии статического и динамического анализа уязвимостей программного обеспечения // Вопросы кибербезопасности. 2014. № 3 (4). С. 20–28.
4. ГОСТ Р 50922-2006 Защита информации. Основные термины и определения // М.: Стандартинформ. 2008.
5. Dowd M., McDonald J., Schuh J. The art of software security assessment: Identifying and preventing software vulnerabilities // Boston. USA: Addison-Wesley Professional. 2006. 1244 p.
6. Каушан В.В., Маркин Ю.В., Падарян В.А., Тихонов А.Ю. Методы поиска ошибок в бинарном коде // Технический отчет Института системного программирования РАН. 2013. № 2013-1. 42 с.
7. Clarke T. Fuzzing for software vulnerability discovery: technical report // Department of Mathematic. Royal Holloway University of London. 2009. 178 p.
8. Bruening D., Zhao Q. Practical memory checking with Dr. Memory // In Proceedings of the 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization. 2011. pp. 213–223.
9. Nethercote N., Seward J. Valgrind: a framework for heavyweight dynamic binary instrumentation // ACM Sigplan notices. 2007. vol. 42(6). pp. 89–100.
10. Программный комплекс DrMemory. URL: www.drmemory.org (дата обращения 17.08.2015).
11. Шудрак М.О., Лубкин И.А., Золотарев В.В. Методика декомпиляции бинарного кода и её применение в сфере информационной безопасности // Безопасность информационных технологий НИЯУ МИФИ. Москва. 2012. №3. С. 75–80.
12. Luk C.K., Cohn R., Muth R., Patil H., Klauser A., Lowney G., Hazelwood K. Pin: building customized program analysis tools with dynamic instrumentation // In Acm Sigplan Notices. 2005. vol. 40(6). pp. 190–200.
13. Uh G. R., Cohn R., Yadavalli B., Peri R., Ayyagari R. Analyzing dynamic binary instrumentation overhead // In WBIA Workshop at ASPLOS. 2006.
14. Репозиторий с исходным кодом разработанной системы. URL: https://github.com/MShudrak/tvc (дата обращения 19.08.2015).