Preview

Труды Института системного программирования РАН

Расширенный поиск

Исследование и разработка межпроцедурных алгоритмов поиска дефектов в исполняемом коде программ

https://doi.org/10.15514/ISPRAS-2019-31(6)-5

Аннотация

В последнее время всё больше компаний, производящих программное обеспечение, заинтересованы в инструментах повышения стабильности и безопасности их продукта. Используемые разработчиками закрытые библиотеки и сторонние приложения могут содержать дефекты, использование которых злоумышленником или пользователем может привести к нарушению стабильности и безопасности работы приложения. В ряде случаев исходный код проблемных участков может отсутствовать. Приобретают популярность статические методы поиска дефектов в коде, позволяющие находить дефекты, недостижимые для динамических методов. Статические методы представляют собой алгоритмы исследования статической модели программы, в том числе графа вызовов, потока управления, потока данных. Исследование бинарного кода предполагает восстановление статической модели программы из бинарного файла путём дизассемблирования, восстановления границ функций, трансляцию в промежуточное представление и восстановление графа вызовов. Дефекты в современных кодовых базах, как правило, проявляются лишь на определённом множестве путей в графе вызовов, что требует межпроцедурных алгоритмов поиска дефектов. Целью данной работы является разработка методов межпроцедурных алгоритмов поиска дефектов в бинарном коде, обладающих хорошей масштабируемостью, набором поддерживаемых архитектур и приемлемой точностью. Алгоритмы построены на базе инструмента ИСП РАН Binside.

Об авторах

Григорий Сергеевич Иванов
Институт системного программирования им. В.П. Иванникова РАН, Московский авиационный институт (национальный исследовательский университет)
Россия
Старший лаборант ИСП РАН, студент специалитета МАИ


Павел Михайлович Пальчиков
Московский государственный технический университет имени Н.Э. Баумана
Россия
Студент специалитета


Артём Юрьевич Тарасов
Московский государственный технический университет имени Н.Э. Баумана
Россия
Студент специалитета


Глеб Станиславович Акимов
Московский государственный технический университет имени Н.Э. Бауман
Россия
Студент специалитета


Айк Каренович Асланян
Российско-Армянский университет
Армения
Научный сотрудник, преподаватель, кандидат физико-математических наук


Ваагн Геворгович Варданян
Российско-Армянский университет
Армения
Научный сотрудник, преподаватель, кандидат технических наук


Мариам Сероповна Арутюнян
Российско-Армянский университет
Армения
Научный сотрудник, преподаватель, аспирант


Григор Сосович Керопян
Российско-Армянский университет
Армения
Научный сотрудник, магистрант


Список литературы

1. David Brumley, Ivan Jager, Thanassis Avgerinos, and Edward J. Schwartz. BAP: a binary analysis platform. In Proc. of the 23rd International Conference on Computer Aided Verification, 2011, pp. 463-469.

2. BinaryAnalysisPlatform / bap. Available at https://github.com/BinaryAnalysisPlatform/bap, accessed 10.12.2019.

3. programa-stic / barf-project. Available at https://github.com/programa-stic/barf-project, accessed 10.12.2019.

4. Thomas Dullien, Sebastian Porst. REIL: A platform-independent intermediate representationof disassembled code for static code analysis. In Proc. of the CanSecWest Conference, 2009, 7 p.

5. Mitre. Available at https://cwe.mitre.org/, accessed 10.12.2019.

6. V. P. Ivannikov, A. A. Belevantsev, A. E. Borodin, V. N. Ignatiev, D. M. Zhurikhin, A. I. Avetisyan. Static analyzer Svace for finding defects in a source program code. Programming and Computer Software, vol. 40, issue 5. 2014, pp. 265-275. DOI: 10.1134/S0361768814050041.

