Реліз Chrome 90

Компанія 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».
  • Реалізовано можливість присвоєння вікнам різних міток для їхнього наочного поділу в панелі робочого столу. Підтримка зміни імені вікна спростить організацію роботи з використанням окремих вікон браузера для різних завдань, наприклад, при відкритті окремих вікон для робочих завдань, персональних інтересів, розваг, відкладених матеріалів тощо. Ім'я змінюється через пункт «Додати назву вікна» у контекстному меню, що з'являється при натисканні правою кнопкою миші на порожню область у рядку вкладок. Після зміни імені панелі програм замість назви сайту з активної вкладки відображається обране ім'я, що може бути корисним при відкритті однакових сайтів у різних вікнах з прив'язкою до окремих облікових записів. Прив'язка зберігається між сеансами та після перезапуску вікна будуть відновлені з вибраними іменами.
    Реліз Chrome 90
  • Додано можливість приховування "Списку читання" (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.xx, 10.xxx). До заборонених портів додано 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, націленого визначення категорії інтересів користувача без проведення індивідуальної ідентифікації і без прив'язки до історії відвідування конкретних сайтів.
  • Забезпечено висновок більш зрозумілого повідомлення з переліком дозволених дій, що показується у разі підключення користувача до профілю, для якого включено централізоване керування.
  • Зроблений менш настирливий інтерфейс запиту повноважень. Запити, які користувач швидше за все не схвалить, тепер автоматично блокуються з показом відповідного індикатора в адресному рядку, за допомогою якого користувач може перейти в інтерфейс для управління повноваженнями в прив'язці до кожного сайту.
    Реліз Chrome 90
  • Включено підтримку розширень 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», що містить масив з початковими і кінцевими позиціями груп збігів. Властивість заповнюється лише під час регулярного виразу з прапором «/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]
  • Проведено оптимізацію продуктивності властивостей "super" (наприклад, super.x), для яких задіяний inline-кеш. Продуктивність використання "super" тепер близька до продуктивності доступу до звичайних властивостей.
  • Значно прискорено виклик WebAssembly-функцій JavaScript за рахунок застосування inline-розгортання. Зазначена оптимізація поки що залишається експериментальною і вимагає запуску з прапором «turbo-inline-js-wasm-calls».
  • Доданий API WebXR Depth Sensing, що дозволяє визначати відстань між об'єктами в оточенні користувача та пристроєм користувача, наприклад, для створення більш реалістичних програм доповненої реальності. Нагадаємо, що API WebXR дозволяє уніфікувати роботу з різними класами пристроїв віртуальної реальності від стаціонарних 3D-шоломів до рішень на базі мобільних пристроїв.
  • Стабілізовано можливість WebXR AR Lighting Estimation, що дозволяє в сеансах WebXR для доповненої реальності визначати параметри навколишнього освітлення для надання моделям природнішого вигляду і більш гармонійної інтеграції з оточенням користувача.
  • У режимі Origin Trials (експериментальні можливості, що потребують окремої активації) додано кілька нових API, які поки що обмежені платформою Android. Origin Trial має на увазі можливість роботи із зазначеним API з додатків, завантажених з localhost або 127.0.0.1, або після проходження реєстрації та отримання спеціального токена, який діє обмежений час для конкретного сайту.
    • Метод 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.
  • Стабілізовано API Declarative Shadow DOM для створення нових кореневих гілок у Shadow DOM, наприклад, щоб відокремити імпортований сторонній стиль елемента і пов'язану з ним підвітку DOM від основного документа. Запропонований декларативний API дозволяє обійтися для відкріплення гілок DOM лише HTML без необхідності написання коду JavaScript.
  • У CSS-властивості aspect-ratio, що дозволяє явно прив'язати коефіцієнт співвідношення сторін до будь-якого елементу (для автоматичного обчислення недостатнього розміру при вказівці тільки висоти або ширини), реалізована можливість інтерполяції значень при анімації (плавного переходу від одного коефіцієнта співвідношення сторін до іншого).
  • Додано можливість відображення стану власних HTML-елементів (custom element) у CSS через псевдо-клас «state()». Функціональність реалізована за аналогією з можливістю штатних HTML-елементів змінювати свій стан залежно від взаємодії з користувачем.
  • У CSS-властивості appearance з'явилася підтримка значення 'auto', яке за умовчанням виставляється для і , а на платформі Android додатково для , , , і .
  • У CSS-властивість overflow додана підтримка значення clip, при встановленні якого вміст, що виходить за межі блоку, обрізається по межі допустимого переповнення блоку без можливості прокручування. Значення, що визначає, наскільки далеко вміст може виходити за межі фактичного кордону блоку до початку обрізки, задається через нову CSS-властивість overflow-clip-margin. В порівнянні з overflow: hidden використання overflow: clip дозволяє досягти більш високої продуктивності.
    Реліз Chrome 90Реліз Chrome 90
  • На зміну заголовку HTTP Feature-Policy прийшов новий заголовок Permissions-Policy для управління делегуванням повноважень і включенням розширених можливостей, в якому є підтримка структурованих значень полів (наприклад, тепер можна вказувати «Permissions-Policy: geolocation=()» замість «Feature- Policy: geolocation 'none'»).
  • Посилено захист від використання Protocol Buffers для проведення атак, викликаних спекулятивним виконанням інструкцій у процесорах. Захист реалізований через додавання MIME-типу «application/x-protobuffer» до списку MIME-типів, що ніколи не прослуховуються (sniffed), обробка якого проводиться через механізм Cross-Origin-Read-Blocking. Раніше в подібний список вже був занесений MIME-тип application/x-protobuf, але залишився втрачений application/x-protobuffer.
  • В API File System Access реалізована можливість зміщення поточної позиції у файлі за його кінець із заповненням нулями проміжку, що утворив, при наступному записі через виклик FileSystemWritableFileStream.write(). Зазначена можливість дозволяє створювати розряджені файли з порожнечами і істотно спрощує організацію запису файл потоків з неупорядкованим надходженням блоків даних (наприклад, таке практикується в BitTorrent).
  • Додано конструктор StaticRange з реалізацією легковажних типів Range, які не потребують оновлення всіх пов'язаних об'єктів при кожній зміні дерева DOM.
  • Реалізовано можливість вказівки параметрів width та height для елементів , вказаних усередині елемента . Ця можливість дозволяє розрахувати коефіцієнт співвідношення сторін для елементів , за аналогією з тим, як це зроблено для , і .
  • З WebRTC видалена нестандартизована підтримка каналів даних RTP (RTP Data Channels), замість яких рекомендується використовувати канали даних на основі SCTP.
  • Властивості navigator.plugins і navigator.mimeTypes тепер завжди повертають порожнє значення (після припинення підтримки Flash зникла потреба у цих властивостях).
  • Внесено велику порцію дрібних поліпшень до інструментів для web-розробників та додано новий інструмент для налагодження CSS flexbox.
    Реліз Chrome 90

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

Окремо можна відзначити, що вчора після формування коригувального випуску 89.0.4389.128, але до виходу Chrome 90, було опубліковано ще один експлоїт, в якому використовувалася нова 0-day вразливість, не виправлена ​​в Chrome 89.0.4389.128. Поки не ясно, чи усунена дана проблема в Chrome 90. Як і в першому випадку експлоїт охоплює лише одну уявність і не містить коду для обходу sandbox-ізоляції (при запуску chrome з прапором «no-sandbox» експлоїт при відкритті web-сторінки на платформі Windows забезпечує запуск notepad). Пов'язана з новим експлоїтом уразливість торкається технології WebAssembly.

Джерело: opennet.ru

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