Компания Google опубликовала релиз web-браузера Chrome 135. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей RLZ-параметров при поиске. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 136 запланирован на 29 апреля.
Основные изменения в Chrome 135:
- Добавлена защита от скрытой идентификации пользователей при помощи кэша 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 в запросах субресурсов.
- Добавлена локально выполняемые модель машинного обучения для улучшения определения наличия на страницах форм ввода пароля и автоматической смены пароля. Если пароль признан скомпрометированным, то при попытке входа c данным паролем на сайт Chrome выведет предупреждение с предложением изменить пароль. При согласии браузер сгенерирует стойкий к подбору пароль, сменит пароль на сайте и сохранит новый пароль в менеджере паролей – AI сам заполнит и отправит нужные web-формы на необходимом сайте и обновит сохранённый пароль.
- В режим расширенной защиты браузера (Safe Browsing > Enhanced protection) добавлена возможность использования большой языковой модели для определения мошеннических страниц по их содержимому. AI-модель выполняется на стороне клиента, но в случае выявления подозрений на сомнительный контент, выполняется дополнительная проверка на серверах Google. Если дополнительная проверка подтверждается, пользователю выводится предупреждение. Проверка пока выполняется только для страниц, использующих API Keyboard Lock.
- Для пользователей, подключивших Chrome к своей учётной записи в Google, появилась возможность сохранения устанавливаемых дополнений в
свой Google Account для последующего автоматического использования этих дополнений на всех компьютерах, которыми пользуется пользователь. - У пользователей, недавно подключившихся к учётной записи в Google или использующих Chrome Sync, обеспечено хранение синхронизированных настроек, ярлыков сайтов и тем оформления отдельно от локальных настроек. Таким образом, после выключения Chrome Sync на устройстве будут оставаться исходные настройки, а при подключении в Google не будут загружаться локальные настройки.
- В версии для Android прекращена поддержка встроенного менеджера паролей, на смену которому пришёл унифицированный Google Password Manager, поставляемый через Google Play. Пользователи могут сохранить содержимое старого менеджера паролей в формате CSV для переноса в другие менеджеры паролей.
- В режиме инкогнито реализована неотключаемая на стороне браузера блокировка сторонних Cookie, выставляемых при обращении к сайтам, отличным от домена текущей страницы (подобные Cookie применяются для отслеживания перемещений пользователя между сайтами в коде рекламных сетей, виджетов социальных сетей и систем web-аналитики). Возможность управления блокировкой сторонних Cookie на стороне сайтов оставлена без изменений, но в браузере настройка BlockThirdPartyCookies в режиме инкогнито теперь не может быть выставлена в значение false.
- В CSS добавлены псевдо-элементы “::column”, “::scroll-button”, “::scroll-marker” и “::scroll-marker-group”, при помощи которых можно реализовать прокрутку в форме карусели.
- Реализованы HTML-атрибуты “command” и “commandfor”, которые можно использовать в кнопках вместо атрибутов “popovertargetaction” и “popovertarget” для декларативной настройки взаимодействия с меню, вызываемым при нажатии на кнопку. При использовании новых атрибутов всю логику взаимодействия с меню берёт на себя браузер, без необходимости подключения собственных обработчиков на JavaScript. Например, для создания выпадающего меню достаточно указать: Open Menu…
- В CSS добавлена функция shape(), позволяющая формировать фигуры с использованием CSS-свойств clip-path и offset-path. Функция shape() поддерживает команды формирования фигур, эквивалентные функции path(), но позволяет использовать для них стандартный синтаксис CSS.
- В API Web Speech, предоставляющий функции для синтеза и распознавания речи, добавлена поддержка интерфейса MediaStreamTrack для обработки звука, поступающего из различных источников, включая внешние звуковые треки. Ранее API Web Speech мог обрабатывать только звук, поступающих через выбранный по умолчанию микрофон.
- В JavaScript добавлена поддержка типизированных массивов Float16Array, предназначенных для хранения значений с типом Float16.
- Добавлен API Observable для обработки потоков событий в асинхронном режиме. API даёт возможность подписаться на объект для получения событий по мере их поступления и декларативно описать поток преобразований, которые будут применяться к поступающим событиям.
- Удалён метод navigator.xr.supportsSession, ранее объявленный устаревшим. Вместо него следует использовать метод navigator.xr.isSessionSupported, заявленный в спецификации WebXR
- Удалены настройки InsecurePrivateNetworkRequestsAllowedForUrls и InsecurePrivateNetworkRequestsAllowed, применявшиеся для включения механизма PNA 1.0 (Private Network Access), ограничивающего загрузку ресурсов с публично доступного сайта, ссылающихся на хосты во внутренней сети (127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8 и т.п.). Подобная активность используются злоумышленниками для осуществления CSRF-атак на маршрутизаторы, точки доступа, принтеры, корпоративные web-интерфейсы и другие устройства и сервисы, принимающие запросы только из локальной сети.
Из-за несовместимости с некоторыми устройствами PNA 1.0 можно было включить только по желанию. На смену PNA 1.0 разработана спецификация PNA 2.0 для поддержки которой не требуется изменение на стороне устройств и достаточно изменений на стороне сайтов, которым нужен доступ к интранет-ресурсам. PNA 1.0 и PNA 2.0 не совместимы между собой, поэтому до внедрения PNA 2.0 Google намерен вначале убрать поддержку PNA 1.0.
- Убрана опция для возвращения поддержки устаревшего программного интерфейса MutationEvent и связанных с ним синхронно обрабатываемых событий DOMSubtreeModified, DOMNodeInserted, DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMNodeInsertedIntoDocument и DOMCharacterDataModified. Интерфейс применялся для отслеживания изменений в дереве DOM, но негативно влиял на производительность страниц и мешал реализации некоторых новых возможностей. Данный API был отключён по умолчанию летом прошлого года, но в Chrome сохранялась опция MutationEventsEnabled для возвращения поддержки. В качестве альтернативы рекомендуется использовать API Mutation Observer.
- В инструментах для web-разработчиков расширены возможности средств для анализа производительности.
Кроме нововведений и исправления ошибок в новой версии устранены 14 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 8 премий на сумму 17 тысяч долларов США одна премия в $10000 и по две премии в $2000, $1000 и $500).