Новости
Об отделе
Работа отдела сконцентрирована в областях параллельного программирования, новых технологий компиляции, обеспечении безопасности систем и данных, в сферах анализа исходного и бинарного кода, а также сетевого трафика. Почти все сотрудники окончили Московский государственный университет им. М.В. Ломоносова (МГУ) или Московский физико-технический институт (МФТИ). Все они начинали свою профессиональную деятельность в группе будучи студентами. В коллективе отдела присутствуют аспиранты (около 5 человек ежегодно) и студенты (около 30 человек ежегодно) МГУ и МФТИ. Помимо научно-образовательной деятельности сотрудники отдела занимаются работой над контрактными проектами.
Основные направления деятельности
- Анализ бинарного кода.
- Анализ исходного кода с целью выявления дефектов.
- Параллельное и распределенное программирование.
- Методы оптимизации компиляторов для современных платформ
Темы исследовательских проектов для студентов
Анализ сетевого трафика
Методы и алгоритмы выделения и анализа данных в сетевом трафике:
- Классификация и анализ P2P-трафика на примере протоколов Bittorrent;
- Изучение и разработка декларативного языка описания протоколов;
- Классификация
и анализ прокси-серверов;
- Исследование и разработка алгоритмов классификации трафика.
- Разработка
универсального API и компоненты (например, «извлечение передаваемых файлов»);
- Разработка
системы автоматического масштабирования по входному потоку;
- Разработка
эффективной системы хранения образцов трафика с настраиваемой индексацией.
Регулярные выражения, конечные автоматы, деревья, графы и их применение к задачам анализа:
- Анализ
автоматов состояний протоколов;
- Построение
и анализ графов взаимодействия;
- Выявление цепочек событий в сетевом трафике.
- Анализ
цепочек сертификатов и ЭЦП;
- Детальный
анализ алгоритмов рукопожатия и обмена ключами;
- Обнаружение
и идентификация туннелей;
- Поведенческий
анализ.
Статический анализ исходного кода
Анализ программ на различных языках программирования (kotlin, C с ассемблерными вставками).
Автоматическое исправление исходного кода на основе
предупреждений, выданных статическим анализатором.
Методы группировки похожих
предупреждений об ошибках.
Девиртуализация вызовов Java/C++ методов.
Разработка AST-детекторов ошибок в компиляторах clang,
javac, kotlin.
Разработка детекторов ошибок использования
неинициализированной памяти и целочисленных переполнений.
Поиск
ошибок и уязвимостей:
- Валидация
результатов анализа помеченных данных с помощью символьного выполнения.
Анализ критичности программных дефектов
Методы автоматизированной оценки критичности программных дефектов:
- Подход к генерации ROP программ, основанный на
алгоритмах машинного обучения;
- Поиск, определение семантики ROP гаджетов и их
комбинация в цепочки, выполняющие произвольные вычисления;
- Обобщение алгоритмов генерации ROP программ для широкого
набора целевых архитектур (JOP и др.).
- Метод анализа атак повторного использования кода.
- Разработка и реализация методов предотвращения
эксплуатации уязвимостей на уровне компиляторов и операционных систем.
Фаззинг и анализ бинарного кода
Фаззинг сетевых протоколов с учётом состояний, фаззинг прошивок микроконтроллеров.
Статический анализ бинарного кода (разработка методов анализа помеченных данных, а также разработка методов поиска и исправления ошибок в бинарном коде на базе анализа известных эксплойтов).
Динамическая символьная интерпретация бинарного кода (для широкого набора целевых архитектур; с целью увеличения покрытия фаззинга).