Релиз Chrome 88

Компания Google представила релиз web-браузера Chrome 88. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента (DRM), системой автоматической установки обновлений и передачей при поиске RLZ-параметров. Следующий выпуск Chrome 89 запланирован на 2 марта.

Основные изменения в Chrome 88:

  • Для небольшого процента пользователей включена поддержка профилей для разделения учётных записей пользователей. Пользователь может создать новый профиль Chrome и настроить его активацию при подключении к определённой учётной записи в Google, что позволит разным пользователям разделять свои закладки, настройки и историю посещений. При попытке входа в учётную запись, привязанную к другому профилю, пользователю будет предложено переключиться на этот профиль. При наличии у пользователя привязки к нескольким профилям, будет предоставлена возможность выбора желаемого профиля.
  • В состав включена третья редакция манифеста Chrome, которая пока предложена опционально. Разработчикам предоставлена возможность создания дополнений с использованием Manifest V3, но поддержка дополнений, использующих вторую версию манифеста, какое-то время будет сохранена. Дата прекращения поддержки Manifest V2 пока не определена, но период миграции на новый манифест продлится как минимум год. Манифест Chrome определяет возможности и ресурсы, предоставляемые дополнениям. Новый манифест разработан в рамках инициативы по усилению безопасности, конфиденциальности и производительности дополнений. Главной целью вносимых изменений является упрощение создания безопасных и высокопроизводительных дополнений, и усложнение возможности создания небезопасных и медленных дополнений. Обратной стороной нового манифеста является нарушение работы многих дополнений для блокирования нежелательного контента и обеспечения безопасности из-за ограничений в использовании блокирующего режима работы API webRequest.
  • С целью блокирования утечки поисковых ключей через DNS, по умолчанию прекращена обработка ввода отдельных слов в адресной строке как потенциальных сайтов. До сих пор, в случае ввода одного слова в адресной стоке, браузер вначале пытался в DNS определить наличие хоста с таким именем, полагая, что пользователь пытается открыть поддомен, и уже потом перенаправлял запрос поисковой системе. Таким образом, владелец DNS-сервера, указанного в настройках пользователя, получал сведения о состоящих из одного слова поисковых запросах, что оценивалось как нарушение конфиденциальности. Для предприятий, использующих интернет-хосты без поддомена (например, “https://helpdesk/”) предоставлена опций для возвращения старого поведения.
  • Для небольшого процента пользователей предложен новый ненавязчивый интерфейс подтверждения полномочий, в котором запросы на подтверждение показываются в адресной строке перед доменом, не отвлекая пользователя. В отличие от ранее применявшихся запросов, новый интерфейс не требует мгновенного решения и остаётся на виду, давая возможность подтвердить или блокировать полномочия при возникновении необходимости.

  • Проведена модернизация менеджера паролей. Добавлена кнопка для проверки сохранённых паролей на надёжность с возможностью быстрой смены небезопасных паролей. Реализован интерфейс для смены паролей сразу для нескольких учётных записей, связанных с одним сайтом.

  • Добавлена экспериментальная поддержка быстрого поиска вкладок, которая ранее была ограничена версией для Chrome OS. Пользователь может просмотреть список всех открытых вкладок и быстро отфильтровать нужную вкладку, независимо от того в текущем или другом окне она находится. Для включения поиска вкладок можно использовать флаг “chrome://flags/#enable-tab-search”.
  • Расширена защита от небезопасной отправки форм ввода на страницах, загруженных по HTTPS, но отправляющих данные по HTTP. Предупреждение о потенциальном риске передачи данных через незашифрованный канал связи при отправке смешанной формы теперь выводится не в виде индикатора, а в форме отдельной промежуточной страницы, требующей подтверждения выполняемого действия. Изначально новое предупреждение было добавлено в один из прошлых выпусков, но сразу отменено из-за всплывших проблем с редиректами. Теперь эти проблемы решены и предупреждение выводится не только при прямой отправке формы по “https://”, но и при попытке редиректа на “https://” с использованием кодов 307 и 308, допускающих проброс данных POST-запроса.
  • На платформе Android для определённого процента пользователей реализована новая кнопка с микрофоном, показываемая в верхней панели, рядом с адресной строкой. Кнопка позволяет через Google Assistant прочитать текущую страницу или перевести на другой язык.
  • Для всех пользователей включён режим урезания активности фоновых вкладок (“Tab Throttling”), который в прошлом выпуске был предложено небольшому проценту пользователей. Браузер теперь отдаёт приоритет активным вкладкам и ограничивает потребление CPU фоновыми вкладками, снижая интенсивность пробуждения процессора. В соответствии с собранной статистикой около 40% потребления ресурсов при вызове таймеров JavaScript приходилось на фоновые вкладки. Подобные вкладки после пяти минут нахождения в фоне теперь могут активироваться не чаще одного раза в минуту, за исключением операций воспроизведения мультимедийного содержимого, обработчиков сетевых событий и поступивших уведомлений, активных потоков RTCDataChannel и MediaStreamTrack. Проведённое тестирование показало, что внесённые изменения при наличии большого числа открытых вкладок позволили до 5 раз снизить нагрузку на CPU и продлить время автономной работы более чем на час.
  • Для всех пользователей на страницу, показываемую при открытии новой вкладки, добавлены информационные карты, помогающие найти недавно просматриваемый контент и связанную с ним информацию. Карты призваны упростить продолжение работы с информацией, просмотр которой был прерван. Например, карты помогут найти рецепт блюда, который недавно был найден в сети, но утерян после закрытия страницы, продолжить выбор покупок в магазинах или вернуться к просмотру прерванного видео.
  • Для пользователей, входящих в учётную запись Google, предоставлена возможность доступа к методам платежей и паролям, сохранённым в учётной записи Google, без включения Chrome Sync.
  • Обеспечена приостановка вывода web-уведомлений при показе презентации и предоставлении совместного доступа к экрану. Накопившиеся уведомления будут показаны после завершения сеанса совместного доступа.
  • Прекращена поддержка протокола FTP. Постепенное урезание поддержки FTP началось ещё в Chrome 63, а в Chrome 77 поддержка FTP была отключена по умолчанию для 50% пользователей, но был оставлен флаг для её возвращения. В Chrome 88 поддержка FTP полностью отключена.
  • Удалён код, связанный с обработкой Flash-контента. Поддержка Flash Player компанией Adobe была официально прекращена 31 декабря. Предприятиям, которым необходима поддержка Flash, предложено воспользоваться отдельным сервисом HARMAN.
  • Удалён код для поддержки протокола DTLS 1.0 (Datagram Transport Layer Security), основанный на TLS 1.1 и использовавшийся в WebRTC для передачи звука и видео. Вместо DTLS 1.0 рекомендуется использовать DTLS 1.2, основанный на TLS 1.2 (спецификация DTLS 1.3 на базе TLS 1.3 ещё не готова).
  • В Chrome Web Store прекращена поддержка дополнения Legacy Browser Support (LBS), обеспечивающего совместимость со старыми дополнениями. Функциональность LBS теперь встроена в Chrome.
  • Прекращена поддержка Google Cloud Print и убрана возможность сохранения в Google Drive со страницы управления выводом на печать (пользователям отныне потребуется осуществить печать в PDF и затем вручную загружать результат в Google Drive в при помощи меню “New > File upload” на сайте drive.google.com).
  • Прекращена поддержка платформы OS X 10.10 (Yosemite), выпущенной в 2014 году. В качестве минимальной версии macOS заявлен выпуск OS X 10.11 (El Capitan).
  • Достигла финальной стадии инициатива по блокированию небезопасной загрузки (без шифрования) контента. В новой версии реализована блокировка небезопасной загрузки мультимедийных данных, текстовых файлов и изображений. Блокировка реализована, так как загрузка файлов без шифрования может использоваться для совершения вредоносных действий путём подмены содержимого в процессе MITM-атак. Ранее была включена блокировка небезопасной загрузки исполняемых файлов, архивов (zip, iso и т.п.) и документов (docx, pdf и т.п.). Для платформы Android введение ограничений отстаёт на один релиз, т.е. в нынешнем выпуске включена блокировка документов.

  • В режиме Origin Trials (экспериментальные возможности, требующие отдельной активации) добавлено несколько новых API, которые пока ограничены платформой Android. Origin Trial подразумевает возможность работы с указанным API из приложений, загруженных с localhost или 127.0.0.1, или после прохождения регистрации и получения специального токена, который действует ограниченное время для конкретного сайта.
    • API Digital Goods для упрощения организации покупок из web-приложений. Обеспечивает связывание с сервисами распространения товаров, в Android
      предоставляет обвязку над API Android Play Billing.
    • В сеансы на базе WebXR для дополненной реальности добавлена возможность определения параметров окружающего освещения для придания моделям более естественного вида и более гармоничной интеграции с окружением пользователя.
    • Механизм Idle Detection для определения неактивности пользователя, позволяющий определять время, когда пользователь не взаимодействует с клавиатурой/мышью, запущен хранитель экрана, экран заблокирован или работа выполняется на другом мониторе. Информирование приложения об неактивности осуществляется через отправку уведомления после достижения заданного порога неактивности.
  • Стабилизирован и теперь распространяется вне Origin Trials метод Performance.measureMemory() для оценки потребления памяти при обработке web-приложения или web-страницы. Может использоваться для анализа и оптимизации потребления памяти в web-приложениях, а также для выявления регрессивного роста потребления памяти.
  • В API PointerLock стабилизирован флаг unadjustedMovement, при установке которого данные о событиях о движении мыши передаются в чистом виде, без корректировок и ускорения. Например, применение unadjustedMovement даёт возможность обеспечить более качественное движение в шутерах от первого лица.
  • Ссылки с атрибутом target=”_blank” в теге теперь обрабатываются по аналогии с использованием атрибута rel=”noopener”, т.е. воспринимаются как не заслуживающие доверия страницы. Для открытых по данным ссылкам страниц не выставляется свойство Window.opener и не открывается доступ к контексту из которого была открыта ссылка. Изменение позволяет блокировать атаки “tab-napping”, при которых новая вкладка или окно, может обращаться к контексту исходной страницы, с которой была открыта ссылка.
  • Улучшены стили, предлагаемые по умолчанию при активации тёмных тем оформления. Добавлены тёмные стили элементов форм и полос прокрутки, применяемые при выборе в операционной системе тёмной темы. Для упрощения настройки стилей для различных режимов отображения предложено CSS-свойство color-scheme и одноимённый мета-тег.
  • В addEventListener() добавлена опция “signal”, позволяющая прикрепить обработчик AbortSignal, созданный при помощи вызова AbortController, для отмены подписки на события.
  • Добавлено CSS-свойство aspect-ratio для явной привязки коэффициента соотношения сторон к любому элементу, который будет учитываться при автоматическом вычислении размеров. Предложенное свойство позволяет добиться автоматического вычисления недостающего размера при указании только высоты или ширины. Ранее подобное было возможным только для изображений, а при помощи свойства aspect-ratio может применяться для любых других элементов, например, для подгонки iframe под указанную высоту или ширину.
  • В CSS-псевдокласс :not() добавлена поддержка сложных селекторов. Например: “:not(.a + .b .c)”.
  • В метод ElementInternals добавлен атрибут shadowRoot, позволяющий из собственных элементов обращаться к своему отдельному корню в Shadow DOM, независимо от состояния. Кроме того, в добавлены дополнительные ограничения в метод attachInternals(), который теперь будет генерировать исключение, при попытке вызова конструктора для создаваемого элемента.
  • В методе WakeLock.request() параметр “type” переведён в категорию необязательных и по умолчанию выставляется в значение “screen”.
  • Добавлена возможность более гибкого управления ключами для изоляции в отдельных процессах. Изоляция подразумевает вынос обработчиков контента в отдельные процессы в привязке к источнику (origin – домен+порт+протокол), а не сайту, т.е. позволяет организовать разделение по разным процессам на основе домена ресурса, а не сайта со всеми посторонними включениями на страницах. Предложенное изменение позволяет управлять помещением в отдельные процессы синхронно выполняемых скриптов, манипулирующих значением document.domain, или вызовов postMessage() с экземплярами WebAssembly.Module.
  • Добавлена поддержка типа SharedArrayBuffer, который может использовать в окружениях, изолированных в отдельных процессах при помощи механизмов Cross-Origin-Embedder-Policy и Cross-Origin-Opener-Policy. Для атомарного доступа к объектам SharedArrayBuffer предложен объект Atomics.
  • В CSS-свойстве clip-path добавлена возможность определения ограничивающей видимость области, заданной при помощи функции path() в формате контура SVG. Например “clip-path: path(oddeven, ‘M 5 5 h 100 v 100 Z’)”.
  • Добавлена поддержка HTTP-заголовка Permissions-Policy, который пришёл на смену HTTP-заголовку Feature-Policy, предназначенному для включения определённых возможностей и управления доступом к API (например, можно включить синхронный режим работы XMLHttpRequest или отключить Geolocation API)
  • В JavaScript-движке V8 реализован экспериментальный RegExp-движок, для включения которого можно использовать флаг “–enable-experimental-regexp-engine”. Движок примечателен использованием алгоритма, работающего без
    возвратов (backtracking), что позволяет добиться линейного изменения времени выполнения, зависящего от размера обрабатываемой строки.
    Текущий движок Irregexp в большинстве ситуаций работает очень быстро, но начинает буксовать при обработке некоторых шаблонов, время выполнения которых сильно зависит от размера входной строки.
  • В инструментах для web-разработчиков примерно на 37% сокращено время запуска. Реализована эмуляция работы в условиях отсутствия поддержки в браузере определённых типов изображений (например, можно отключить AVIF и WebP и проверить сработает ли на сайте замена на PNG). Добавлен новый инструмент для наглядной оценки углов, задаваемых в CSS-свойствах.

    В панели анализа производительности появилась возможность визуализация метрик Core Web Vitals, учитывающих сводные показатели времени загрузки, отзывчивости и стабильности содержимого. В панели отслеживания сетевых операций добавлена сводка о сбоях выполнения запросов, связанных с блокировками CORS (Cross-origin Resource Sharing), а в контекстное меню добавлена опция “Copy value” для копирования отдельных параметров запроса. Добавлены новые возможности для отладки WebAssembly.


    В панели Storage добавлена симуляция исчерпания квоты на размер браузерного хранилища. Расширена информация о Web Worker. В панели Elements обеспечено выделение цветом псевдоэлементов. Представлен экспериментальный отладчик моделей компоновки элементов страницы Flexbox.


Кроме нововведений и исправления ошибок в новой версии устранено 36 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Одна уязвимость (CVE-2021-21117, проблемы с применением ограничений в Cryptohome) помечена как критическая, т.е. позволяет обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 26 премий на сумму 81000 долларов США (одна премия $30000, одна премия $16000, четыре премии $5000, две премии $2000, четыре $1000 и две премии $500). Размер 10 вознаграждений пока не определён.

Release. Ссылка here.