РАСПОЗНАВАНИЕ И СИНТЕЗ ROP-ЦЕПОЧЕК В PE-МОДУЛЯХ WINDOWS ПО СПЕЦИФИКАЦИИ ЦЕЛЕВЫХ ОПЕРАЦИЙ

Михаил П. Григорьев, Михаил А. Иванов

Аннотация


 Возвратно-ориентированное программирование (ROP) остаётся одним из ключевых классов атак повторного использования кода, при этом само по себе наличие в исполняемом модуле отдельных гаджетов ещё не позволяет сделать вывод о возможности построения практически значимой цепочки. В связи с этим возникает задача определения того, может ли в конкретном PE (Portable Executable)-модуле Windows быть реализована заданная целевая операция при ограничениях на длину цепочки и область поиска. Цель исследования – разработка статического метода и программного прототипа для определения возможности построения ROP-цепочки по заданной пользователем спецификации целевых операций в исполняемых модулях формата PE для архитектур x86/x64. Методы исследования – статическое извлечение гаджетов, завершающихся инструкцией RET и её эквивалентными инструкциями, построение семантического описания того, как каждый гаджет изменяет состояние регистров, стека и памяти, а также сведение задачи поиска цепочки к задаче синтеза программы в модели виртуальной машины гаджетов, которые выступают в роли команд. Поиск решения выполняется путём согласования предусловий и постусловий, отсечения недопустимых ветвей и последующей проверки найденных цепочек с помощью эмуляции. Результаты исследования – предложена постановка задачи статического построения ROP-цепочек на основе заданной спецификации целевых операций для PE-модулей Windows при явных архитектурных и поисковых ограничениях; разработан метод, предусматривающий два результата анализа: построение цепочки, удовлетворяющей заданной спецификации, либо формально установленную недостижимость цели в пределах выбранной модели и ограничений; реализован прототип, формирующий воспроизводимое описание найденной цепочки, включая адреса гаджетов, последовательности инструкций, входные условия и ожидаемое конечное состояние. Экспериментальная проверка на тестовых примерах и системных библиотеках Windows подтверждает практическую ценность предложенного подхода для предварительной оценки возможности построения ROP-цепочек в анализируемом модуле и для обоснования использования механизмов защиты потока управления.

Ключевые слова


атаки повторного использования кода, возвратно-ориентированное программирование, статический анализ, синтез программ, контроль целостности потока управления, граф потока управления

Полный текст:

PDF

Литература


