Метод поиска уязвимостей в бинарном коде

Люблю и иногда практикую фаззинг для поиска дефектов в ПО. Если сегодня взять какой-нибудь непопулярный таргет, подготовить стенд и запустить тесты, то к концу праздничной недели можно найти пачку интересных уязвимостей.

В дополнение к уже известным техникам добавилось свежее исследование, которое точно нужно воспроизвести: “BinGo: Identifying Security Patches in Binary Code with Graph Representation Learning”.

Интересный метод поиска security-патчей в бинарном коде приложений. Актуален для тех случаев, когда владелец приложения скрыто исправляет какие-либо уязвимости в своем коде без регистрации CVE или без описания в change log. Помогает выявлять n-day уязвимости.

Метод основан на представлении бинарного файла в виде Code Property Graph - промежуточном представлении кода, изначально разработанном для анализа его безопасности. CPG включает в себя абстрактное синтаксическое дерево, граф потока управления и зависимости данных.

Особенность этого метода заключается в разработанной модели обнаружения security-исправлений, которая сравнивает бинарные файлы до и после исправления. И использует для этого сиамскую нейронную сеть, которая позволяет выделить сходство или различие между бинарями.

Уровень обнаружения security-патчей среди прочих модификаций бинарного кода: 80,77%. Отлично! Осталось подобрать интересные таргеты.

Метод поиска уязвимостей в бинарном коде | Сетка — социальная сеть от hh.ru