Компания Google представила релиз web-браузера Chrome 107. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей при поиске RLZ-параметров. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 108 запланирован на 29 ноября.
Основные изменения в Chrome 107:
- Добавлена поддержка механизма ECH (Encrypted Client Hello), который продолжает развитие ESNI (Encrypted Server Name Indication) и используется для шифрования информации о параметрах TLS-сеансов, таких как запрошенное доменное имя. Ключевое отличие ECH от ESNI в том, что в ECH вместо шифрования на уровне отдельных полей целиком шифруется всё TLS-сообщение ClientHello, что позволяет блокировать утечки через поля, которые не охватывает ESNI, например, поле PSK (Pre-Shared Key). ECH также использует DNS-запись httpSSVC вместо записи с типом TXT для передачи информации об открытом ключе и применяет для получения и шифрования ключа аутентифицированное сквозное шифрование на основе механизма HPKE (Hybrid Public Key Encryption).
Для управления включением ECH предложена настройка “chrome://flags#encrypted-client-hello”. - Включена поддержка аппаратного ускорения декодирования видео в формате H.265 (HEVC).
- Активирована пятая стадия урезания информации в HTTP-заголовке User-Agent и JavaScript параметрах navigator.userAgent, navigator.appVersion и navigator.platform, реализуемая с целью сокращения информации, которая может использоваться для пассивной идентификации пользователя. В Chrome 107 в строке User-Agent сокращена информация о платформе и процессоре для пользователей настольных систем, а также заморожено содержимое JavaScript-параметра navigator.platform. Изменение заметно только в версиях для платформы Windows, для которой конкретная версия платформы заменена на “Windows NT 10.0”. В Linux содержимое платформы в User-Agent не изменилось.
Ранее составляющие версию браузера цифры MINOR.BUILD.PATCH были заменены на 0.0.0. В дальнейшем в заголовке планируется оставить только сведения о названии браузера, значительной версии браузера, платформе и типе устройства (мобильный телефон, ПК, планшет). Для получения дополнительных данных, таких как точная версия и расширенные данные о платформе, необходимо использовать API User Agent Client Hints. Для сайтов, которым новой информации недостаточно и которые ещё не готовы перейти на User Agent Client Hints, до мая 2023 года предоставлена возможность возвращения полного User-Agent.
- В версии для Android прекращена поддержка платформы Android 6.0, для работы браузера теперь требуется как минимум версия Android 7.0.
- Изменено оформление интерфейса для отслеживания состояния загрузок.
Вместо нижней строки с данными о ходе загрузки в панель с адресной строкой добавлен новый индикатор, при клике на который показывается прогресс загрузки файлов и история со списком уже загруженных файлов. В отличие от нижней панели, кнопка постоянно показывается на панели и позволяет быстро обратиться к истории загрузок. Новый интерфейс пока предложен по умолчанию только части пользователей и будет распространён на всех в случае отсутствия проблем. - Для пользователей настольных систем предоставлена возможность импорта паролей, сохранённых в файле в формате CSV. Ранее пароли из файла в браузер можно было перенести только через сервис passwords.google.com, а теперь это можно сделать и через встроенный в браузер менеджер паролей (Google Password Manager).
- После создания пользователем нового профиля обеспечен вывод приглашения, предлагающего включить синхронизацию и перейти к настройкам, через которые можно изменить имя профиля и выбрать цветовую тему.
- В версии для платформы Android предложен новый интерфейс для выбора мультимедийных файлов для загрузки фотографий и видео (вместо собственной реализации задействован штатный интерфейс Android Media Picker).
- Обеспечен автоматический отзыв разрешения на вывод уведомлений для сайтов, уличённых в отправке мешающих пользователю уведомлений и сообщений. Более того, для подобных сайтов приостановлен вывод запросов на получение полномочий для отправки уведомлений.
- В API Screen Capture добавлены новые свойства, связанные с совместным доступом к экрану – selfBrowserSurface (позволяет исключить текущую вкладку при вызове getDisplayMedia()), surfaceSwitching (позволяет скрыть кнопку для переключения вкладок) и displaySurface (даёт возможность ограничить предоставление совместного доступа вкладкой, окном или экраном).
- В API Performance добавлено свойство renderBlockingStatus для определения ресурсов, из-за которых отрисовка страницы приостановлена до завершения их загрузки.
- В режиме Origin Trials (экспериментальные возможности, требующие отдельной активации) добавлено несколько новых API. Origin Trial подразумевает возможность работы с указанным API из приложений, загруженных с localhost или 127.0.0.1, или после прохождения регистрации и получения специального токена, который действует ограниченное время для конкретного сайта.
- Декларативный API PendingBeacon, позволяющий управлять отправкой на сервер данных, не требующих ответа (beacon). Новый API позволяет делегировать отправку подобных данных браузеру, без необходимости вызова операций отправки в определённое время, например, для организации передачи телеметрии после закрытия пользователем страницы.
- В HTTP-заголовок Permissions-Policy (Feature Policy), применяемый для делегирования полномочий и включения расширенных возможностей, добавлена поддержка значения “unload“, при помощи которого можно отключить обработчики события “unload” на странице.
- В тег добавлена поддержка атрибута “rel”, который позволяет применять к навигации через web-формы параметр “rel=noreferrer” для отключения передачи заголовка Referer или “rel=noopener” для отключения выставления свойства Window.opener и запрета доступа к контексту из которого был выполнен переход.
- В CSS Grid добавлена поддержка интерполяции свойств grid-template-columns и grid-template-rows для организации плавного перехода между разными состояниями сетки.
- Внесены улучшения в инструменты для web-разработчиков. Добавлена возможность настройки горячих клавиш. Улучшено инспектирование памяти объектов приложений C/C++, преобразованных в формат WebAssembly.
Кроме нововведений и исправления ошибок в новой версии устранено 14 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 10 премий на сумму 57 тысяч долларов США (по одной премии в $20000, $17000 и $7000, две премии $3000, три премии $2000 и одна премия $1000). Размер одного вознаграждения пока не определён.