Издание Chrome 90

Компания Google пусна версия 90 на уеб браузъра Chrome. В същото време е налично стабилно издание на свободния проект 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“ в долната част на контекстното меню, показвано при щракване с десния бутон върху лентата с отметки. Напомняме, че в предишното издание на част от потребителите, при натискане на звездичката в адресната лента, освен бутона „Добави отметка“ се появява и втори бутон „Добави в списък на четенето“, а в десния ъгъл на лентата с отметки се появява меню „Списък на четенето“, в което са изброени всички преди това добавени към списъка страници. При отваряне на страница от списъка, тя се отбелязва като прочетена. Страниците в списъка също могат да бъдат отбелязани ръчно като прочетени или непроčetени, или да бъдат изтрити от списъка.
  • Добавена е поддръжка за сегментиране на мрежата за защита от методи за проследяване на движението на потребителя между сайтовете, основани на съхранението на идентификатори в зони, не предназначени за постоянно съхранение на информация („Supercookies“). Тъй като ресурсите в кеша се съхраняват в общо пространство на имената, независимо от изходния домейн, един сайт може да определи зареждането на ресурси от друг сайт чрез проверка на наличието на този ресурс в кеша. Защитата е базирана на прилагането на сегментиране на мрежата (Network Partitioning), чиято същност е добавянето на допълнителна връзка между записките в споделените кешове. домейн, от който е отворена основната страница, което ограничава обхвата на кеша за скриптовете за проследяване на движението само до текущия сайт (скриптът от iframe не може да провери дали ресурсът е зареден от друг сайт). Цената на сегментирането е намаляване на ефективността на кеширането, което води до незначително увеличаване на времето за зареждане на страницата (максимум с 1.32%, но за 80% от сайтовете - с 0.09-0.75%).
  • Разширен е черният списък на мрежовите портове, за които се блокира изпращането на HTTP, HTTPS и FTP заявки с цел защита от атака NAT slipstreaming, която позволява при отваряне на специално подготвена от атакуващия уебстраница в браузъра да се установи мрежово свързване с сървър атакуващ на всяко UDP или TCP порт в системата на потребителя, независимо от използването на вътрешен диапазон адреси (192.168.x.x, 10.x.x.x). Забранените портове включват 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 типове, обработвани чрез механизма Cross-Origin-Read-Blocking. По-рано в подобен списък вече беше добавен MIME тип «application/x-protobuf», но «application/x-protobuffer» беше пропуснат.
  • В API за достъп до файловата система е реализирана възможността за изместване на текущата позиция в файла зад неговия край с попълване на нули в образувания интервал при последващо записване чрез извикването на FileSystemWritableFileStream.write(). Тази възможност позволява създаването на разредени файлове с празни пространства и значително улеснява организирането на запис в файл на потоци с неупорядочено постъпване на блокове данни (например, това е практика в BitTorrent).
  • Добавен е конструктор StaticRange с реализация на леки типове Range, които не изискват обновяване на всички свързани обекти при всяка промяна в DOM дървото.
  • Въведена е възможността за задаване на параметрите width и height за елементи <source>, посочени в рамките на елемента <picture>. Тази възможност позволява да се изчисли коефициента на съотношение на страните за елементите <picture>, подобно на начина, по който е направено за <img>, <canvas> и <video>.
  • Поддръжката на RTP данни (RTP Data Channels) е премахната от WebRTC, вместо което се препоръчва използването на канали за данни, базирани на SCTP.
  • Свойствата navigator.plugins и navigator.mimeTypes вече винаги връщат празна стойност (след прекратяване на поддръжката на Flash нуждата от тези свойства отпадна).
  • Внесени са множество малки подобрения в инструментите за уеб разработчици и добавен е нов инструмент за отстраняване на грешки в CSS flexbox.
    Издание Chrome 90

Освен нововъведенията и корекциите на грешки в новата версия, са отстранени 37 уязвимости. Много от уязвимостите са открити чрез автоматизирано тестване със средствата AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Не са открити критични проблеми, позволяващи заобикаляне на всички нива на защита на браузъра и изпълнение на код в системата извън sandbox средата. В рамките на програмата за парични награди за откритие на уязвимости, за текущия релиз компанията Google е изплатила 19 награди на обща стойност 54000 долара (една награда от 20000 долара, една награда от 10000 долара, две награди по 5000 долара, три награди по 3000 долара, една награда от 2000 долара, една от 1000 долара и четири награди по 500 долара). Размерът на 6 награди все още не е определен.

Отделно можем да споменем, че вчера след формирането на коригирания релиз 89.0.4389.128, но преди излизането на Chrome 90, бе публикуван още един експлоит, в който е използвана нова 0-day уязвимост, непоправена в Chrome 89.0.4389.128. Все още не е ясно дали проблемът е отстранен в Chrome 90. Както и в първия случай, експлоитът покрива само една уязвимост и не съдържа код за заобикаляне на sandbox изолацията (при стартиране на chrome с флага "--no-sandbox", експлоитът осигурява стартиране на notepad при отваряне на уеб страница на платформата Windows). Свързаната с новия експлоит уязвимост засяга технологията WebAssembly.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster