Слепые зоны статанализа: LLM для поиска новых уязвимостей
Инструменты статанализа программы опираются на потоки данных: отслеживают источники данных (места, где пользователь может что-то внедрить) и приёмники (места, где введенные данные используются приложением). Известная проблема: классические инструменты анализа теряют след в потоке данных, когда используются специфические особенности языков программирования. Например, при многопоточности данные переходят из одного потока в другой, и таким образом анализатор теряется. А от использования механизмов рефлексии и динамического вызова методов статический анализатор вообще слепнет.
Исследователи из Tencent решили эту проблему с помощью кастомного анализатора потоков данных и LLM. Кастомный анализатор давал что-то вроде шпаргалки, куда передаются данные и где они всплывают, чтобы поток не терялся. LLM искала источники и стоки данных, фильтровала мусор и классифицировала функции для исследователей.
Хорошая идея, как можно улучшить свой анализатор, научить его видеть новые места в программе и в итоге, найти больше уязвимостей.
//ссылки в комментариях