1. Roemer R., Buchanan E., Shacham H., Savage S. Return-oriented programming: systems, languages, and applications. ACM Transactions on Information and System Security. 2012, v. 15, no. 1., Art. 2, 34 p. DOI: https://doi.org/10.1145/2133375.2133377.
2. Shacham H. The geometry of innocent flesh on the bone: return-into-libc without function calls. Proceedings of the 14th ACM conference on Computer and communications security (CCS ’07). Association for Computing Machinery, New York, NY, USA, 552-561. DOI: https://doi.org/10.1145/1315245.1315313.
3. Checkoway S., Davi L., Dmitrienko A., Sadeghi A.-R., Shacham H., Winandy M. Return-oriented programming without returns. In Proceedings of the 17th ACM conference on Computer and communications security (CCS '10). Association for Computing Machinery, New York, NY, USA, 559-572. DOI: https://doi.org/10.1145/1866307.1866370.
4. Bletsch T., Jiang X., Freeh V., Liang Z. Jump-oriented programming: a new class of code-reuse attack. In Proceedings of the 6th ACM Symposium on Information, Computer and Communications Security (ASIACCS '11). Association for Computing Machinery, New York, NY, USA, 30-40. DOI: https://doi.org/10.1145/1966913.1966919.
5. Schuster F., Tendyck T., Liebchen C., Davi L., Sadeghi A.-R., Holz T. Counterfeit Object-oriented Programming: On the Difficulty of Preventing Code Reuse Attacks in C++ Applications. 2015 IEEE Symposium on Security and Privacy, San Jose, CA, USA, 2015, pp. 745-762. DOI: https://doi.org/10.1109/SP.2015.51.
6. Abadi M., Budiu M., Erlingsson Ú., Ligatti J. Control-flow integrity principles, implementations, and applications. ACM Trans. Inf. Syst. Secur. 13, 1, Article 4 (October 2009), 40 p. DOI: https://doi.org/10.1145/1609956.1609960.
7. Sayeed, S., Marco-Gisbert, H., Ripoll, I., & Birch, M. (2019). Control-Flow Integrity: Attacks and Protections. Applied Sciences, 9(20), 4229. DOI: https://doi.org/10.3390/app9204229.
8. Pfau N., Kochberger P. Analysis of the Windows Control Flow Guard. In Proceedings of the 19th International Conference on Availability, Reliability and Security (ARES '24). Association for Computing Machinery, New York, NY, USA, Article 60, 1-11. DOI: https://doi.org/10.1145/3664476.3670432.
9. Biondo A., Conti M., Lain D. Back to the epilogue: evading control flow guard via unaligned targets. Proceedings of the network and distributed system security symposium (NDSS 2018), San Diego, CA, USA, 18-21 Feb 2018. 2018. DOI: https://doi.org/10.14722/ndss.2018.23318.
10. Shanbhogue V., Gupta D., Sahita R. 2019. Security Analysis of Processor Instruction Set Architecture for Enforcing Control-Flow Integrity. In Proceedings of the 8th International Workshop on Hardware and Architectural Support for Security and Privacy (HASP '19). Association for Computing Machinery, New York, NY, USA, Article 8, 1-11. DOI: https://doi.org/10.1145/3337167.3337175.
11. Gaidis A.J., Moreira J., Sun K., Milburn A., Atlidakis V., Kemerlis V.P. 2023. FineIBT: Fine-grain Control-flow Enforcement with Indirect Branch Tracking. In Proceedings of the 26th International Symposium on Research in Attacks, Intrusions and Defenses (RAID '23). Association for Computing Machinery, New York, NY, USA,
527-546. DOI: https://doi.org/10.1145/3607199.3607219.
12. Аряшев, С., Гревцев, Н., Земков, С., Чибисов, П. (2026). Использование аппаратных механизмов изоляции как платформы для адаптивной безопасности. Безопасность информационных технологий, 33(1), 16-28. DOI: https://doi.org/10.26583/bit.2026.1.02.
Aryashev, S., Grevtsev, N., Zemkov, S., Chibisov, P. (2026). Using hardware isolation mechanisms as a platform for adaptive security. IT Security (Russia), 33(1), 16-28. DOI: https://doi.org/10.26583/bit.2026.1.02 (in Russian).
13. Buchanan E., Roemer R., Shacham H., Savage S. 2008. When good instructions go bad: generalizing return-oriented programming to RISC. In Proceedings of the 15th ACM conference on Computer and communications security (CCS '08). Association for Computing Machinery, New York, NY, USA, 27-38. DOI: https://doi.org/10.1145/1455770.1455776.
14. Göktas E., Athanasopoulos E., Bos H., Portokalidis G. Out of Control: Overcoming Control-Flow Integrity. 2014 IEEE Symposium on Security and Privacy, Berkeley, CA, USA, 2014, pp. 575-589. DOI: https://doi.org/10.1109/SP.2014.43.
15. Александров Я.А., Сафин Л.К., Чернов А.В., Трошина К.Н. Определение границ подпрограмм при статическом анализе бинарных образов. Вопросы кибербезопасности. 2016, № 1(14), c. 53-60. EDN: VKPUHB.
Aleksandrov, Ya.A.; Safin, L.K.; Chernov, A.V.; Troshina, K.N. Subroutines bounds recognition in static analysis of binary images. Voprosy kiberbezopasnosti. 2016, no. 1(14), pp. 53-60. EDN: VKPUHB (in Russian).
16. Mashtizadeh A. J., Bittau A., Boneh D., Mazières D. 2015. CCFI: Cryptographically Enforced Control Flow Integrity. In Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security (CCS '15). Association for Computing Machinery, New York, NY, USA, 941-951. DOI: https://doi.org/10.1145/2810103.2813676.
17. Niu B., Tan G. 2014. Modular control-flow integrity. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '14). Association for Computing Machinery, New York, NY, USA, 577-587. DOI: https://doi.org/10.1145/2594291.2594295.
18. Snow K. Z., Monrose F., Davi L., Dmitrienko A., Liebchen C., Sadeghi A.-R. Just-In-Time Code Reuse: On the Effectiveness of Fine-Grained Address Space Layout Randomization. 2013 IEEE Symposium on Security and Privacy, Berkeley, CA, USA, 2013, pp. 574-588. DOI: https://doi.org/10.1109/SP.2013.45.
19. Маркин Д.О., Макеев С.М. Система защиты терминальных программ от анализа на основе виртуализации исполняемого кода. Вопросы кибербезопасности. 2020, № 1(35), c. 29-41. DOI: https://doi.org/10.21681/2311-3456-2020-01-29-41. EDN: GZYCRK.
Markin, D.O.; Makeev, S.M. Protection system of terminal programs against analysis based on code virtualization. Voprosy kiberbezopasnosti. 2020, no. 1(35), pp. 29-41. DOI: https://doi.org/10.21681/2311-3456-2020-01-29-41 EDN: GZYCRK (in Russian).
20. Burow N., Carr S. A., Nash J., Larsen P., Franz M., Brunthaler S., Payer M. 2017. Control-Flow Integrity: Precision, Security, and Performance. ACM Comput. Surv. 50, 1, Article 16 (January 2018), 33 p. DOI: https://doi.org/10.1145/3054924.
21. Follner A., Bartel A., Bodden E. (2016). Analyzing the Gadgets. In: Caballero, J., Bodden, E., Athanasopoulos, E. (eds) Engineering Secure Software and Systems. ESSoS 2016. Lecture Notes in Computer Science, v. 9639. Springer, Cham. DOI: https://doi.org/10.1007/978-3-319-30806-7_10.
22. Lehniger K., Saad A., Langendörfer P. Finding gadgets in incremental code updates for return-oriented programming attacks on resource-constrained devices. Ann. Telecommun. 78, 209-220 (2023). DOI: https://doi.org/10.1007/s12243-022-00917-8.




DOI: http://dx.doi.org/10.26583/bit.2026.3.07

Ссылки

  • На текущий момент ссылки отсутствуют.


Лицензия Creative Commons
Это произведение доступно по лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная.