22.09.2020

Релиз Chrome 84


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

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

  • Отключена поддержка протоколов TLS 1.0 и TLS 1.1. Для обращения к сайтам по защищённому каналу связи сервер должен предоставить поддержку как минимум TLS 1.2, иначе браузер теперь будет выводить ошибку. По данным Google в настоящее время около 0.5% загрузок web-страниц продолжает осуществляться с использованием устаревших версий TLS. Отключение произведено в соответствии с рекомендациями IETF (Internet Engineering Task Force). Причиной отказа от TLS 1.0/1.1 является отсутствие поддержки современных шифров (например ECDHE и AEAD) и требование поддержки старых шифров, надёжность которых на современном этапе развития вычислительной техники поставлена под сомнение (например, требуется поддержка TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, для проверки целостности и аутентификации используется MD5 и SHA-1). Настройка, дающая возможность вернуть TLS 1.0/1.1 будет сохранена до января 2021 года.
  • Обеспечено блокирование небезопасной загрузки (без шифрования) исполняемых файлов и добавлен вывод предупреждений при небезопасной загрузке архивов. В дальнейшем постепенно планируется полностью прекратить поддержку загрузки файлов без применения шифрования. Блокировка реализована, так как загрузка файлов без шифрования может использоваться для совершения вредоносных действий путём подмены содержимого в процессе MITM-атак.
  • Добавлена начальная поддержка идентификатора Client Hints, развиваемого в качестве альтернативы заголовка User-Agent. Механизм Client Hints предлагает в качестве замены User-Agent серию заголовков «Sec-CH-UA-*», позволяющих организовать выборочную отдачу данных о конкретных параметрах браузера и системы (версия, платформа и т.д.) только после запроса сервером. Пользователь получает возможность определить какие параметры допустимы для отдачи и выборочно предоставлять подобную информацию владельцам сайтов. При использовании Client Hints идентификатор не передаётся по умолчанию без явного запроса, что делает невозможным проведение пассивной идентификации (по умолчанию указывается только название браузера). Работа по унификации User-Agent отложена до следующего года.
  • Продолжена активация более жёсткого ограничения передачи Cookie между сайтами, которая была отменена из-за COVID-19. Для не-HTTPS запросов запрещена обработка сторонних Cookie, выставляемых при обращении к сайтам, отличным от домена текущей страницы. Подобные Cookie применяются для отслеживания перемещений пользователя между сайтами в коде рекламных сетей, виджетов социальных сетей и систем web-аналитики.

    Напомним, что для управления передачей Cookie применяется указываемый в заголовке Set-Cookie атрибут SameSite, который по умолчанию будет выставлен в значение «SameSite=Lax», ограничивающее отправку Cookie для межсайтовых субзапросов, таких как запрос изображения или загрузка контента через iframe с другого сайта. Сайты могут переопределить применяемый по умолчанию режим SameSite, явно выставляя при установке Cookie значение SameSite=None. Притом значение SameSite=None для Cookie может выставляться только в режиме Secure (действует для соединений через HTTPS). Изменение будет применяться поэтапно, вначале для небольшого процента пользователей, а потом постепенно расширяя охват.

  • Добавлена экспериментальная реализация блокировщика ресурсоёмкой рекламы, которую можно активировать при помощи настройки «chrome://flags/#enable-heavy-ad-intervention». Блокировщик позволяет автоматически отключать рекламные iframe-блоки после превышения пороговых значений трафика и нагрузки на CPU. Блокировка будет срабатывать если в основном потоке израсходовано более 60 секунд процессорного времени в сумме или 15 секунд в 30-секундном интервале (потребляет 50% ресурсов более 30 секунд), а также когда загружено более 4 Мб данных по сети.

    Блокировка будет срабатывать только если до момента превышения лимитов пользователь не взаимодействовал с рекламным блоком (например, не кликал на него), что с учётом ограничения на трафик позволит блокировать автовоспроизведение объёмных видеороликов в рекламе без явной активации воспроизведения пользователем. Предлагаемые меры избавят пользователей от рекламы с неэффективной реализацией кода или преднамеренной паразитной активностью (например, выполняющими майнинг). По статистике Google, подпадающая под критерии блокировки реклама составляет всего 0.30% от всех рекламных блоков, но при этом подобные рекламные вставки потребляют 28% ресурсов CPU и 27% трафика от всего объёма рекламы.

  • Проведена работа по снижению потребления ресурсов CPU когда окно браузера не находится в поле видимости пользователя. Chrome теперь проверяет не перекрывается ли окно браузера другими окнами и исключает отрисовку пикселей в областях перекрытия. Включение новой функции будет производиться постепенно: выборочно для некоторых пользователей оптимизация будет включена в Chrome 84, а для остальных в Chrome 85.
  • Включена по умолчанию защита от назойливых уведомлений, например, спама запросами на получение push-уведомлений. Так как подобные запросы прерывают работу пользователя и отвлекают внимание на действия в диалогах подтверждения, вместо отдельного диалога в адресной строке будет отображаться не требующая действий от пользователя информационная подсказка с предупреждением о блокировке запроса полномочий, которая автоматически сворачивается в индикатор с изображением зачёркнутого колокола. При клике на индикатор можно активировать или отклонить запрошенное полномочие в любой удобный момент.

  • Обеспечено запоминание выбора пользователя при открытии обработчиков внешних протоколов — пользователь может выбрать «всегда разрешать для этого сайта» для определённого обработчика и браузер запомнит это решение в привязке к текущему сайту.
  • Добавлена защита от изменения настроек пользователя без явного согласия. Если дополнение изменит предлагаемую по умолчанию поисковую систему или страницу, отображаемую для новой вкладки, браузер теперь выведет диалог с предложением подтвердить указанную операцию или отменить изменение.
  • Продолжено внедрение защиты от загрузки смешанного мультимедийного контента (когда на HTTPS-странице загружаются ресурсы по протоколу http://). На страницах, открытых по HTTPS, теперь автоматически будут заменяться ссылки «http://» на «https://» в блоках, связанных с загрузкой изображений (ранее заменились скрипты и iframe, автозамена звуковых и видео ресурсов ожидается в следующем выпуске). Если изображение недоступно по https, то его загрузка блокируется (вручную можно отметить блокировку через меню, доступное через символ замка в адресной строке).

  • Добавлена поддержка API Web OTP (развивался как SMS Receiver API), позволяющий организовать ввод на web-странице одноразового пароля, после получения SMS-сообщения с кодом подтверждения, доставленного на Android-смартфон пользователя, на котором запущен браузер. Подтверждение по SMS, например, может использоваться для проверки номера телефона, указанного пользователем при регистрации. Если раньше пользователь должен был открыть приложение для работы SMS, скопировать из него код в буфер обмена, вернуться в браузер и вставить этот код, то новый API даёт возможность автоматизировать данный процесс и свести его к одному касанию.
  • Расширено API Web Animations для управления воспроизведением web-анимации. В новом выпуске добавлена поддержка операций композитинга, позволяющих контролировать как комбинируются эффекты и предоставляющих новые обработчики, вызываемые при наступлении событий замены содержимого. API Web Animations также теперь поддерживает Promise для определения последовательности показа анимации и лучшего управления тем, как анимация взаимодействует с другими возможностями приложения.
  • В режиме Origin Trials (экспериментальные возможности, требующие отдельной активации) добавлено несколько новых API. Origin Trial подразумевает возможность работы с указанным API из приложений, загруженных с localhost или 127.0.0.1, или после прохождения регистрации и получения специального токена, который действует ограниченное время для конкретного сайта.
    • API Cookie Store для доступа Service worker к HTTP Cookies, выступающий асинхронной альтернативой применения document.cookie.
    • API Idle Detection для определения неактивности пользователя, позволяющий определять время, когда пользователь не взаимодействует с клавиатурой/мышью, запущен хранитель экрана, экран заблокирован или работа выполняется на другом мониторе. Информирование приложения об неактивности осуществляется через отправку уведомления после достижения заданного порога неактивности.
    • Режим Origin Isolation, позволяет разработчику использовать более полную изоляцию обработки контента в отдельном процессе в привязке к источнику (origin — домен+порт+протокол), а не сайту, ценой прекращения поддержки некоторых устаревших возможностей, таких как синхронное выполнение скриптов, использующих document.domain, и вызов postMessage() для отправки сообщений экземплярам WebAssembly.Module. Иными словами, Origin Isolation позволяет организовать разделение по разным процессам на основе домена ресурса, а не сайта со всеми посторонними включениями на страницах.
    • API WebAssembly SIMD для использования векторных SIMD-инструкций в приложениях в формате WebAssembly. Для обеспечения платформонезависимости предлагаются новый 128-разрядный тип, который может представлять разные типы упакованных данных, и несколько базовых векторных операций для обработки упакованных данных. SIMD позволяет повысить производительность за счёт распараллеливания обработки данных и будет полезным при компиляции нативного кода в WebAssembly.
  • Стабилизирован и теперь распространяется вне Origin Trials API Content Indexing, предоставляющий метаданные о контенте, который ранее был прокэширован web-приложениями, работающими в режиме Progressive Web Apps (PWS). Приложение может сохранять на стороне браузера различные данные, включая изображения, видео и статьи, а при пропадании сетевого соединения использовать их при помощи API Cache Storage и IndexedDB. Content Indexing API даёт возможность добавлять, находить и удалять подобные ресурсы. В браузере данный API уже используется для перечисления списка страниц и мультимедийных данных, доступных для просмотра в offline.
  • Стабилизирован вариант API Wake Lock на основе механизма Promise, предоставляющий более безопасный способ управления отключением автоблокировки экрана и перевода устройств в энергосберегающие режимы.
  • В версии для платформы Android добавлена поддержка ярлыков приложений, позволяющих предоставить быстрый доступ к востребованным типовым действиям в приложении. Для создания ярлыков достаточно добавить элементы в манифест web-приложения в формате PWA (Progressive Web Apps).
  • Для Web Worker разрешено использование API ReportingObserver, позволяющего определить обработчик для генерации отчёта, вызываемый при обращении к устаревшим возможностям. Сгенерированный отчёт по выбору пользователя может быть сохранён, отправлен на сервер или обработан скриптом на JavaScript.
  • Обновлён API Resize Observer, позволяющий подключить обработчик, которому будут направляться уведомления об изменении размера указанных элементов на странице. В ResizeObserverEntry добавлено три новых свойства: contentBoxSize, borderBoxSize и devicePixelContentBoxSize для получения более детальной информации, выдаваемой в форме массива из объектов ResizeObserverSize.
  • Добавлно ключевое слово «revert» для сброса стиля элемента в значение по умолчанию.
  • Избавлены от префикса CSS-свойства «-webkit-appearance» и «-webkit-ruby-position», которые теперь доступны как «appearance» и «ruby-position«.
  • В JavaScript реализована поддержка пометки методов и свойств класса приватными, после чего доступ к ним будет открыт только внутри класса (ранее приватными могли быть только поля). Для пометки методов и свойств приватным следует указать перед именем поля знак «#».
  • В JavaScript добавлена поддержка слабых ссылок (weak reference) на объекты JavaScript, позволяющих сохранить ссылку на объект, но не блокирующих удаление связанного объекта сборщиком мусора. Также добавлена поддержка финализаторов, дающих возможность определения обработчика, вызываемого после выполнения сборки мусора указанного обекта.

Кроме нововведений и исправления ошибок в новой версии устранено 38 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Одна проблема (CVE-2020-6510, переполнение буфера в обработчике фоновых операций fetch) помечена как критическая, т.е. позволяет обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 26 премий на сумму 21500 долларов США (две премии $5000, две премии $3000, одна премия $2000, две премии $1000 и три премии $500). Размер 16 вознаграждений пока не определён.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53362

Добавить комментарий