Google хочет обновлять Chrome без полного перезапуска браузера

Компания Google опубликовала обширный материал, описывающий роль искусственного интеллекта и больших языковых моделей (LLM) в обеспечении безопасности Chrome.

Хотя у Google уходит 1–2 дня на три, исправление, тестирование и выпуск патча, «время, потраченное на ожидание перезапуска Chrome пользователем, может стать значительным фактором риска эксплуатации уязвимостей «дня N»» (или промежутка времени до установки патча).

Признавая неудобства, связанные с необходимостью перезагрузки, Google инвестирует в «динамическое сопоставление», чтобы «в большинстве случаев исключить необходимость полного перезапуска браузера». Это работает путем замены «фоновых дочерних процессов (таких как рендерер и графический процессор) обновленными бинарными файлами „на лету“». Такой подход использует многопроцессную архитектуру Chrome.

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

До тех пор Google ищет «подходящие моменты для автоматического перезапуска, когда мы можем гарантировать бесшовное восстановление сеанса». В Chrome 150 для Mac компания Google будет автоматически перезапускать браузер при наличии ожидающего обновления и отсутствии открытых окон пользователя. 

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

Google также рассказала о своем новейшем опыте использования LLM для поиска ошибок, который начался в 2023 году. Ранее в этом году компания создала агентский комплекс, использующий Gemini и другие модели для «поиска уязвимостей в общей кодовой базе Chrome с более высокой эффективностью и меньшим количеством ложных срабатываний». Одной из примечательных находок стала ошибка, которая присутствовала в кодовой базе на протяжении 13 лет. 

Что касается безопасности, были раскрыты некоторые интересные подробности процесса:

  • «Наш ИИ анализирует исходный код исключительно в статичном состоянии, работая на изолированных машинах, не имеющих общего доступа в интернет».
  • «Мы также используем специальную настройку для этих внутренних сканирований, которая перехватывает все сетевые запросы, применяя строгие списки разрешений на основе инициирующего приложения и пункта назначения, блокируя любую подозрительную активность моделей».
  • «Более того, мы никогда не запускаем модели в неограниченном режиме и строго ограничиваем наши субагенты в изменении локальной системы или доступе к файлам за пределами назначенных директорий исходного кода».
  • «Мы годами тесно сотрудничаем с Google DeepMind и Project Zero, в том числе над проектами BigSleep и CodeMender. Эти инструменты нативно интегрированы в нашу систему непрерывной интеграции (CI) и запускаются каждые 24 часа для всех CL (списков изменений) с целью упреждающего обнаружения ошибок безопасности. Эта интеграция принесла значительные результаты: только в мае мы предотвратили попадание в продакшн более 20 уязвимостей, включая критическую проблему уровня S1+».

Для устранения уязвимостей теперь используется многоагентный рабочий процесс, в рамках которого LLM генерируют варианты исправления для большинства из них:

  1. После начальных этапов сборки, которые привносят контекст из конкретной проблемы, мы запускаем агент исправления, возвращающий несколько вариантов решения.
  2. Затем агент-критик оценивает, какой из них подходит лучше всего, создавая другие релевантные артефакты для оценки исправления разработчиками.
  3. Агенты исправления и критики работают в цикле, имитирующем типичный процесс проверки кода, чтобы убедиться, что код функционален и соответствует рекомендациям стиля Chromium и Google, а также другим локальным стандартам написания кода.
  4. Агенты написания тестов помогают создавать тесты для исправлений. Эти агенты могут гарантировать работоспособность тестов на всем спектре поддерживаемых платформ и конфигураций Chrome до того, как разработчик проверит исправление, экономя до нескольких недель рабочего времени разработчиков.

Этот процесс привел к резкому росту числа исправлений безопасности:

За последние два этапа разработки, Chrome 149 и 150, мы исправили 1072 ошибки безопасности, что превышает общее количество исправленных ошибок безопасности за предыдущие 23 этапа вместе взятые.