Компания Google опубликовала релиз web-браузера Chrome 136. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей RLZ-параметров при поиске. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 137 запланирован на 27 мая.
Основные изменения в Chrome 136:
- Добавлена защита от утечки информации о ранее просмотренных страницах, возникающей из-за применения псевдокласса CSS “:visited“, позволяющего настроить оформление ранее открытых ссылок. До версии Chrome 136 переход по ссылке приводил к изменению оформления этой ссылки на всех сайтах, показывающих данную ссылку, независимо от того с какого сайта был инициирован переход. На своём сайте атакующий мог определить открывал ли ранее пользователь интересующие его ссылки, анализируя изменение оформления этих ссылок. Например, если создать список ссылок на разные страницы, то ранее просмотренные страницы в этом списке будут отмечены браузером иным цветом, на основе чего можно сделать вывод, открывались ли ранее ссылки.
Для блокирования утечек информации о посещённых ссылках в Chrome реализована изоляции обработки селектора “:visited” в привязке к просматриваемому сайту, т.е. элементы теперь стилизуются при помощи “:visited” только если были ранее открыты с текущего сайта и в привязке к текущему iframe. Изоляция реализована через хэширование стиля просмотренных ссылок с использованием в качестве ключа трёх составляющих – ссылки, сайта верхнего уровня и хоста, используемого в iframe.
Например, если с сайта “А” был переход по ссылке, то эта ссылка отныне будет подсвечиваться только на сайте “А” и останется неизменной на сайте атакующего. Исключение сделано только для iframe, загружаемых с основного сайта (same-origin), и ссылок на текущий сайт. Таким образом, при открытии сайта “А” ссылки, ведущие на сайт “A”, будут подсвечиваться даже если переходы на них были с другого сайта, но остальные ссылки будут подсвечиваться только если переходы были с сайта “А”.
В Firefox защита от подобных утечек была добавлена в 2010 году, но существовали методы для её обхода. Например, в 2024 году в Firefox 122 была устранена возможность анализа цвета пикселей при помощи фильтров, использующих параметр currentColor, и манипуляций с тегом canvas в SVG.
- В версии для Android реализована передача на серверы Google телеметрии с данными о загружаемых через браузер APK-пакетах. Пока функциональность ограничивается отправкой телеметрии, но в будущем будет задействована для вывода предупреждений и блокировки загрузки вредоносных APK-файлов. Проверка выполняется только при включении в настройках режима расширенной защиты браузера (Safe Browsing > Enhanced protection).
- Для удалённой отладки теперь требуется указание отдельного каталога с данными, задаваемого при запуске при помощи параметра “–user-data-dir”, который следует указывать вместе с параметром “–remote-debugging-pipe” или “–remote-debugging-port”. При использовании применяемого по умолчанию каталога в Windows, Linux и macOS удалённая отладка больше работать не будет. Причиной изменения является противодействие вредоносному ПО, использующему удалённую отладку для извлечения данных из Google Chrome. При использовании отдельного каталога в нём применяется иной ключ шифрования, не позволяющий получить доступ к рабочим данным пользователя в основном каталоге. Изменение действует только для Chrome и не применяется в Chromium.
- В CSS-функции attr() аргумент с типом “string” переименован в “raw-string”, в соответствии с решением рабочей группы, координирующей развитие спецификаций CSS. Изменение призвано исключить путаницу из-за схожести выражений “attr(foo type())” и “attr(foo string)”.
- В API ProgressEvent, применяемом для создания индикаторов прогресса, в атрибутах “loaded” и “total” вместо типа “unsigned long long” задействован тип “double”, что соответствует поведению HTML-элемента и позволяет отражать на индикаторе постепенное изменение нецелых значений, например, при изменении величины от 0 до 1.
- Для экранирования строк, используемых внутри регулярных выражений, предложен статический метод “RegExp.escape“. Строки, экранированные при помощи RegExp.escape, можно безопасно использовать в качестве шаблона в конструкторе RegExp().
- Сайту разрешено автоматическое создание ключей Passkey на базе уже сохранённых для этого сайта учётных данных. Создание Passkey осуществляется без вывода отдельного модального диалога, если ранее пользователь уже подтверждал для сайта создание учётных данных.
- Добавлено CSS-свойство dynamic-range-limit для ограничения максимальной яркости HDR-контента.
- В API Speculation Rules (
Кроме нововведений и исправления ошибок в новой версии устранены 8 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 4 премии на сумму 10 тысяч долларов США (одна премия в $5000, две премии в $2000 и одна в $1000).