Метод поиска уязвимостей в бинарном коде
Люблю и иногда практикую фаззинг для поиска дефектов в ПО. Если сегодня взять какой-нибудь непопулярный таргет, подготовить стенд и запустить тесты, то к концу праздничной недели можно найти пачку интересных уязвимостей.
В дополнение к уже известным техникам добавилось свежее исследование, которое точно нужно воспроизвести: “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%. Отлично! Осталось подобрать интересные таргеты.