Компания Google опубликовала релиз web-браузера Chrome 137. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей RLZ-параметров при поиске. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 138 запланирован на 24 июня.
Основные изменения в Chrome 137:
- В сборки для Windows и macOS интегрирован чатбот Gemini, который может пояснять содержимое просматриваемой страницы и отвечать на связанные со страницей вопросы не переключаясь с текущей вкладки. Поддерживается текстовое и голосовое взаимодействие с Gemini. Работа с чатботом пока доступна только части пользователей из США, имеющих подписки Google AI Pro и Ultra.
- По аналогии с ранее реализованным сегментированием хранилища, обеспечена изоляция обработки URL-схемы “blob:“, предназначенной для доступа к локально сгенерированным данным через API Blob или File. При сегментировании к ключу, применяемому для извлечения объектов, прикрепляется отдельный признак, определяющий привязку к первичному домену, с которого открыта основная страница, что позволяет блокировать методы отслеживания перемещений пользователя между сайтами через манипуляцию с URL “blob:”.
- В режиме расширенной защиты браузера (Safe Browsing > Enhanced protection) активирована возможность использования большой языковой модели для определения мошеннических страниц по их содержимому. AI-модель выполняется на стороне клиента, но в случае выявления подозрений на сомнительный контент, выполняется дополнительная проверка на серверах Google. В текущей версии пока производится только сбор информации о проблемных страницах. В следующем выпуске планируется начать выводить предупреждения пользователю.
- Включена защита от скрытой идентификации пользователей при помощи кэша HSTS (HTTP Strict Transport Security). HSTS позволяет сайтам при входе по HTTP перенаправить пользователя на HTTPS. В процессе работы имя хоста, выставленного через HSTS, сохраняется во внутреннем кэше, что позволяет использовать факт присутствия или отсутствия хоста в кэше для хранения одного бита информации. Для скрытого хранения 32-разрядного идентификатора пользователя можно использовать массив из 32 изображений, отдаваемых с разных хостов по HTTP (https://bit0.example.com/image.jpg, https://bit1.example.com/image.jpg и т.п.). Определение идентификатора производится путём проверки с каких хостов изображения загрузились по HTTPS, а с каких по HTTP (если изображения были отданы ранее по HTTP и через HSTS перенаправлены на HTTPS, то при последующих запросах они сразу будут загружены с HTTPS, минуя обращение по HTTP). Защита сводится к разрешению обновления HSTS только для ресурсов верхнего уровня и блокировке обновления HSTS в запросах субресурсов.
- Для соединений WebRTC реализована поддержка протокола DTLS 1.3 (Datagram Transport Layer Security, аналог TLS для UDP). Поддержка DTLS 1.3 необходима для использования алгоритмов постквантового шифрования в WebRTC.
- Удалена опция командной строки “–load-extension”, позволяющая загружать дополнения. Опция убрана с целью снижения риска её использования для подстановки вредоносных дополнений. Для принудительной загрузки распакованных дополнений рекомендуется использовать кнопку Load Unpacked на странице управления дополнениями (chrome://extensions/) после включения режима для разработчика. В Chromium и тестовых сборках Chrome For Testing поддержка опции “–load-extension” сохранена.
- Решено отказаться от автоматического отката на использование для WebGL системы программной отрисовки SwiftShader, реализующей API Vulkan. В случае отсутствия должного бэкенда на базе GPU создание контекста WebGL теперь будет возвращать ошибку, а не переключаться на SwiftShader. Прекращение использования SwiftShader позволит повысить безопасность, благодаря исключению выполнения сгенерированного JIT-компилятором кода в процессе, отвечающем за взаимодействие с GPU. Для возвращения использования SwiftShader предусмотрена отдельная опция командной строки “–enable-unsafe-swiftshader”. В версии Chrome 137 для пользователей платформ Linux и macOS при использовании SwiftShader в web-консоль будет выводиться предупреждение, а в Chrome 138 откат на Swiftshader будет отключён. Для пользователей Windows система SwiftShader заменена на встроенную в Windows систему программной отрисовки WARP (Windows Advanced Rasterization Platform).
- В настройки добавлена возможность включения функции “Autofill with AI”, упрощающей заполнение web-форм. При включении браузер задействует AI-модель для понимания web-формы и автоматического заполнения полей, отталкиваясь от того, как ранее пользователь заполнял похожие формы.
- В API Web Cryptography добавлена поддержка криптоалгоритмов на базе эллиптической кривой Curve25519, таких как алгоритм формирования цифровых подписей Ed25519.
- Реализовано CSS-свойство “reading-flow”, позволяющее управлять порядком обработки элементов во flex, grid и блочных контейнерах при использовании экранных ридеров и при последовательной навигации. Также добавлено свойство “reading-order”, дающее возможность вручную переопределять порядок элементов.
- В CSS предложена функция “if()“, предназначенная для выбора значений в зависимости от результата выполнения условных выражений. В качестве аргумента передаётся разделённый точкой с запятой список пар “условие:значение”. Функция перебирает эти пары и останавливается при первом сработавшем условии. Например: “background-color: if(style(–color: white): black; else: white);”.
- В CSS-свойстве offset-path реализована функция shape() для формирования фигур при помощи команд, эквивалентных функции path(), но позволяющих использовать для них стандартный синтаксис CSS.
- Добавлен API JSPI (JavaScript Promise Integration), обеспечивающий интеграцию WebAssembly-приложений с JavaScript-объектом Promise и позволяющий WebAssembly-программам выступать в роли генератора Promise и взаимодействовать с API на базе Promise.
- В API CanvasRenderingContext2D, OffscreenCanvasRenderingContext2D и ImageData добавлена поддержка пиксельных форматов, использующих значения с плавающей запятой для представления составляющих цвета.
- В режиме Origin trials предложены экспериментальные API Rewriter и Writer, позволяющие переделывать (например, более кратко излагать суть или менять стиль повествования) или генерировать текст при помощи больших языковых моделей.
- В инструменты для web-разработчиков добавлена возможность привязки к рабочим пространствам, позволяющая сохранять в локальных файлах изменения, добавленные в JavaScript, HTML и CSS при работе со встроенными в браузер инструментами. Расширены возможности AI-ассистента, который может изменять CSS и анализировать производительность.
Кроме нововведений и исправления ошибок в новой версии устранены 1 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 8 премии на сумму 7500 долларов США (по одной премии в $4000, $2000, $1000 и $500). Размер четырёх вознаграждений пока не определён.