7. BINSIDE. Инструмент обнаружения дефектов в программе методами статического анализа исполняемого кода. Режим доступа: https://www.ispras.ru/technologies/binside/, дата обращения 10.12.2019 / BINSIDE. Static binary code analysis tool. Available at https://www.ispras.ru/en/technologies/binside/, accessed 10.12.2019.

8. IDA Pro. Available at https://www.hex-rays.com/, accessed 10.12.2019.

9. Chris Eagle. The IDA Pro Book: The Unofficial Guide to the World's Most Popular Disassembler. 2nd edition. No Starch Press, 2011, 672 p.

10. G. Balakrishnan and T. Reps. WYSINWYX: What You See Is Not What You Execute. ACM Transactions on Programming Languages and Systems, 2010, Article No. 23.

11. Balakrishnan G., Reps T. Analyzing Memory Accesses in x86 Executables. Lecture Notes in Computer Science, vol. 2985, 2004, pp. 5-23.

12. Кошелев В.К., Избышев А.О, Дудина И.А. Межпроцедурный анализ помеченных данных на базе инфраструктуры LLVM. Труды ИСП РАН, том 26, вып. 2, 2014 г., стр. 97-118 / Koshelev V.K., Izbyshev A.O., Dudina I.A. Interprocedural taint analysis for LLVM-bitcode. Trudy ISP RAN/Proc. ISP RAS, vol. 26, issue 2, 2014, pp. 97-118 (in Russian). DOI: 10.15514/ISPRAS-2014-26(2)-4.

13. Тихонов А.Ю., Аветисян А.И. Развитие taint-анализа для решения задачи поиска программных закладок. Труды ИСП РАН, том 20, 2011 г., стр. 9-24 / Tichonov A.Y., Avetisyan A.I. Development of taint-analysis methods to solve the problem of searching of undeclared features. Trudy ISP RAN/Proc. ISP RAS, vol. 20, 2011, pp. 9-24 (in Russian).

14. Беляев М.В., Шимчик Н.В., Игнатьев В.Н., Белеванцев А.А. Сравнительный анализ двух подходов к статическому анализу помеченных данных. Труды ИСП РАН, том 29, вып. 3, 2017 г., стр. 99-116 / M.V. Belyaev, N.V. Shimchik, V.N. Ignatyev, A.A. Belevantsev Comparative analysis of two approaches to the static taint analysis. Trudy ISP RAN/Proc. ISP RAS, vol. 29, issue 3, 2017, pp. 99-116. DOI: 10.15514/ISPRAS-2017-29(3)-7.

15. Angr. Available at https://github.com/angr/angr, accessed 10.12.2019

16. Статический анализатор Svace. Промышленный поиск критических ошибок в безопасном цикле разработки программ. Режим доступа: https://www.ispras.ru/technologies/svace /, дата обращения 10.12.2019 / Svace Static Analyzer. Finding critical program errors in production within secure development lifecycles. Available at https://www.ispras.ru/en/technologies/svace/, accessed 10.12.2019.

17. Bjarne Stroustrup. The C++ Programming Language: Special Edition (3rd Edition). Addison-Wesley Professional, 2000, 1030 p.


Рецензия

Для цитирования:


Иванов Г.С., Пальчиков П.М., Тарасов А.Ю., Акимов Г.С., Асланян А.К., Варданян В.Г., Арутюнян М.С., Керопян Г.С. Исследование и разработка межпроцедурных алгоритмов поиска дефектов в исполняемом коде программ. Труды Института системного программирования РАН. 2019;31(6):89-98. https://doi.org/10.15514/ISPRAS-2019-31(6)-5

For citation:


Ivanov G.S., Palchikov P.M., Tarasov A.Yu., Akimov G.S., Aslanyan H.K., Vardanyan V.G., Arutunyan M.S., Keropyan G.S. Research and development of interprocedural algorithms for defect searching in executable program code. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2019;31(6):89-98. (In Russ.) https://doi.org/10.15514/ISPRAS-2019-31(6)-5



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)