Компания Google представила релиз web-браузера Chrome 90. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента (DRM), системой автоматической установки обновлений и передачей при поиске RLZ-параметров. Следующий выпуск Chrome 91 запланирован на 25 мая.
Основные изменения в Chrome 90:
- Для всех пользователей включено открытие сайтов по умолчанию через HTTPS при наборе имён хостов в адресной строке. Например, при вводе хоста example.com по умолчанию будет открыт сайт https://example.com, а если при открытии возникли проблемы будет выполнен откат до http://example.com. Для управления использованием по умолчанию «https://» предложена настройка «chrome://flags#omnibox-default-typed-navigations-to-https».
- Реализована возможность присвоения окнам разных меток для их наглядного разделения в панели рабочего стола. Поддержка изменения имени окна упростит организацию работы при использовании отдельных окон браузера для разных задач, например, при открытии отдельных окон для рабочих задач, персональных интересов, развлечений, отложенных материалов и т.п. Имя меняется через пункт «Добавить название окна» в контекстом меню, появляющемся при клике правой кнопкой мыши на пустую область в строке вкладок. После смены имени в панели приложений вместо названия сайта из активной вкладки отображается выбранное имя, что может быть полезным при открытии одинаковых сайтов в разных окнах с привязкой к отдельным учётным записям. Привязка сохраняется между сеансами и после перезапуска окна будут восстановлены с выбранными именами.
- Добавлена возможность скрытия «Списка чтения» (Reading List) без необходимости изменения настроек в «chrome://flags» («chrome://flags#read-later»). Для скрытия теперь можно использовать опцию «Show Reading List» в нижней части контекстного меню, показываемого при клике правой кнопкой на панели закладок. Напомним, что в прошлом выпуске у части пользователей при нажатии на звёздочку в адресной строке помимо кнопки «Добавить закладку» появляется вторая кнопка «Добавить в список чтения», а в правом углу панели закладок появляется меню «Список чтения», в котором перечислены все ранее добавленные в список страницы. При открытии страницы из списка она помечается прочитанной. Страницы в списке также могут быть отмечены прочитанными и непрочитанными вручную или удалены из списка.
- Добавлена поддержка сегментирования сети для защиты от методов отслеживания перемещений пользователя между сайтами, основанных на хранении идентификаторов в областях, не предназначенных для постоянного хранения информации («Supercookies»). Так как ресурсы в кэше хранятся в общем пространстве имён, независимо от исходного домена, один сайт может определить загрузку ресурсов с другого сайта через проверку наличия этого ресурса в кэше. Защита основана на применении сегментирования сети (Network Partitioning), суть которого в добавлении в совместно используемые кэши дополнительной привязки записей к домену, с которого открыта основная страница, что ограничивает область охвата кэша для скриптов отслеживания перемещений только текущим сайтом (скрипт из iframe не сможет проверить загружался ли ресурс с другого сайта). Ценой сегментирования является снижение эффективности кэширования, приводящее к незначительному увеличению времени загрузки страницы (максимум на 1.32%, но для 80% сайтов на 0.09-0.75%).
- Пополнен чёрный список сетевых портов для которых блокируется отправка HTTP, HTTPS и FTP-запросов с целью защиты от атаки NAT slipstreaming, позволяющей при открытии специально подготовленной атакующим web-страницы в браузере установить сетевое соединение с сервера атакующего к любому UDP или TCP порту на системе пользователя, несмотря на применение внутреннего диапазона адресов (192.168.x.x, 10.x.x.x). В число запрещённых портов добавлены 554 (протокол RTSP) и 10080 (используется в Amanda backup и VMWare vCenter). Ранее уже были заблокированы порты 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061 и 6566.
- Добавлена начальная поддержка открытия в браузере PDF-документов с XFA-формами.
- Для части пользователей активирована новая секция настроек «Chrome Settings > Privacy and security > Privacy sandbox», позволяющая управлять параметрами API FLoC, нацеленного на определение категории интересов пользователя без проведения индивидуальной идентификации и без привязки к истории посещения конкретных сайтов.
- Обеспечен вывод более понятного уведомления с перечнем дозволенных действий, показываемого в случае подключения пользователя к профилю, для которого включено централизованное управление.
- Сделан менее назойливым интерфейс запроса полномочий. Запросы, которые пользователь скорее всего не одобрит, теперь блокируются автоматически c показом соответствующего индикатора в адресной строке, при помощи которого пользователь может перейти в интерфейс для управления полномочиями в привязке к каждому сайту.
- Включена поддержка расширений Intel CET (Intel Control-flow Enforcement Technology) для аппаратной защиты от выполнения эксплоитов, построенных с использованием приёмов возвратно-ориентированного программирования (ROP, Return-Oriented Programming).
- Продолжена работа по переводу браузера на применение инклюзивной терминологии. Файл «master_preferences» переименован в «initial_preferences», чтобы не ранить чувства пользователей, которые воспринимают слово master как намёк о былом рабстве их предков. Для сохранения совместимости поддержка «master_preferences» некоторое время ещё сохранится в браузере. Ранее браузер уже избавился от использования слов «whitelist», «blacklist» и «native».
- В версии для Android при включении режима экономии трафика «Lite» реализовано снижение битрейта при загрузке видео при подключении через сети мобильных операторов связи, что позволит снизить расходы пользователей, у которых включены тарифы с учётом трафика. В режиме «Lite» также обеспечено сжатие изображений, запрашиваемых из публично доступных ресурсов (не требующих аутентификации) по HTTPS.
- Добавлен кодировщик формата видео AV1, специально оптимизированный для использования в видеоконференциях, реализуемых на базе протокола WebRTC. Применение AV1 в видеоконференциях позволяет повысить эффективность сжатия и обеспечить возможность трансляции на каналах с пропускной способности на уровне 30 кбит/сек.
- В JavaScript в объектах Array, String и TypedArrays реализован метод at(), позволяющий использовать относительную индексацию (в качестве индекса массива указывается относительная позиция), в том числе с указанием отрицательных значений относительно конца (например, «arr.at(-1)» вернёт последний элемент массива).
- В JavaScript для регулярных выражений добавлено свойство «.indices», содержащее массив c начальными и конечными позициями групп совпадений. Свойство заполняется только при выполнении регулярного выражения с флагом «/d».
const re = /(a)(b)/d; const m = re.exec('ab'); console.log(m.indices[0]); // 0 - все группы совпадения // → [0, 2] console.log(m.indices[1]); // 1 - первая группа совпадений // → [0, 1] console.log(m.indices[2]); // 2 - вторая группа совпадений // → [1, 2]
- Метод getCurrentBrowsingContextMedia(), дающий возможность организовать захват видеопотока MediaStream, отражающего содержимое текущей вкладки. В отличие от похожего метода getDisplayMedia(), при вызове getCurrentBrowsingContextMedia() пользователю выводится простой диалог для подтверждения или блокирования операции передачи видео с содержимым вкладки.
- API Insertable Streams, дающий возможность манипулировать необработанными (raw) мультимедийными потоками, передаваемыми через API MediaStreamTrack, такими как данные с камеры и микрофона, результат захвата экрана или промежуточные данные декодирования кодеком. Для представления необработанных кадров используются интерфейсы WebCodec, после чего формируется поток, аналогичный тому, что API WebRTC Insertable Streams генерирует на основе RTCPeerConnections. С практической стороны новый API позволяет реализовать такую функциональность, как применение методов машинного обучения для идентификации или аннотирования объектов в режиме реального времени или для добавления эффектов, таких как вырезание фона, перед кодированием или после декодирования кодеком.
- Возможность упаковки ресурсов в пакеты (Web Bundle) для организации более эффективной загрузки большого числа сопутствующих файлов (CSS-стили, JavaScript, изображения, iframe). Среди недостатков в имеющейся поддержке пакетов для файлов JavaScript (webpack), которые пытаются устранить в Web Bundle: в HTTP-кэше может оседать сам пакет, но не его составные части; компиляция и выполнение может начаться только после полной загрузки пакета; дополнительные ресурсы, такие как CSS и изображения, должны кодироваться в форме JavaScript-строк, что приводит к увеличению размера и выполнения ещё одной стадии разбора.
- Поддержка обработки исключений в WebAssembly.



Кроме нововведений и исправления ошибок в новой версии устранено 37 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 19 премий на сумму 54000 долларов США (одна премия $20000, одна премия $10000, две премии $5000, три премии $3000, одна премия $2000, одна $1000 и четыре премии $500). Размер 6 вознаграждений пока не определён.
Отдельно можно отметить, что вчера после формирования корректирующего выпуска 89.0.4389.128, но до выхода Chrome 90, был опубликован ещё один эксплоит, в котором использовалась новая 0-day уязвимость, не исправленная в Chrome 89.0.4389.128. Пока не ясно, устранена ли данная проблема в Chrome 90. Как и в первом случае эксплоит охватывает лишь одну уявзимость и не содержит кода для обхода sandbox-изоляции (при запуске chrome с флагом «—no-sandbox» эксплоит при открытии web-страницы на платформе Windows обеспечивает запуск notepad). Связанная с новым эксплоитом уязвимость затрагивает технологию WebAssembly.