Компания Google объявила, что её инструмент для автоматического тестирования программного обеспечения на основе искусственного интеллекта (ИИ) OSS-Fuzz выявил 26 уязвимостей в репозиториях с открытым исходным кодом. Среди них была обнаружена серьёзная уязвимость в криптографической библиотеке OpenSSL.
«Эти находки представляют собой значительный прорыв в области автоматического обнаружения уязвимостей: каждая из них была обнаружена с помощью ИИ и сгенерированных ИИ целей Fuzz», — сообщили представители Google в блоге, опубликованном The Hacker News.
Уязвимость в OpenSSL, известная как CVE-2024-9143 (рейтинг CVSS: 4,3), представляет собой ошибку записи за пределы памяти, которая может привести к сбою системы или удалённому выполнению кода. Проблема была устранена в версиях OpenSSL 3.3.3, 3.2.4, 3.1.8, 3.0.16, 1.1.1zb и 1.0.2zl.
Google, которая в августе 2023 года добавила возможность использования больших языковых моделей (LLM) для улучшения фаззинга в OSS-Fuzz, заявила, что уязвимость, вероятно, существовала в коде в течение двух десятилетий и не могла быть обнаружена с помощью традиционных человеческих тестов.
Кроме того, компания отметила, что использование ИИ для создания целей фаззинга улучшило покрытие кода в 272 проектах на C/C++, добавив более 370 000 строк нового кода.
«Одна из причин, по которой такие ошибки могли оставаться незамеченными так долго, заключается в том, что покрытие кода не гарантирует отсутствие ошибок в функциях», — заявили в Google. «Покрытие кода как метрика не может охватить все возможные пути и состояния кода, так как разные флаги и конфигурации могут вызывать разное поведение и выявлять разные ошибки».
Эти уязвимости, обнаруженные с помощью ИИ, стали возможны благодаря тому, что LLM-модели хорошо имитируют процесс поиска уязвимостей разработчиками, что позволяет автоматизировать этот процесс ещё больше.
Это произошло после того, как ранее в этом месяце компания сообщила, что её фреймворк Big Sleep на основе LLM помог обнаружить уязвимость нулевого дня в движке баз данных SQLite.
Параллельно с этим Google работает над переводом своих кодовых баз на безопасные для памяти языки, такие как Rust, а также над модернизацией механизмов для устранения уязвимостей, связанных с безопасностью памяти, в существующих проектах на C++, включая Chrome.
Это включает в себя переход на безопасные буферы и внедрение защищённой версии libc++, которая добавляет проверку границ в стандартные структуры данных C++, чтобы устранить значительную часть ошибок, связанных с пространственной безопасностью. Отмечается, что накладные расходы от этих изменений минимальны (в среднем 0,30% снижения производительности).
«Усиленная версия libc++, недавно добавленная разработчиками с открытым исходным кодом, включает набор проверок безопасности для выявления уязвимостей, таких как выход за пределы массива, в рабочей среде», — заявил Google. «Хотя C++ не станет полностью безопасным с точки зрения памяти, эти улучшения снижают риски, что приводит к созданию более надёжного и безопасного программного обеспечения».