Preview

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

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

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

https://doi.org/10.15514/ISPRAS-2017-29(6)-8

Аннотация

В статье рассматриваются подходы и способы выполнения кода с использованием уязвимостей в программах. В частности, рассмотрены способы выполнения кода для переполнения буфера на стеке и в динамической памяти, для уязвимости использования памяти после освобождения и для уязвимости форматной строки. Описываются методы и подходы, позволяющие автоматически получать наборы входных данных, которые приводят к выполнению произвольного кода. В основе этих подходов лежит использование символьной интерпретации. Динамическое символьное выполнение предоставляет набор входных данных, который направляет программу по пути активации уязвимости. Предикат безопасности представляет собой дополнительные символьные уравнения и неравенства, описывающие требуемое состояние программы, наступающее при обработке пакета данных, например, передача управления на требуемый адрес. Объединив предикаты пути и безопасности, а затем решив полученную систему уравнений, можно получить набор входных данных, приводящий программу к выполнению кода. В работе представлены предикаты безопасности для перезаписи указателя, перезаписи указателя на функцию и уязвимости форматной строки, которая приводит к переполнению буфера на стеке. Описанные предикаты безопасности использовались в методе оценки критичности программных дефектов. Проверка работоспособности предикатов безопасности оценивалась на наборе тестов, который использовался в конкурсе Darpa Cyber Grand Challenge. Тестирование предиката безопасности для уязвимости форматной строки, приводящей к переполнению буфера, проводилось на программе Ollydbg, содержащей эту уязвимость. Для некоторых примеров удалось получить входные данные, приводящие к выполнению кода, что подтверждает работоспособность предикатов безопасности.

Об авторах

А. Н. Федотов
Институт системного программирования им. В.П. Иванникова РАН
Россия


В. В. Каушан
Институт системного программирования им. В.П. Иванникова РАН
Россия


С. С. Гайсарян
Институт системного программирования им. В.П. Иванникова РАН; МГУ имени М.В. Ломоносова, 2-й учебный корпус, факультет ВМК; Московский физико-технический институт; Национальный исследовательский университет «Высшая школа экономики»
Россия


Ш. Ф. Курмангалеев
Институт системного программирования им. В.П. Иванникова РАН
Россия


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

1. C. Anley, J. Heasman, F. Lindner, G. Richarte. The shellcoder’s handbook: discovering and exploiting security holes. John Wiley & Sons, 2011, 61 с.

2. Thanassis Avgerinos, Sang Kil Cha, Alexandre Rebert et al. Automatic exploit generation. Communications of the ACM, vol. 57, no. 2, 2014, pp. 74–84.

3. Sang Kil Cha, Thanassis Avgerinos, Alexandre Rebert, David Brumley. Unleashing mayhem on binary code. 2012 IEEE Symposium on Security and Privacy (SP), 2012, pp. 380–394.

4. Shih-Kun Huang, Min-Hsiang Huang, Po-Yen Huang et al. Crax: Software crash analysis for automatic exploit generation by modeling attacks as symbolic continuations. Software 2012 IEEE Sixth International Conference on Security and Reliability (SERE), 2012, pp. 78–87.

5. Y Shoshitaishvili, R Wang, C Salls et al. The Art of War: Offensive Techniques in Binary Analysis. IEEE Symposium on Security and Privacy (S&P), 2016, pp. 138-157.

6. А.Н. Федотов, В.А. Падарян, В.В. Каушан и др. Оценка критичности программных дефектов в условиях работы современных защитных механизмов. Труды ИСП РАН, том 28, вып. 5, 2016 г., стр. 73–92. DOI: 10.15514/ISPRAS-2016-28(5)-4

7. А.Н Федотов. Метод оценки эксплуатируемости программных дефектов. Труды ИСП РАН, том 28, вып. 4, 2016 г., стр. 137-148. 10.15514/ISPRAS-2016-28(4)-8

8. One Aleph. Smashing The Stack For Fun And Profit. 1996. URL: http://phrack.org/issues/49/14.html#article (дата обращения: 08.10.2017).

9. Падарян В.А., Каушан В.В., Федотов А.Н. Автоматизированный метод построения эксплойтов для уязвимости переполнения буфера на стеке. Труды ИСП РАН, том 26, вып. 3, 2914 г., стр. 127-144. DOI: 10.15514/ISPRAS-2014-26(3)-7

10. Padaryan V.A., Kaushan V.V., Fedotov A.N. Automated exploit generation for stack buffer overflow vulnerabilities. Programming and Computer Software, vol. 41, № 6, pp. 373–380. DOI: 10.1134/S0361768815060055

11. Once upon a free(). 2001. URL: http://phrack.org/issues/57/9.html#article (дата обращения: 08.10.2017).

12. CWE-123. URL: https://cwe.mitre.org/data/definitions/123.html (дата обращения:12.05.2017).

13. Malloc Des-Maleficarum. 2009. URL: http://phrack.org/issues/66/10.html (дата обращения: 08.10.2017).

14. gera. Advances in format string exploitation. 2002. URL: http://phrack.org/issues/59/7.html#article (дата обращения: 08.10.2017).

15. И.А. Вахрушев, В.В. Каушан, В.А. Падарян, А.Н. Федотов. Метод поиска уязвимости форматной строки. Труды ИСП РАН, том 27, вып 4, 2015 г., стр. 23-38. DOI: 10.15514/ISPRAS-2015-27(4)-2

16. Bellard F. QEMU, a fast and portable dynamic translator. USENIX Annual Technical Conference, FREENIX Track, 2005, pp. 41-46.

17. Chipounov V., Kuznetsov V., Candea G. S2E: A platform for in-vivo multi-path analysis of software systems. ACM SIGPLAN Notices, vol. 46, №. 3, 2011, pp. 265-278.

18. Dolan-Gavitt B. et al. Repeatable reverse engineering with PANDA. Proceedings of the 5th Program Protection and Reverse Engineering Workshop, ACM, 2015, p. 4.

19. Zaddach J. et al. AVATAR: A Framework to Support Dynamic Security Analysis of Embedded Systems' Firmwares. NDSS Symposium 2014.

20. Manticore. URL: https://github.com/trailofbits/manticore (дата обращения: 08.10.2017).

21. Darpa Cyber Grand Challenge. URL: http://archive.darpa.mil/cybergrandchallenge/ (дата обращения: 08.10.2017).

22. Darpa Cyber Grand Challenge tests pack. URL:https://github.com/trailofbits/cb-multios (дата обращения: 08.10.2017).

23. Ollydbg bug. URL: https://www.exploit-db.com/exploits/388/ (дата обращения: 08.10.2017).


Рецензия

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


Федотов А.Н., Каушан В.В., Гайсарян С.С., Курмангалеев Ш.Ф. Построение предикатов безопасности для некоторых типов программных дефектов. Труды Института системного программирования РАН. 2017;29(6):151-162. https://doi.org/10.15514/ISPRAS-2017-29(6)-8

For citation:


Fedotov A.N., Kaushan V.V., Gaissaryan S.S., Kurmangaleev Sh.F. Building security predicates for some types of vulnerabilities. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2017;29(6):151-162. (In Russ.) https://doi.org/10.15514/ISPRAS-2017-29(6)-8



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


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