В статье отображены результаты исследования, в ходе которого были выявлены шаблоны участков кода, подозрительных на наличие закладок, и разработаны механизмы их обнаружения. Предложены два подхода к реализации алгоритмов поиска закладок. Первый подход ориентируется на анализ методом поиска по шаблонам и позволяет эффективно искать простые закладки в любом языке программирования. Второй — опирается на более сложные алгоритмы анализа, учитывающие специфику конкретного языка программирования. В статье предлагается собственный язык записи правил поиска закладок, который позволяет описывать сложные дефекты, связанные с анализом потока данных, и описывается реализация модуля применения правил к промежуточному представлению на примере языка Java.
< ... >
Paper conducted a study in which they formulated code patterns that are suspicious as backdoors, and developed a mechanism for their detection. This paper proposes two approaches to implementing backdoor detection algorithms. The first approach focuses on the detection method based on pattern matching, which efficiently detects simple backdoors in any programming language. The second — is based on more complex analysis algorithms, which take into account the specifics of a particular programming language. The article proposes a custom language for storing backdoor detection rules, which allows describing complex code defects associated with data flow analysis. The article describes the implementation of a module that applies the rules to the intermediate representation by the example of the Java language.
Keywords:
software security, static analysis, compiler, pattern matching, data flow analysis, control flow analysis, internal representation, vulnerability, backdoor, timebomb, hardcoded credentials, data entropy