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