Новости
14 Августа, 2025
Конкурс на замещение должности
03 Июля, 2025
Конкурс на замещение должности
20 Июня, 2025
Конкурс на замещение должности
Об отделе
Отдел специализируется на решении широкого спектра задач в области анализа программ – в частности, на исследовании методов и разработке инструментов автоматического анализа. Помимо научно-образовательной деятельности сотрудники отдела занимаются работой над контрактными проектами.
Основные направления деятельности
Статический анализ исходного кода программ:
- Исследование методов статического анализа программ по исходному коду с целью обнаружения дефектов и уязвимостей в программах.
- Исследование методов автоматического преобразования программ.
- Разработка специализированных языков описания ошибок и уязвимостей в программах.
- Разработка инструментов статического анализа исходного кода программ.
Динамический анализ программ:
- Исследование методов динамического анализа программ.
- Разработка инструментов динамического анализа программ с целью обнаружения критических дефектов и уязвимостей.
- Разработка инструментов профилирования использования памяти и производительности программ.
Темы исследовательских проектов для студентов
В рамках исследовательских работ студенты могут изучить:
- методы построения и реализации современных инструментов динамического символьного исполнения программ;
- современные технологии создания кросс-платформенных приложений (Windows, Linux);
- современные языки программирования на языках C, C++, Python, JavaScript и их применение при создании программ;
- современные методы разработки архитектуры приложения;
- гибкие методологии разработки программ и их применение на практике.
- Сбор трассы для многопоточных приложений. Распространение пометок по потоку инструкций и данных программы для многопоточных приложений. В рамках данной работы можно изучить методы анализа многопоточных приложений, узнать, что такое анализ потока помеченных данных программы, и применить данные техники для обнаружения ошибок времени исполнения в многопоточных программах.
- Построение срезов по переменным для ограничения помеченности потока данных. В рамках данной работы можно познакомиться с анализом потока помеченных данных, а также с применением техники построения срезов программы для решения задачи избежания избыточной помеченности потока данных программы с целью эффективного обнаружения ошибок времени исполнения программы.
- Обнаружение ошибок утечки ресурса (памяти, дескриптора файла и др.). В рамках данной работы на основе современного инструмента динамического символьного исполнения можно построить анализатор программы, обнаруживающий ошибки утечки различных ресурсов операционной системы.
- Обнаружение ошибок двойного освобождения памяти (double free) и использования неинициализированного указателя (dangling pointer, use after free). В рамках данной работы на основе современного инструмента динамического символьного исполнения можно построить анализатор программы, обнаруживающий ошибки двойного освобождения памяти на куче, использования неинициализированного указателя и использования памяти после освобождения.
- Анализ уникальности найденных критических ошибок. В рамках данной работы можно познакомиться с методами динамического символьного исполнения программ для обнаружения уникальных трасс реализации ошибок в программе с целью обобщения набора внешних данных программы, приводящих к сбою в работе программы.
- Обнаружение циклов и формирование инвариантов циклов в процессе символьного анализа программ. В рамках данной работы студентам предстоит разработать алгоритмы обнаружения циклов и параметров циклов для обобщения цикла в виде символьной формулы, описывающей его исполнение в программе с целью обнаружения ошибок нарушения границ выделенных буферов при обращении к памяти.
- Кэширование состояний/инструкций в процессе динамического символьного исполнения программ для повышения производительности анализа. В рамках данной работы можно познакомиться с ограничениями метода динамического символьного исполнения программ и способами преодоления данных ограничений для реализации алгоритмов увеличения производительности динамического символьного исполнения программ.
- Реализация модуля построения трассы для найденной ошибки в терминах бинарного и исходного кода. В рамках данной работы можно познакомиться с устройством отладочной информации программы с целью представления результатов обнаруженной ошибки в исполняемом коде в виде стека вызовов и в терминах исходного кода программы. Кроме того, можно научиться работать с отладочной информацией в формате DWARF и PDB.
- Пользовательский интерфейс для запуска, отслеживания и представления результатов динамического анализа программ в виде Web-сервера. В рамках данной работы студенты смогут разработать Web-интерфейс для инструментов динамического анализа программ, который позволяет настраивать, запускать, отслеживать состояние анализа программы и предоставлять результаты анализа в удобной для аналитика форме.
- Применение полносистемных эмуляторов для реализации динамического символьного исполнения программ. В рамках данной работы можно познакомиться с современными методами эмуляции современных вычислительных систем QEMU и применения эмулятора для целей динамического анализа программ.