Компания Google представила релиз web-браузера Chrome 98. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений и передачей при поиске RLZ-параметров. Следующий выпуск Chrome 99 запланирован на 1 марта.
Основные изменения в Chrome 98:
- В браузер встроено собственное хранилище корневых сертификатов удостоверяющих центров (Chrome Root Store), которое будет использоваться вместо внешних хранилищ, специфичных для каждой операционной системы. Хранилище реализовано по аналогии с независимым хранилищем корневых сертификатов в Firefox, используемом в качестве первого звена для проверки цепочки доверия сертификатов при открытии сайтов по HTTPS. Новое хранилище пока не используется по умолчанию. Для упрощения перевода конфигураций, завязанных на системные хранилища, и для обеспечения переносимости, какое-то время будет действовать переходный период, в течение которого в Chrome Root Store будет включена полная подборка сертификатов, одобренных на большинстве поддерживаемых платформ.
- Продолжается реализация плана по усилению защиты от атак, связанных с запросом ресурсов из локальной сети или компьютера пользователя (localhost) из скриптов, загружаемых при открытии сайта.
Подобные запросы используются злоумышленниками для осуществления CSRF-атак на маршрутизаторы, точки доступа, принтеры, корпоративные web-интерфейсы и другие устройства и сервисы, принимающие запросы только из локальной сети.Для защиты от подобных атак в случае обращения к любым субресурсам во внутренней сети, браузер начнёт отправлять явный запрос полномочия загрузки подобных субресурсов. Запрос полномочий осуществляется через
отправку на сервер основного сайта запроса CORS (Cross-Origin Resource Sharing) с заголовком “Access-Control-Request-Private-Network: true”, перед обращением ко внутренней сети или к localhost. При подтверждении операции в ответ на данный запрос сервер должен вернуть заголовок “Access-Control-Allow-Private-Network: true”. В Chrome 98 проверка реализована в тестовом режиме и в случае отсутствия подтверждения в web-консоли отображается предупреждение, но сам запрос субресурса не блокируется. Блокировку планируется включить не раньше выпуска Chrome 101. - В настройки учётной записи интегрированы средства для управления включением расширенного режима защиты от опасных сайтов (Enhanced Safe Browsing), в котором активируются дополнительные проверки для защиты от фишинга, вредоносной активности и прочих угроз в Web. При активации режима в учётной записи Google теперь будет выводиться предложение активировать режим и в Chrome.
- Добавлена модель для выявления попыток фишинга на стороне клиента, реализованная с использованием платформы машинного обучения TFLite (TensorFlow Lite) и не требующая отправки данных для выполнения проверки на стороне Google (при этом отправляется телеметрия c информацией о версии модели и вычисленных весовых коэфициентах для каждой категории). При выявлении попытки фишинга пользователю перед открытием подозрительного сайта будет показана страница с предупреждением.
- В API Client Hints, развиваемого в качестве замены заголовка User-Agent и позволяющего выборочно отдавать данные о конкретных параметрах браузера и системы (версия, платформа и т.д.) только после запроса сервером, реализована возможность подстановки в список идентификаторов браузера фиктивных названий, по аналогии с используемым в TLS механизмом GREASE (Generate Random Extensions And Sustain Extensibility). Например, помимо ‘”Chrome”; v=”98″‘ и ‘”Chromium”; v=”98″‘ в список может быть добавлен случайный идентификатор несуществующего браузера ‘”(Not;Browser”; v=”12″‘. Подобная подстановка позволит выявлять проблемы с обработкой идентификаторов неизвестных браузеров, которые приводят к тому, что альтернативные браузеры вынуждены притворяться другими популярными браузерами, чтобы обойти проверку по спискам допустимых браузеров.
- Начиная с 17 января в каталог Chrome Web Store перестали приниматься дополнения, использующие вторую версию манифеста Chrome. Новые дополнения теперь будут приниматься только с третьей версией манифеста.
Разработчики ранее добавленных дополнений, как и раньше, смогут публиковать обновления со второй версией манифеста. Полное прекращение поддержки второй версии манифеста запланировано на январь 2023 года. - Добавлена поддержка цветных векторных шрифтов в формате COLRv1 (подмножество шрифтов OpenType, содержащих помимо векторных глифов слой c информацией о цвете), которые могут применяться, например, для создания многоцветных emoji. В отличие от ранее поддерживаемого формата COLRv0 в COLRv1 появилась возможность использования градиентов, наложений и трансформаций. Формат также предоставляет компактную форму хранения, обеспечивает эффективное сжатие и допускает повторное использование контуров, что позволяет существенно уменьшить размер шрифта. Например, шрифт Noto Color Emoji в растровом представлении занимает 9MB, а в векторном формате COLRv1 –
1.85MB. - В режиме Origin Trials (экспериментальные возможности, требующие отдельной активации) реализован API Region Capture, позволяющий кадрировать захватываемые видеодорожки. Например, кадрирование может понадобиться в web-приложениях, осуществляющих захват видео с содержимыми своей вкладки, для вырезания определённого содержимого перед отправкой видео. Origin Trial подразумевает возможность работы с указанным API из приложений, загруженных с localhost или 127.0.0.1, или после прохождения регистрации и получения специального токена, который действует ограниченное время для конкретного сайта.
- В CSS-свойство “contain-intrinsic-size” добавлена поддержка значения “auto”, при указании которого будет использован последний запомненный размер элемента (при использовании вместе с “content-visibility: auto” разработчику не нужно угадывать отрисованный размер элемента).
- Добавлено свойство AudioContext.outputLatency, через которое можно узнать сведения о вероятной задержке перед выводом звука (задержка между запросом звука и началом обработки полученных данных устройством вывода звука).
- CSS-свойство color-scheme, позволяющий определить в каких цветовых схемах может быть корректно показан элемент (“light”, “dark”, “day mode” и “night mode”), добавлен параметр “only”, позволяющий исключить принудительное изменение цветовой схемы для отдельных HTML-элементов. Например, для если указать “div { color-scheme: only light }”, то для элемента div будет использоваться только светлая тема, даже если в браузере будет принудительно включено тёмное оформление.
- В CSS добавлена поддержка media-запросов ‘dynamic-range’ и ‘video-dynamic-range’ для определения наличия экрана, поддерживающего HDR (High Dynamic Range).
- В функцию window.open() возможность выбора открытия ссылки в новой вкладке, новом окне или всплывающем окне. Свойство window.statusbar.visible теперь возвращает “false” для всплывающих окон и “true” для вкладок и окон. const popup = window.open(‘_blank’,”,’popup=1′); // Открыть во всплывающем окне const tab = window.open(‘_blank’,”,’popup=0′); // Открыть во вкладке
- Для окон и worker-ов реализован метод structuredClone(), позволяющий создавать рекурсивные копии объектов, включающие свойства не только указанного объекта, но и всех других объектов, на которые ссылается текущий объект.
- В Web Authentication API добавлена поддержка расширения спецификации FIDO CTAP2, позволяющее задать минимальный допустимый размер PIN-кода (minPinLength).
- Для устанавливаемых обособленных web-приложений добавлен компонент Window Controls Overlay, расширяющий экранную область приложения на всё окно, включая область заголовка, на который накладываются штатные кнопки управления окном (закрытие, минимизация, максимизация). Web-приложение может управлять отрисовкой и обработкой ввода во всём окне, за исключением наложенного блока с кнопками управления окном.
- В WritableStreamDefaultController добавлено свойство обработки сигналов, возвращающее объект AbortSignal, при помощи которого можно сразу останавливать операции записи в WritableStream, не дожидаясь их завершения.
- В WebRTC удалена поддержка механизма согласования ключей SDES, который в 2013 году был объявлен организацией IETF устаревшим из-за проблем с безопасностью.
- По умолчанию отключён API U2F (Cryptotoken), который ранее объявлен устаревшим и ему на смену пришёл API Web Authentication. API U2F будет полностью удалён в Chrome 104.
- В API Directory объявлено устаревшим поле installed_browser_version, вместо которого предложено новое поле pending_browser_version, отличающееся тем, что в нём содержится информация о версии браузера с учётом загруженных, но не применённых обновлений (т.е. версия, которая будет действовать после перезапуска браузера).
- Убраны параметры, позволявшие вернуть поддержку TLS 1.0 и 1.1.
- Внесены улучшения в инструменты для web-разработчиков. Добавлена вкладка для оценки работы кэша перехода (Back-forward cache), обеспечивающего мгновенный переход при использовании кнопок “Назад” и “Вперёд”. Добавлена возможность эмуляции медаизапросов forced-colors. В редакторе Flexbox добавлены кнопки для поддержки свойств row-reverse и column-reverse. Во вкладке “Changes” обеспечено отображение изменений после форматирования кода, что упрощает разбор минифицированных страниц.
Реализация панели просмотра кода обновлена до выпуска редактора кода CodeMirror 6, в котором значительно повышена производительность работы с очень большими файлами (WASM, JavaScript), решены проблемы со случайными смещениями при навигации и улучшены рекомендации системы автодополнения при редактировании кода.
В панель с CSS-свойствами добавлена возможность фильтрации вывода по имени или значению свойства.
Кроме нововведений и исправления ошибок в новой версии устранено 27 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 19 премий на сумму 88 тысяч долларов США (две премии $20000, одна премия $12000, две премии $7500, четыре премии $1000 и по одной премии в $7000, $5000, $3000 и $2000.