Компания Google сообщила, что её инструмент для фаззинга на основе ИИ OSS-Fuzz помог выявить 26 уязвимостей в различных репозиториях кода с открытым исходным кодом, в том числе уязвимость средней степени тяжести в криптографической библиотеке OpenSSL.

«Эти конкретные уязвимости представляют собой важную веху в области автоматического поиска уязвимостей: каждая из них была обнаружена с помощью ИИс использованием сгенерированных искусственным интеллектом и улучшенных мишеней для фаззинга», — сообщила команда 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++ не станет полностью безопасным с точки зрения памяти, эти улучшения снижают риски […], что приводит к созданию более надёжного и безопасного программного обеспечения».

Источник

От DTScience

Добавить комментарий