Preview

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

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

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

https://doi.org/10.15514/ISPRAS-2023-35(6)-7

Аннотация

Причиной возникновения неопределенного поведения является исходный код, написанный с нарушением стандарта языка Си. Неопределенное поведение приводит к появлению уязвимостей в программном обеспечении. Одним из распространенных источников неопределенного поведения является некорректное использование функций нелокальных переходов (в частности setjmp и longjmp). В данной работе рассмотрены средства обнаружения такого типа неопределенного поведения, реализованные в основных современных компиляторах (GCC, Clang, MSVC). Сделаны выводы о том, что эти средства обладают существенными недостатками либо вовсе отсутствуют в отдельных компиляторах. Описана реализация нового метода компиляторной диагностики рассматриваемого неопределенного поведения. Приведенный в работе метод обладает точностью, достаточной для практического применения на реальных проектах. Рассмотрены преимущества представленного решения над похожими существующими.

Об авторах

Никита Юрьевич ШУГАЛЕЙ
Институт системного программирования РАН, Московский физико-технический институт (национальный исследовательский университет)
Россия

Старший лаборант кафедры Cистемного программирования Московского физико-технического института. Сфера научных интересов: компиляторные технологии, безопасность программного обеспечения, методы статического анализа кода, оптимизация программ. 



Владислав Анатольевич ИВАНИШИН
Институт системного программирования РАН
Россия

Научный сотрудник компиляторного отдела Института системного программирования. Научные интересы включают в себя компиляторные технологии, операционные системы, безопасность программного обеспечения, методы статического анализа кода, оптимизацию программ.



Александр Владимирович МОНАКОВ
Институт системного программирования РАН
Россия

Старший научный компиляторного отдела Института системного программирования. Сферой научных интересов является компиляторные технологии, оптимизация программ.



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

1. C11 Standard ISO/IEC 9899:2011 // Programming language – C. – 2011. – P. 561. – International standard.

2. Herity, Dominic. C++ in embedded systems: Myth and reality / Dominic Herity // Embedded Systems Programming. – 1998. – Vol. 11, no. 2. – Pp. 48–71.

3. ISO/IEC/IEEE 9945:2009 // Portable Operating System Interface (POSIX®) Base Specifications, Issue 7. – 2009. – P. 37. – International standard.

4. Xu, Xiao. Research on coroutine-based process interaction simulation mechanism in c++ / Xiao Xu, Ge Li // AsiaSim 2012: Asia Simulation Conference 2012, Shanghai, China, October 27-30, 2012. Proceedings, Part III / Springer. – 2012. – Pp. 178–187.

5. Baev, Roman Vyacheslavovich. Prevention of vulnerabilities arising from optimization of code with Undefined Behavior / Roman Vyacheslavovich Baev, Leonid Vladlenovich Skvortsov, Evgeny Alekseevich Kudryashov, Ruben Arturovich Buchatskiy, Roman Aleksandrovich Zhuykov // Proc. Inst. Syst. Program. RAS. – 2021. – Vol. 33, no. 4. – Pp. 195–210.

6. Novillo, Diego. GCC Internals-Internal Representations / Diego Novillo // GCC IR-2. – 2007.

7. The internals of the GNU compilers. – Аccessed: 2023-11-04. Available at:https://gcc.gnu.org/onlinedocs/gccint/.

8. Merrill, Jason. Generic and gimple: A new tree representation for entire functions / Jason Merrill // Proceedings of the 2003 GCC Summit. – 2003. – Pp. 171–180.

9. /10/11/12 Regression] clobbered by longjmp warning ignores the data flow // Bug 21161, GCC. – Аccessed: 2023-11-04. Available at: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21161.

10. Aho, Alfred V. Compilers: principles, techniques, and tools / Alfred V Aho, Ravi Sethi, Jeffrey D Ullman // Addison-wesley Reading – 2007. – Vol. 2. - Pp. 399 - 410.

11. Jambor, Martin. The new intraprocedural scalar replacement of aggregates / Martin Jambor //GCC Developers’ Summit. – 2010. – Vol. 47.

12. Tarjan, Robert. Depth-first search and linear graph algorithms / Robert Tarjan // SIAM journal on computing. – 1972. – Vol. 1, no. 2. – Pp. 146–160.

13. Haghighat, Mohammad R. Symbolic analysis for parallelizing compilers / Mohammad R Haghighat. No. 1880. – Springer Science & Business Media, 1995.


Рецензия

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


ШУГАЛЕЙ Н.Ю., ИВАНИШИН В.А., МОНАКОВ А.В. Обнаружение возможной перезаписи переменных вследствие использования функций нелокальных переходов. Труды Института системного программирования РАН. 2023;35(6):121-134. https://doi.org/10.15514/ISPRAS-2023-35(6)-7

For citation:


SHUGALEY N.Yu., IVANISHIN V.A., MONAKOV A.V. Detecting Potentially Clobbered Variables due to the Use of Nonlocal Jumps Functions. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2023;35(6):121-134. (In Russ.) https://doi.org/10.15514/ISPRAS-2023-35(6)-7



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


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