Компания Google релиз web-браузера . Одновременно стабильный выпуск свободного проекта , выступающего основой Chrome. Браузер Chrome использованием логотипов Google, наличием системы отправки уведомлений в случае краха, возможностью загрузки модуля Flash по запросу, модулями для воспроизведения защищённого видеоконтента (DRM), системой автоматической установки обновлений и передачей при поиске . Следующий выпуск Chrome 87 запланирован на 17 ноября.
:
- Добавлена защита от небезопасной отправки форм ввода на страницах, загруженных по HTTPS, но отправляющих данные по HTTP, что создаёт угрозу перехвата и подмены данных при совершении MITM-атак. Защита сводится к трём изменениям:
- Отключено автозаполнение любых смешанных форм ввода, по аналогии с тем, как уже достаточно давно отключено автозаполнение форм аутентификации на страницах, открываемых по HTTP. Если ранее признаком для отключения служило открытие страницы с формой по HTTPS или HTTP, теперь учитывается и применение шифрования при отправке данных обработчику формы. Работа менеджера паролей для смешанных форм аутентификации не отключена, так как риск от использования ненадёжного пароля и повторного применения паролей на разных сайтах превышает риск потенциального перехвата трафика.
- При начале ввода в смешанных формах обеспечен вывод предупреждения, информирующего пользователя об отправке заполненных данных через незашифрованный канал связи.
- При попытке отправки смешанной формы выводится отдельная страница с уведомлением о потенциальном риске передачи данных через незашифрованный канал связи. В прошлых версиях для индикации смешанных форм использовался индикатор замка в адресной строке, но подобная пометка была не очевидной для пользователей и эффективно не отражала возникающие риски.
- Блокирование (без шифрования) исполняемых файлов дополнено блокировкой небезопасной загрузки архивов (zip, iso и т.п.) и выводом предупреждений при небезопасной загрузке
документов (docx, pdf и т.п.). В следующем выпуске ожидается блокировка документов и вывод предупреждения для изображений, текстовых и мультимедийных файлов. Блокировка реализована, так как загрузка файлов без шифрования может использоваться для совершения вредоносных действий путём подмены содержимого в процессе MITM-атак. - В контекстном меню по умолчанию показана опция «Всегда показывать URL полностью», для включения которой ранее требовалось изменение параметров на странице about:flags. Полный URL также можно просмотреть кликнув два раза на адресной строке. Напомним, что начиная с по умолчанию адрес стал показываться без протокола и поддомена www. В была удалена настройка по возвращению старого поведения, но после недовольства пользователей в был добавлен новый экспериментальный флаг, добавляющий в контекстное меню пункт для отключения скрытия и показа полного URL в любых условиях.
- Для небольшого процента пользователей запущен по по умолчанию в адресной строке только домена, без элементов пути и параметров запроса. Например, вместо «https://example.com/secure-google-sign-in/» будет показано «example.com». Доведение предложенного режима до всех пользователей ожидается в одном из следующих выпусков. Для отключения указанного поведения можно использовать опцию «Всегда показывать URL полностью», а для просмотра всего URL можно кликнуть на адресной строке. В качестве мотива изменения указывается желание защитить пользователей от фишинга, манипулирующего параметрами в URL — злоумышленники пользуются невнимательностью пользователей для создания видимости открытия другого сайта и совершения мошеннических действий (если для технически грамотного пользователя подобные подмены бросаются в глаза, то неискушённые обыватели легко покупаются на подобные простые манипуляции).
- Возобновлена по удалению поддержки FTP. В Chrome 86 FTP отключён по умолчанию примерно для 1% пользователей, а в Chrome 87 охват отключения будет увеличен до 50%, но поддержку можно будет вернуть при помощи флага «—enable-ftp» или «—enable-features=FtpProtocol». В Chrome 88 поддержка FTP будет полностью отключена.
- В версии для Android по аналогии с версией для настольных систем в менеджере паролей реализована проверка сохранённых логинов и паролей по базе скомпрометированных учётных записей с выводом предупреждения в случае выявления проблем или попытке использования тривиальных паролей. Проверка выполняется по базе, охватывающей более 4 миллиардов скомпрометированных аккаунтов, фигурировавших в утечках пользовательских баз. Для сохранения приватности сверка хэш-префикса на стороне пользователя, а сами пароли и их полные хэши не передаются во вне.
- В версию для Android также кнопка «Проверка безопасности» (Safety check) и расширенный режим защиты от опасных сайтов (Enhanced Safe Browsing). Кнопка «Safety check» показывает сводку о возможных проблемах с безопасностью, таких как использование скомпрометированных паролей, состояние проверки вредоносных сайтов (Safe Browsing), наличие неустановленных обновлений и выявление вредоносных дополнений. Расширенный режим защиты активирует дополнительные проверки для защиты от фишинга, вредоносной активности и прочих угроз в Web, а также включает дополнительную защиту для учётной записи в Google и сервисов Google (Gmail, Drive и т.п.). Если в обычном режиме Safe Browsing проверки выполняются локально по периодически загружаемой на систему клиента БД, то в Enhanced Safe Browsing информация о страницах и загрузках в режиме реального времени отправляется для проверки на стороне Google, что позволяет оперативно реагировать на угрозы сразу после их выявления, не дожидаясь пока обновится локальный чёрный список.
- поддержка файла-индикатора «.well-known/change-password», при помощи которого владельцы сайтов могут указать адрес web-формы для смены пароля. В случае выявления компрометации учётных данных пользователя Chrome теперь сразу предложит пользователю форму для изменения пароля, определённую на основе информации из данного файла.
- Реализован вывод нового предупреждения «Safety Tip», отображаемого при открытии сайтов, домен которых очень похож на другой сайт и эвристика показывает, что велика вероятность спуфинга (например, открыт goog0le.com вместо google.com).
- поддержка кэша перехода (Back-forward cache), обеспечивающего мгновенный переход при использовании кнопок «Назад» и «Вперёд» или при навигации по ранее просмотренным страницам текущего сайта. Кэш включается при помощи настройки chrome://flags/#back-forward-cache.
- Проведена оптимизация потребления ресурсов CPU окнами
вне области видимости. Chrome проверяет не перекрывается ли окно браузера другими окнами и исключает отрисовку пикселей в областях перекрытия. Указанная оптимизация была включена для небольшого процента пользователей в Chrome 84 и 85, а теперь активирована повсеместно. По сравнению с прошлыми выпусками также устранена несовместимость с системами виртуализации, из-за которой показывались пустые белые страницы. - Усилено урезание ресурсов для фоновых вкладок. Подобные вкладки теперь не могут потреблять больше 1% ресурсов CPU и могут активироваться не чаще одного раза в минуту. После пяти минут нахождения в фоне вкладки замораживаются, за исключением вкладок в которых воспроизводится мультимедийное содержимое или ведётся запись.
- Возобновлена работа по HTTP-заголовка User-Agent. В новой версии для всех пользователей активирована поддержка механизма , развиваемого в качестве замены User-Agent. Новый механизм подразумевает выборочную отдачу данных о конкретных параметрах браузера и системы (версия, платформа и т.д.) только после запроса сервером и дающий пользователям возможность выборочно предоставлять подобную информацию владельцам сайтов. При использовании User-Agent Client Hints идентификатор не передаётся по умолчанию без явного запроса, что делает невозможным проведение пассивной идентификации (по умолчанию указывается только название браузера).
- Изменена индикация наличия обновления и необходимости перезапуска браузера для его установки. Вместо цветной стрелки в поле аватара учётной записи теперь появляется надпись «Update».
- Проведена работа по переводу браузера на применение инклюзивной терминологии. В именах политик слова «whitelist» и «blacklist» заменены на «allowlist» и «blocklist» (уже добавленные политики продолжат работать, но для них будет выводиться предупреждение о переводе в разряд устаревших). В և упоминания «blacklist» заменены на «blocklist».
Видимые пользователю упоминания «blacklist» и «whitelist» были заменены ещё в начале 2019 года. - Добавлена экспериментальная возможность редактирования сохранённых паролей, активируемая при помощи флага «chrome://flags/#edit-passwords-in-settings».
- Переведён в разряд стабильных и общедоступных API , позволяющий создавать web-приложения, взаимодействующие с файлами в локальной ФС. Например, новый API может быть востребован в запускаемых в браузере интегрированных средах разработки, редакторах текста, изображений и видео. Для получения возможности прямой записи и чтения файлов или использования диалогов для открытия и сохранения файлов, а также для навигации по содержимому каталогов, приложение запрашивает у пользователя специальное подтверждение.
- Добавлен CSS-селектор ««, который использует ту же эвристику, что используется браузером при принятии решения о показе индикатора смены фокуса (при перемещении фокуса на кнопку клавиатурными комбинациями индикатор появляется, а при клике мышью — нет). Ранее доступный CSS-селектор «:focus» всегда подсвечивает фокус.
Кроме того, в настройки добавлена опция «Quick Focus Highlight», при включении которой рядом с активными элементами будет показываться дополнительный индикатор фокуса, который остаётся видимым даже если на странице через CSS отключены элементы стиля для визуального выделения фокуса. - В режиме Origin Trials (экспериментальные возможности, требующие отдельной активации) добавлено несколько новых API. Origin Trial подразумевает возможность работы с указанным API из приложений, загруженных с localhost или 127.0.0.1, или после прохождения регистрации и получения специального токена, который действует ограниченное время для конкретного сайта.
- для низкоуровневого доступа к HID-устройствам (Human interface device, клавиатуры, мыши, геймпады, сенсорные панели), позволяющим реализовать логику работы с HID-устройством на JavaScript для организации работы с редкими HID-устройствами без наличия в системе специфичных драйверов.
Прежде всего новый API нацелен на предоставление поддержки геймпадов. - , расширяет возможности API Window Placement поддержкой конфигураций с несколькими экранами. В отличие от window.screen новый API позволяет манипулировать размещением окна в общем экранном пространстве многомониторнных систем, не ограничиваясь текущим экраном.
- Мета-тег , при помощи которого сайт может информировать браузер о необходимости активации режимов снижения энергопотребления и оптимизации нагрузки на CPU.
- API для информирования о потенциальных нарушениях режимов изоляции (COEP) и (COOP), без применения фактических ограничений.
- В API предложен новый тип учётных данных , обеспечивающий дополнительное подтверждение совершаемой платёжной операции. Проверяющая сторона, например, банк, имеет возможность сгенерировать открытый ключ PublicKeyCredential, который может быть запрошен продавцом для дополнительного безопасного подтверждения платежа.
- для низкоуровневого доступа к HID-устройствам (Human interface device, клавиатуры, мыши, геймпады, сенсорные панели), позволяющим реализовать логику работы с HID-устройством на JavaScript для организации работы с редкими HID-устройствами без наличия в системе специфичных драйверов.
- В API для определения наклона стилуса добавлена поддержка углов высоты (угол между стилусом и экраном) и азимута (угол между осью X и проекцией стилуса на экран), вместо углов TiltX и TiltY (углы между плоскостью из стилуса и одной из осей и плоскостью из осей Y и Z). Также добавлены функции преобразования между высотой/азимутом и TiltX/TiltY.
- Изменено кодирование пробела в URL, при его вычислении в обработчиках протокола — метод navigator.registerProtocolHandler() теперь заменяет пробелы на «%20» вместо «+», что унифицирует поведение с другими браузерами, такими как Firefox.
- В CSS добавлен псевдо-элемент ««, позволяющий настроить цвет, размер, форму и тип чисел и точек для перечислений в блоках <ul> и <ol>.
- Добавлена поддержка HTTP-заголовка , правила доступа к документам, похожие на механизм sandbox-изоляции для iframe, но более универсальный. Например, через Document-Policy можно ограничить использование некачественных изображений, отключить медленные JavaScript API настроить правила загрузки iframe, изображений и скриптов, ограничить общий размер документа и трафик, запретить методы, приводящие к перерисовке страницы, отключить функцию .
- В элемент добавлена поддержка параметров ‘inline-grid’, ‘grid’, ‘inline-flex’ и ‘flex’, задаваемых через CSS-свойство ‘display’.
- Добавлен метод для замены всех дочерних элементов родительского узла на другой DOM-узел. Ранее для замены узлов можно было использовать комбинацию из методов node.removeChild() и node.append() или node.innerHTML и node.append().
- спектр схем URL, допустимых для переопределения при помощи registerProtocolHandler(). В список схем включены децентрализованные протоколы cabal, dat, did, dweb, ethereum, hyper, ipfs, ipns и ssb, что позволяет определять ссылки на элементы независимо от сайта или шлюза, предоставляющего доступ к ресурсу.
- В API добавлена поддержка формата text/html для копирования и вставки HTML через буфер обмена (при записи и чтения в буфер обмена выполняется чистка опасных конструкций HTML). Изменение, например, позволяет организовать в web-редакторах вставку и копирование отформатированного текста с изображениями и ссылками.
- В WebRTC возможность подключения собственных обработчиков данных, вызываемых на стадиях кодирования или декодирования WebRTC MediaStreamTrack. Например, указанную возможность можно использовать для добавления поддержки сквозного шифрования данных, передаваемых через промежуточные серверы.
- В JavaScript-движке V8 на 75% реализация Number.prototype.toString. В асинхронные классы добавлено свойство .name с пустым значением. Удалён метод Atomics.wake, который в своё время был переименован в Atomics.notify для соответствия спецификации ECMA-262. Открыт код инструментария fuzzing-тестирования .
- В задействованном в прошлом выпуске начальном (baseline) компиляторе Liftoff для WebAssembly включена возможность использования векторных инструкций для ускорения вычислений. Судя по тестам, оптимизация позволила ускорить прохождения некоторых тестов в 2.8 раз. Другая оптимизация позволила значительно ускорить вызов из WebAssembly импортированных функций JavaScript.
- инструменты для web-разработчиков: В панель Media добавлены сведения о проигрывателях, применяемых для воспроизведения видео на странице, включая данные о событиях, логи, значения свойств и параметры декодирования кадров (например, можно определить причины потери кадров и проблем при взаимодействии из JavaScript).
В контекстном меню панели Elements добавлена возможность создания скриншотов выбранного элемента (например, можно создать скриншот оглавления или таблицы).
В web-консоли панель с предупреждением о проблемах заменена на обычное сообщение, а проблемы со сторонними Cookie скрыты по умолчанию во вкладке Issues и включаются специальным флажком.
Во вкладке Rendering добавлена кнопка «Disable local fonts», позволяющая симулировать отсутствие локальных шрифтов, а во вкладке Sensors появилась возможность симулировать неактивность пользователя (для приложений, использующих API Idle Detection).
В панели Application предоставлена детальная информация о каждом iframe, открытом окне и pop-up-ах, включая данные об изоляции Cross-Origin при помощи COEP и COOP.
- замена реализации протокола на вариант, развиваемый в спецификации IETF, вместо Google-варианта QUIC.
Кроме нововведений и исправления ошибок в новой версии устранено . Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами , , , և . Одна уязвимость (CVE-2020-15967, обращение к освобождённой области памяти в коде для взаимодействия с Google Payments) помечена как критическая, т.е. позволяет обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 27 премий на сумму 71500 долларов США (одна премия $15000, три премии $7500, пять премий $5000, две $3000, одна $200 и две премии $500). Размер 13 вознаграждений пока не определён.
Աղբյուր: opennet.ru
