Проекты:
К.ф.-м.н. Алексей Бородин, Дмитрий Журихин, Сергей Сыромятников | — Анализ программ на компилируемых языках программирования (C/C++/Java/Kotlin/Go); — Разработка обобщённого AST-анализатора для разных языков программирования (Java/Kotlin/Go); — Девиртуализация вызовов Java/C++ методов; — Анализ программ на динамических языках (Python, JavaScript), в том числе: девиртулиазация вызовов; обобщенный AST-анализа; поддержка межпроцедурного и чувствительного к путям анализа (выведение типов, детекторы и проч); — Разработка детекторов ошибок на основе Clang Static Analyzer; — Разработка детекторов ошибок в программах: использования неинициализированной памяти, целочисленные переполнение, разыменование нулевых указалей, утечки памяти и ресурсов; — Разработка детекторов потенциальных уязвимостей, утечек приватных данных; — Поиск ошибок на уровне классов для C++/Java; — Моделирование коллекций языков Go/Java; — Статическое символьное выполнение и детекторы на его основе; — Методы повторного анализа кода. |
К.ф.-м.н. Валерий Игнатьев, к.т.н. Никита Шимчик, Михаил Беляев | 1. Статический анализ иcходного кода. 1.1 [Svace, SharpChecker] Поиск ошибок в программах на языках платформы .NET (C#, VB.NET): — Разработка детекторов ошибок; — Разработка и улучшение алгоритмов анализа; — Поддержка новых возможностей языка C#, создание API для пользовательских детекторов. 1.2 [Irbis] Поиск уязвимостей в исходном коде на C++. 2. Большие языковые модели (LLM) для анализа исходного кода. 2.1 Верификация предупреждений svace с помощью LLM: — устойчивость предсказаний при эквивалентных мутациях кода; — дообучение небольших (до 1b, 10b) моделей для достижения сопоставимого качества; — агентный подход для предоставления информации об исходном коде. 2.2 Поиск новых типов ошибок при помощи LLM. 3. Методы машинного обучения для поиска ошибок в исходном коде: — Поиск ошибок на основе обобщения (кластеризации) похожих исправлений в истории коммитов в репозитории; — Верификация предупреждений с помощью предобученного классификатора по метрикам кода: поддержка новых языков; — Поиск новых типов ошибок, например, алгоритмических (varmisuse): языково-независимый подход. |