Реліз Chrome 91

Компанія Google представила реліз web-браузера Chrome 91. Одночасно доступний стабільний випуск вільного проекту Chromium, який є основою Chrome. Браузер Chrome відрізняється використанням логотипів Google, наявністю системи надсилання повідомлень у разі краху, модулями для відтворення захищеного відеоконтенту (DRM), системою автоматичної установки оновлень та передачею під час пошуку RLZ-параметрів. Наступний випуск Chrome 92 заплановано на 20 липня.

Основні зміни в Chrome 91:

  • Реалізовано можливість зупинення виконання JavaScript у згорнутій групі вкладок. У Chrome 85 з'явилася підтримка об'єднання вкладок у групи, які можуть бути пов'язані з певним кольором та міткою. При натисканні на мітці групи пов'язані з нею вкладки згортаються і замість них залишається одна мітка (повторний клік на мітці розкриває групу). У новому випуску з метою зниження навантаження на CPU та економії енергії реалізовано призупинення активності у згорнутих вкладках. Виняток зроблено лише для вкладок, у яких відтворюється звук, використовується API Web Locks або IndexedDB, виконано з'єднання з USB-пристроєм, ведеться захоплення відео, звуку або вмісту вікон. Зміна впроваджуватиметься поступово, починаючи з невеликого відсотка користувачів.
  • Включено підтримку методу узгодження ключів, стійкого до підбору на квантових комп'ютерах. Квантові комп'ютери кардинально швидше вирішують завдання розкладання натурального числа на прості множники, що лежить в основі сучасних асиметричних алгоритмів шифрування і ефективно не вирішується на класичних процесорах. Для використання в TLSv1.3 надано плагін CECPQ2 (Combined Elliptic-Curve and Post-Quantum 2), що комбінує класичний механізм обміну ключами X25519 зі схемою HRSS, заснованої на алгоритмі NTRU Prime, розробленої для постквантових криптосистем.
  • Повністю припинено підтримку протоколів TLS 1.0 та TLS 1.1, які переведені комітетом IETF (Internet Engineering Task Force) до розряду застарілих. У тому числі прибрано можливість повернення TLS 1.0/1.1 через зміну політики SSLVersionMin.
  • У збірках для платформи Linux включено використання режиму DNS поверх HTTPS (DoH, DNS over HTTPS), який раніше був доведений до користувачів Windows, macOS, ChromeOS та Android. DNS-over-HTTPS буде автоматично активовано для користувачів, в налаштуваннях яких вказані DNS-провайдери, що підтримують цю технологію (для DNS-over-HTTPS використовується той самий провайдер, який застосовувався для DNS). Наприклад, якщо у користувача в системних налаштуваннях вказано DNS 8.8.8.8, то в Chrome буде активовано DNS-over-HTTPS сервіс Google ("https://dns.google.com/dns-query"), якщо DNS - 1.1.1.1 , то DNS-over-HTTPS сервіс Cloudflare ("https://cloudflare-dns.com/dns-query") і т.п.
  • До заборонених мережних портів додано порт 10080, який використовується в Amanda backup і VMWare vCenter. Раніше вже були заблоковані порти 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061 і 6566. Для портів у чорному списку блокується відправка HTTP, HTTPS і FTP-запитів з метою захисту від атак спеціально підготовленою атакуючим web-сторінки в браузері встановити мережеве з'єднання з сервера атакуючого до будь-якого UDP або TCP порту на системі користувача, незважаючи на застосування внутрішнього діапазону адрес (192.168.xx, 10.xxx).
  • Надано можливість налаштування автоматичного запуску відокремлених web-програм (PWA — Progressive Web Apps) при вході користувача в систему (Windows та macOS). Автозапуск налаштовується на сторінці chrome://apps. Функціональність поки що тестується на невеликому відсотку користувачів, а для інших вимагає активації «chrome://flags/#enable-desktop-pwas-run-on-os-login».
  • У межах роботи з перекладу браузера застосування інклюзивної термінології файл «master_preferences» перейменований в «initial_preferences». Для збереження сумісності підтримка «master_preferences» якийсь час ще збережеться у браузері. Раніше браузер вже позбувся використання слів «whitelist», «blacklist» та «native».
  • У розширений режим захисту від небезпечних сайтів (Enhanced Safe Browsing), в якому активуються додаткові перевірки для захисту від фішингу, шкідливої ​​активності та інших загроз Web, реалізована можливість відправки завантажуваних файлів для перевірки на стороні Google. Крім того, в Enhanced Safe Browsing реалізовано облік токенів, прив'язаних до облікового запису Google, при виявленні спроб фішингу, а також відправка на сервера Google значень заголовка Referrer для перевірки прокидання зі шкідливого сайту.
  • У редакції для платформи Android покращено оформлення елементів web-форм, оптимізованих для використання на сенсорних екранах і системах для людей з обмеженими можливостями (для настільних систем оформлення було перероблено в Chrome 83). Метою переробки стала уніфікація оформлення елементів форм та усунення невідповідності стилів – раніше частина елементів форм була спроектована відповідно до елементів інтерфейсу операційних систем, а частина – відповідно до найпопулярніших стилів. Через це різні елементи по-різному підходили для сенсорних екранів та систем для людей з обмеженими можливостями.
    Реліз Chrome 91Реліз Chrome 91
  • Додано опитування користувачів, що показується при відкритті налаштувань Privacy Sandbox (chrome://settings/privacySandbox).
  • При запуску Android-версії Chrome на планшетних ПК з великим екраном забезпечено запит десктоп-версії сайту, а не редакції для мобільних пристроїв. Змінити поведінку можна за допомогою налаштування "chrome://flags/#request-desktop-site-for-tablets".
  • Перероблений код для відображення таблиць, що дозволило вирішити проблеми з невідповідністю поведінки при виведенні таблиць у Chrome та Firefox/Safari.
  • Припинено обробку серверних сертифікатів іспанського посвідчувального центру Camerfirma через інциденти, що повторюються з 2017 року, пов'язаних з порушеннями при видачі сертифікатів. Підтримка клієнтських сертифікатів збережена, блокування застосовується лише для сертифікатів, які використовуються на сайтах HTTPS.
  • Продовжено реалізацію підтримки сегментування мережі для захисту від методів відстеження переміщень користувача між сайтами, що базуються на зберіганні ідентифікаторів у областях, не призначених для постійного зберігання інформації («Supercookies»). Оскільки ресурси в кеші зберігаються у загальному просторі імен, незалежно від вихідного домену, один сайт може визначити завантаження ресурсів з іншого сайту через перевірку наявності цього ресурсу в кеші. Захист заснований на застосуванні сегментування мережі (Network Partitioning), суть якого в додаванні до спільно використовуються кеші додаткової прив'язки записів до домену, з якого відкрита основна сторінка, що обмежує область охоплення кешу для скриптів відстеження переміщень тільки поточним сайтом (скрипт з iframe не зможе перевірити чи завантажувався ресурс з іншого сайту).

    Ціною сегментування є зниження ефективності кешування, що призводить до незначного збільшення часу завантаження сторінки (максимум на 1.32%, але для 80% сайтів на 0.09-0.75%). Для тестування режиму сегментування можна запустити браузер з опцією «—enable-features=PartitionConnectionsByNetworkIsolationKey, PartitionExpectCTStateByNetworkIsolationKey, PartitionHttpServerPropertiesByNetworkIsolationKey, PartitionNelAndReportingByNetworkI acheByNetworkIsolationKey».

  • Додано зовнішній REST API VersionHistory (https://versionhistory.googleapis.com/v1/chrome), через який можна отримати відомості про версії Chrome у прив'язці до платформ та гілок, а також історії оновлення браузера.
  • В iframe, завантажених з доменів, відмінних від домену базової сторінки, заборонено виведення JavaScript-діалогів alert(), confirm() та prompt(), що дозволить захистити користувачів від спроби виведення стороннім скриптом повідомлень під виглядом, що повідомлення виведено основним сайтом.
  • Стабілізовано та запропоновано за промовчанням API WebAssembly SIMD для використання векторних SIMD-інструкцій у програмах у форматі WebAssembly. Для забезпечення платформонезалежності пропонуються новий 128-розрядний тип, який може представляти різні типи упакованих даних, та декілька базових векторних операцій для обробки упакованих даних. SIMD дозволяє підвищити продуктивність за рахунок розпаралелювання обробки даних і буде корисним при компіляції нативного коду WebAssembly.
  • У режимі Origin Trials (експериментальні можливості, що потребують окремої активації), додано кілька нових API. Origin Trial має на увазі можливість роботи із зазначеним API з додатків, завантажених з localhost або 127.0.0.1, або після проходження реєстрації та отримання спеціального токена, який діє обмежений час для конкретного сайту.
    • WebTransport — протокол та супутній JavaScript API для надсилання та прийому даних між браузером та сервером. Канал зв'язку організується поверх HTTP/3 з використанням як транспорт протоколу QUIC, який, у свою чергу, являє собою надбудову над протоколом UDP, що підтримує мультиплексування кількох з'єднань і забезпечує методи шифрування, еквівалентні TLS/SSL.

      WebTransport може використовуватися замість механізмів WebSockets і RTCDataChannel, пропонуючи такі додаткові можливості, як організація передачі в кілька потоків, односпрямовані потоки, доставка без урахування порядку відправлення пакетів (out-of-order), надійний та ненадійний режими доставки. Крім того, WebTransport може застосовуватися замість механізму Server Push, від використання якого Chrome відмовилася компанія Google.

    • Декларативний інтерфейс для визначення посилань на відокремлені web-програми (PWA), що включається за допомогою параметра capture_links в маніфесті web-програми і дозволяє сайтам автоматично відкривати нове PWA-вікно при натисканні на посилання програми або переходити в одновіконний режим за аналогією з мобільними програмами.
    • Доданий API WebXR Plane Detection, що надає відомості про плоскі поверхні у віртуальному 3D-оточенні. Зазначений API дає можливість обійтися без ресурсомісткої обробки даних, отриманих через виклик MediaDevices.getUserMedia(), з використанням власних реалізацій алгоритмів машинного зору. Нагадаємо, що API WebXR дозволяє уніфікувати роботу з різними класами пристроїв віртуальної реальності від стаціонарних 3D-шоломів до рішень на базі мобільних пристроїв.
  • Реалізовано підтримку роботи з WebSockets поверх HTTP/2 (RFC 8441), яка діє тільки для захищених запитів до WebSockets і за наявності вже встановленого з сервером з'єднання HTTP/2, в якому анонсована підтримка розширення «WebSockets over HTTP/2».
  • Обмеження точності значень таймера, що видаються викликом performance.now(), уніфіковані для всіх платформ, що підтримуються, і адаптовані з урахуванням можливої ​​ізоляції обробників в окремих процесах. Наприклад, на десктоп-системах точність при обробці не ізольованих контекстах скорочена з 5 до 100 мікросекунд.
  • У збірках для настільних систем реалізована можливість читання файлів із буфера обміну (запис файлів у буфер обміну, як і раніше, заборонено). async function onPaste(e) { let file = e.clipboardData.files[0]; let contents = await file.text(); }
  • У CSS реалізовано правило @counter-style, що дозволяє визначати власний стиль лічильників та міток у нумерованих списках.
  • У CSS псевдо-класи «:host()» і «:host-context()» додано можливість передачі одиничних значень складових селекторів ( ) на додаток до списків селекторів ( ).
  • Доданий інтерфейс GravitySensor визначення об'ємних (по трьох осях координат) даних із датчика гравітації.
  • В API File System Access надано можливість визначення рекомендацій вибору імені файлу та каталогу, запропонованим у діалозі створення або відкриття файлу.
  • У завантажених з інших доменів iframe дозволено звернення до API WebOTP при наданні користувачем відповідних повноважень. WebOTP дозволяє читати одноразові коди підтвердження, що надсилаються через SMS.
  • Дозволено надавати спільний доступ до облікових даних для сайтів, пов'язаних за допомогою механізму DAL (Digital Asset Links), що дозволяє асоціювати Android-додатки з сайтами для спрощення входу.
  • У Service worker дозволено використання модулів JavaScript. При вказівці типу 'module' під час виклику конструктора зазначені скрипти будуть завантажені у формі модулів та доступні для імпортування в контексті worker. Підтримка модулів спрощує спільне використання коду на web-сторінках та у Service worker-ах.
  • У JavaScript надано можливість перевірки існування закритих полів в об'єкті, використовуючи синтаксис #foo in obj. class A { static test(obj) { console.log(#foo in obj); } #foo = 0; } A.test (new A ()); // true A.test ({}); // false
  • У JavaScript за замовчуванням дозволено використання ключового слова await у модулях на верхньому рівні, що дозволяє більш м'яко інтегрувати асинхронні дзвінки в процес завантаження модулів і обійтися без упакування «async function». Наприклад, замість (async function() { await Promise.resolve(console.log('test')); }()); тепер можна писати await Promise.resolve(console.log('test'));
  • У JavaScript-движку V8 підвищено ефективність кешування шаблонів, що дозволило на 4.5% підвищити швидкість проходження тесту Speedometer2-FlightJS.
  • Внесено велику порцію покращень до інструментів для web-розробників. Додано новий режим інспектування пам'яті (Memory inspector), що надає засоби вивчення даних ArrayBuffer і пам'яті Wasm.
    Реліз Chrome 91

    На панелі Performance додано зведений індикатор продуктивності, що дозволяє судити про те, чи вимагає сайт оптимізації чи ні.

    Реліз Chrome 91

    Під час перегляду зображень в панелі Elements та в панелі аналізу мережевих запитів надана інформація про співвідношення сторін зображення, параметри візуалізації та розмір файлу.

    Реліз Chrome 91

    У панелі інспектування мережі з'явилася можливість зміни значень заголовка Content-Encoding.

    Реліз Chrome 91

    У панелі роботи зі стилями з'явилася можливість швидкого перегляду обчисленого значення при навігації за параметрами CSS, вибравши контекстне меню «View computed value».

    Реліз Chrome 91

Окрім нововведень та виправлення помилок у новій версії усунуто 32 вразливості. Багато вразливостей виявлено в результаті автоматизованого тестування інструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer та AFL. Критичних проблем, які дозволяють обійти всі рівні захисту браузера та виконати код у системі за межами sandbox-оточення, не виявлено. У рамках програми з виплати грошової винагороди за виявлення вразливостей для поточного релізу компанія Google виплатила 21 премію на суму 92000 доларів США (одна премія $20000, одна премія $15000, чотири премії $7500, три премії $5000, три премії $3000, дві премії $1000 $500). Розмір 5 винагород поки не визначений.

Джерело: opennet.ru

Додати коментар або відгук