Глубокое обучение успешно применили для поиска ошибок в коде ПО

Как правило, существующие инструменты для анализа кода программ могут обнаруживать ограниченное количество возможных ошибок, основываясь на заранее заложенных правилах. Но широкое распространение открытых репозиториев исходного кода и прогресс технологий искусственного интеллекта открывают новые возможности для разработки методов эффективного детектирования признаков уязвимости в коде.

Исследователи из фирмы Draper и Бостонского университета использовали алгоритмы машинного обучения для повышения эффективности и быстродействия созданного ими лексического анализатора исходного кода C/C++.

Они объединили технологию обработки естественного языка (Natural Language Processing, NLP) на основе свёрточных нейронных сетей и мощный алгоритм Случайный Лес (Random Forest, RM), который строит деревья решений на базе произвольно выбранных подмножеств тренировочного набора данных.

Для тренировки системы был скомпилирован массив, включающий миллионы функциональных примеров исходного кода C и C++, взятых из дистрибутива Debian Linux, тестового пакета SATEIV Juliet и публичных репозиториев на GitHub.

«Используя эти наборы данных, мы разработали быстрый и масштабируемый инструмент обнаружения уязвимостей, основанный на глубоком изучении представления функций, который напрямую интерпретирует лексический исходный код», — пишут исследователи в своей статье, выложенной на arXiv.org.

Испытания системы на реальных программных пакетах и на эталонном наборе данных NIST STATE IV продемонстрировали, что глубокое обучение на исходном коде является перспективным подходом для автоматизации выявления уязвимостей ПО.

Пожалуйста, оцените статью:
Ваша оценка: None Средняя: 4.3 (4 votes)
Источник(и):

ko.com.ua