Компания Google опубликовала релиз web-браузера Chrome 119. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей при поиске RLZ-параметров. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 120 запланирован на 5 декабря.
Основные изменения в Chrome 119:
- Сокращён цикл формирования релизов, в котором уменьшено время между созданием новой ветки и началом бета-тестирования – бета-версия теперь формируется через два дня после создания ветки, а не через 8 дней. Стабилизация бета-версии как и раньше осуществляется в течение 4 недель. Таким образом, цикл подготовки новых выпусков стал на неделю меньше.
- Предоставлена возможность сохранения групп вкладок. Пользователь теперь может сохранить группу и закрыть входящие в неё вкладки, чтобы они не занимали ресурсы. Позднее, когда возникнет необходимость вкладки из сохранённой группы можно вернуть, а также открыть на других устройствах, участвующих в синхронизации вкладок.
Возможность включена для части пользователей, для принулительного включения предусмотрена настройка “chrome://flags/#tab-groups-save”. - В интерфейсе изменены формулировки операций и настроек, связанных с удалением и потерей данных. Вместо термина “очистка” (Clear) в подобных операциях теперь применяется слово “удаление” (Delete), так как слово “очистка” не воспринималось отдельными пользователями как признак безвозвратной потери данных.
- При автодополнении URL теперь учитывается любое ключевое слово, ранее использованное для поиска сайта, а не только слова совпадающие с началом адреса. Например, автодополнение адреса “https://www.google.com/travel/flights” сработает не только при вводе слова “google”, но и при вводе “flights”.
- Реализовано автоматическое исправление опечаток при вводе адреса сайта и обеспечен вывод релевантных подсказок, при формировании которых учитываются сайты, ранее открытые текущим пользователем. Например, при вводе “youutube” будет предложено открыть YouTube.com.
- Предоставлена возможность поиска в разделах закладок через адресную строку. Например, можно добавить при вводе имя раздела закладок и Chrome предложит ссылки из данного раздела, соответствующие введённому ключевому слову. Например, при вводе “поездки 2023 Нью” будут предложены ссылки из раздела закладок “поездки 2023”, связанные с Нью-Йорком.
- Реализован вывод рекомендаций популярных сайтов, даже если пользователь ранее не посещал их или допустил ошибку при вводе URL.
Например, когда следуя чьей-то рекомендации открыть Google Earth пользователь начал набирать “googleear” не зная точного адреса, браузер предложит перейти на сайт earth.google.com. - В Chrome для настольных систем улучшена читаемость информации в адресной строке и повышена отзывчивость интерфейса – результаты теперь выводятся сразу после начала набора в адресной строке.
- В соответствии с изменением спецификации API Fetch, обеспечено удаление HTTP-заголовка Authorization при перенаправлении на другой домен (cross origin).
- В настройках уведомлений и определения местоположении добавлена опция для включения сервиса автоподавления запросов на подтверждение полномочий (Permission Suggestions Service). На выбор предложены режимы:
- всегда показывать запросы на получение полномочий для вывода уведомлений и доступа к местоположению;
- автоматически игнорировать спамерские запросы полномочий, используя механизм Permission Suggestions Service;
- всегда игнорировать все запросы на вывод уведомлений;
- всегда блокировать все запросы на получение полномочий для вывода уведомлений и доступа к местоположению.
- В сборках для платформы Android при включении стандартной защиты браузера (Safe Browsing > Standard protection) в режиме реального времени реализована проверка безопасности открытых URL, выполняемая на основании передачи на серверы Google частичных хэшей от открываемых пользователем URL. Для исключения сопоставления IP-адреса пользователя и хэша, данные передаются через промежуточный прокси. Ранее проверка выполнялась через загрузку на систему пользователя локальной копии списка небезопасных URL. Новая схема позволяет более оперативной блокировать вредоносные URL. Для настольных систем подобный режим был включён в прошлом выпуске.
- Приведено к соответствию спецификации экранирование небуквенных символов в имени хоста в URL. Например, вызов функции ‘URL(“https://exa(mple.com;”)’ ранее возвращал ‘https://exa%28mple.com/’, а теперь будет приводить к выводу ошибки ” Invalid URL”.
- Ко всем ранее сохранённым Cookie будет применено ограничение времени жизни, аналогичное тому, что применяется начиная с выпуска Chrome 104 для новых и обновлённых Cookie. Для имеющихся Cookie время жизни будет урезано до 400 дней относительно публикации выпуска Chrome 119.
- В CSS предложены новые псевдо-классы “:user-valid” и “:user-invalid“, которые представляют элементы форм, значения которых прошли или не прошли проверку. В отличие от “:valid” и “:invalid” новые псевдоклассы срабатывают только после взаимодействия пользователя с элементом формой.
- При выставления цветов в CSS разрешено определение значений, вычисленных относительно других параметров цвета. Например, при указании “oklab(from magenta calc(l * 0.8) a b)” будет получен цвет на 80% светлее пурпурного.
- В CSS-свойство clip-path, который позволяет ограничить видимость элемента определённой областью, добавлена поддержка значения geometry-box> для задания произвольной области для обрезки. Также предоставлена возможность использования функций xywh() и rect() для упрощения задания прямоугольных или скруглённых областей.
- Отключена поддержка API WebSQL, вместо которого рекомендуется использовать API Web Storage и Indexed Database. Обработчик WebSQL основан на коде библиотеки SQLite. API WebSQL не поддерживался в других браузерах,
привязывался к API внешней библиотеки и повышал риски проблем с безопасностью (WebSQL мог использоваться злоумышленниками для эксплуатации уязвимостей в SQLite). Для возвращения поддержки WebSQL для корпоративных пользователей оставлена политика WebSQLAccess, которая будет удалена в Chrome 123. - Временно удалён API HTML Sanitizer, позволяющий вырезать из содержимого элементы, влияющие на отображение и исполнение при выводе через метод setHTML(). API был разработан для вырезания HTML-тегов, которые могут использоваться для совершения XSS-атак. В качестве причины удаления называется незавершённость спецификации, которая со времени добавления Sanitizer в Сhrome значительно изменилась. После готовности спецификации API будет возвращён.
- Удалён нестандартный атрибут shadowRoot, позволяющий из собственных элементов обращаться к своему отдельному корню в Shadow DOM, независимо от состояния. Вместо shadowRoot в Chrome 111 был предложен атрибут shadowRootMode, вошедший в web-стандарт.
- Улучшена реализация HTML-элемента “fencedframe>”, который напоминает “iframe” и также позволяет встраивать стороннее содержимое на страницу. Отличия сводятся к ограничению взаимодействия встроенного содержимого с содержимым страницы на уровне DOM и атрибутов. Например, страница news.example, в которую при помощи fencedframe встроен блок с рекламой, загружаемый с сайта shoes.example, не может получить доступ к данным shoes.example, а в свою очередь код с сайта shoes.example не может получить данные, связанные с news.example. В новой версии добавлена поддержка появившихся в API Protected Audience макроподстановок размера рекламного блока, например, “https://ad.com?width={/%AD_WIDTH%}&height={/%AD_HEIGHT%}”.
- В метод getDisplayMedia() добавлен параметр monitorTypeSurfaces, который можно использовать для запрета предоставления совместного доступа ко всему экрану.
- В метод window.open() добавлен экспериментальный (origin trial)
параметр fullscreen, позволяющий открыть окно сразу в полноэкранном режиме. - В API AudioEncoderConfig добавлен флаг “bitrateMode” для выбора между постоянным (constant) и переменным (variable) битрейтом.
- В TLS включена реализация механизма инкапсуляции ключей (KEM, Key Encapsulation Mechanism), использующая гибридный алгоритм X25519Kyber768, устойчивый к подбору на квантовых компьютерах. Для создания сессионных ключей, применяемых для шифрования данных внутри TLS-соединений, теперь может использоваться комбинация из механизма обмена ключами X25519, основанного на эллиптических кривых и ныне применяемого в TLS, c алгоритмом Kyber-768, использующим методы криптографии, основанные на решении задач теории решёток, время решения которых не отличается на обычных и квантовых компьютерах. Kyber768 quantum-resistant key agreement algorithm. This is a hybrid X25519 + Kyber768 key agreement based on an IETF standard. This specification and launch is outside the scope of W3C. This key agreement will be launched as a TLS cipher, and should be transparent to users.
- Включена по умолчанию поддержка расширения WasmGC, упрощающего портирование в WebAssembly программ, написанных на языках программирования, использующих сборщик мусора (Kotlin, PHP, Java и т.п.). WasmGC добавляет новые типы структур и массивов, для которых может применяться нелинейное выделение памяти.
- Внесены улучшения в инструменты для web-разработчиков. Добавлена возможность редактирования CSS-правил “@property” и вывода предупреждений при их некорректном определении. Обновлён список эмулируемых устройств (например, добавлены iPhone 14 и Pixel 7). В web-консоли реализовано
автодополнение приватных полей. Обеспечено форматирование данных JSON, размещённых внутри блоков
Кроме нововведений и исправления ошибок в новой версии устранено 15 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 13 премий на сумму 40.5 тысяч долларов США (по одной премии в $16000, $11000, $2000 и $500, три премии $3000 и две премии $1000). Размер 4 вознаграждений пока не определён.