Инструменты OSS-Fuzz на основе искусственного интеллекта могут помочь обнаружить уязвимости и объединить их с автоматизированными конвейерами исправлений.
Фазз-тестирование может быть ценным инструментом для поиска уязвимостей нулевого дня в программном обеспечении. Чтобы побудить разработчиков и исследователей использовать его, Google объявил в среду, что делает свою среду фазз-тестирования OSS-Fuzz доступной бесплатно.
По мнению Google, ощутимого улучшения безопасности можно добиться, используя платформу для автоматизации нечеткого тестирования с помощью больших языковых моделей (LLM). «Мы используем LLM для написания кода для конкретного проекта, чтобы улучшить охват нечетким тестированием и найти больше уязвимостей», — Донге Лю и Оливер Чанг, члены группы безопасности открытого исходного кода Google, а также Ян Новаковски и Ян Келлер, члены группы безопасности машинного языка. сказал в блоге компании написал.
Они отмечают, что на данный момент OSS-Fuzz и его улучшенная стратегия фаззинга, созданная LLM, позволили Google обнаружить две новые уязвимости в cJSON и libplist, хотя эти два широко используемых проекта фаззингулись уже много лет. Они добавили, что без кода, полностью созданного LLM, обе уязвимости было бы трудно обнаружить и исправить.
«Нечеткое тестирование существует уже несколько десятилетий и становится все более популярным благодаря его успеху в обнаружении ранее неизвестных уязвимостей нулевого дня», — сказал Джон Мак Шейн, старший менеджер по продуктам безопасности в Synopsys Software Integrity Group, компании, оптимизированной для поставщика платформы безопасности DevSecOps. «Печально известная уязвимость Heartbleed была обнаружена инженерами по безопасности с помощью коммерческого продукта для фазз-тестирования Defensics. "
Фазз-тестирование может выявить множество «легко висящих плодов», но оно также может выявить некоторые важные элементы, такие как переполнение буфера, добавила Гизела Инохоса, директор службы кибербезопасности компании Cobalt Labs, занимающейся тестированием на проникновение. «Поскольку нечеткое тестирование — это автоматизированный тест, никакого дополнительного участия человека не требуется», — сказала она. «Он просто делает свое дело, и вам не о чем беспокоиться. Это относительно простой способ найти уязвимости.
Однако Шейн Миллер, советник Rust Foundation и старший научный сотрудник Атлантического совета, аналитического центра по международным делам и экономике в Вашингтоне, округ Колумбия, предупредил, что «инвестиции в инструменты динамического тестирования, такие как нечеткое тестирование, не заменяют разработку систем безопасности». стратегии, такие как выбор языка программирования, безопасного для памяти, но они являются мощным инструментом для повышения безопасности программного обеспечения.
Миллер добавил: «Нечеткое тестирование расширяет тестирование за счет изучения поведения программного обеспечения с неожиданными входными данными, которые могут выявить уязвимости, как, например, в недавних кибератаках, спонсируемых государством, нацеленных на водоочистные сооружения, электросети, нефте- и газопроводы и транспортные узлы США. Использованные уязвимости.
Хотя фазз-тестирование полезно для разработчиков, его аспект ручной проверки всегда мешал сопровождающим с открытым исходным кодом эффективно фаззить свои проекты — проблему, которую Google надеется решить, сделав свою структуру фазз-тестирования свободно доступной. «Поскольку специалисты по сопровождению открытого исходного кода часто являются добровольцами, у которых нет или ограничены средства, тратить время и оплачивать затраты на использование ресурсоемких инструментов не всегда возможно», — сказал Майкл Дж., генеральный директор компании по обеспечению безопасности цепочки поставок программного обеспечения Dark Sky Technology .Mehlberg. сказал.
«Даже в этом случае, — продолжил Мельберг, — инструменты нечеткого тестирования могут усложнить простую в остальном среду сборки, потенциально генерируя большое количество ложных срабатываний, создавая необходимость проверки и анализа для и без того растянутой команды и потенциально создавая проблемы из-за сетевых действий, которые невозможно из-за недостаточных навыков или опыта в области безопасности.
Безопасность — наиболее важный аспект устранения уязвимостей.
Google также предоставляет разработчикам и исследователям рекомендации по созданию автоматизированных конвейеров исправлений с использованием LLM. «Этот подход к исправлению ошибок, основанный на искусственном интеллекте, устраняет 15% целевых ошибок, экономя инженерам значительное время», — написали в своем блоге члены команды безопасности Google.
Хотя использование LLM для автоматизации установки исправлений является интересной идеей, Инохоса отметил, что проблема заключается в том, обладает ли LLM всеми контекстными знаниями, необходимыми для эффективного исправления, не ломая что-либо. «Я думаю, что это хорошая идея, чтобы автоматизированные системы предлагали исправления, но чтобы люди вручную проверяли их перед внедрением.
«В целом, самая важная часть установки исправлений — это не автоматизация, а безопасность», — добавил Дэйв (Цзин) Тиан, доцент кафедры информатики в Университете Пердью. «Оказывается, доказать, что патч делает именно то, что он должен делать, непросто», — сказал он. «Итак, на данный момент только ограниченное количество категорий уязвимостей может быть автоматически исправлено. Эти исправления просты, например, замена 32-битного целого числа переменной на 64-битное целое число. Для более сложных исправлений нам все еще нужны и должны требовать от экспертов в предметной области проверки исправлений после их автоматического внедрения ИИ.
Адрес проекта oss-fuzz-gen:https://github.com/google/oss-fuzz-gen
Источник статьи: csoonline