Объединенная группа исследователей из научно-исследовательской компании Draper и Бостонского университета разработала новую систему, используя алгоритмы машинного обучения, которые могут быстрее и эффективнее помогать при выявлении уязвимостей программного обеспечения.
Хакеры и злоумышленники постоянно придумывают новые способы взлома сетевых систем и приложений, как правило, используя уязвимости программного обеспечения. Слабыми местами могут стать небольшие ошибки, допущенные программистами, которые разработали систему. Они могут быстро распространяться, особенно через ПО с открытым исходным кодом или за счет повторного использования кода и адаптации.
Каждый год тысячи таких уязвимостей публикуются в базе данных Common Vulnerabilities and Exposures (CVE), а многие другие выявляются и исправляются самими разработчиками. Если эти проблемы не будут решены надлежащим образом, уязвимости могут быть использованы злоумышленниками, зачастую с катастрофическими последствиями, как показали последние громкие события, такие как ошибка Heartbleed и сетевой червь WannaCry.
Как правило, существующие инструменты для анализа программ могут выявить лишь ограниченное количество потенциальных ошибок на основе заданных правил. Однако широкое использование открытых репозиториев открыло новые возможности для разработки методов, которые могли бы выявлять коды моделей уязвимости.
Новый инструмент исследователей из компании Draper и Бостонского университета использует машинное обучение для автоматизированного обнаружения уязвимостей в коде C/C++, который уже показал многообещающие результаты.
Команда собрала большую базу данных с миллионами функций с открытым исходным кодом и пометила его с помощью трех статических инструментов, а именно Clang, Cppcheck и Flawfinder, которые предназначены для выявления потенциальных эксплойтов.
«Используя эти наборы данных, мы разработали быстрый и масштабируемый инструмент обнаружения уязвимостей, основанный на глубоком изучении представления функций, который напрямую интерпретирует лексический исходный код», - говорят исследователи.
Поскольку языки программирования в некотором роде похожи на человеческие языки, исследователи разработали метод обнаружения уязвимостей, который использует обработку естественного языка (NLP) — стратегию ИИ, которая позволяет компьютерам понимать и интерпретировать человеческий язык.
Результаты показывают, что глубокое представление функций в исходном коде является многообещающим подходом к автоматическому обнаружению уязвимости программного обеспечения. Работа исследователей в основном была сосредоточена на коде C / C ++, но их метод также можно применять к любому другому языку программирования.
Комментарии
(0) Добавить комментарий