Компанія Google опублікувала реліз web-браузера Chrome 147. Одночасно доступний стабільний випуск вільного проекту Chromium, який є основою Chrome. Браузер Chrome відрізняється від Chromium використанням логотипів Google, наявністю системи відправлення повідомлень у разі краху, модулями для відтворення захищеного від копіювання відеоконтенту (DRM), системою автоматичної установки оновлень, постійним включенням Sandbox-ізоляції, постачанням ключів до Google API та передачею RLZ-парарів. Для тих, кому потрібно більше часу на оновлення, окремо підтримується гілка Extended Stable, що супроводжується 8 тижнів. Наступний випуск Chrome 148 заплановано на 5 травня.
Основні зміни в Chrome 147 (1, 2, 3, 4):
- Додано режим вертикального відображення вкладок, який замінює верхню горизонтальну панель з кнопками вкладок на бічній панелі з вертикальними вкладками. Вертикальні вкладки можуть відображатися в розгорнутому (піктограма + частина опису) та згорнутому режимах (тільки піктограми). При наведенні курсору на бічну вкладку відображається ескіз із вмістом. Спрощено керування групами вкладок. У контекстному меню, яке з'являється при натисканні правою кнопкою миші на рядку вкладок, додано опцію «Показати вкладки вертикально» («Show Tabs Vertically»). Якщо опція не з'явилася за замовчуванням, її можна активувати за допомогою налаштування «chrome://flags/#vertical-tabs».
- Перероблено режим читання (reading mode), у якому відображається лише значущий текст сторінки, проте супутні керуючі елементи, банери, меню, навігаційні панелі та інші пов'язані з контентом частини сторінки ховаються. У новій версії за аналогією з Firefox значний вміст відображається у всій видимій області, а не як раніше у вузькому бічному вікні поряд із вихідною сторінкою. Якщо новий режим не застосовується за замовчуванням, його можна активувати за допомогою параметра «chrome://flags/#read-anything-immersive-reading-mode».
- У меню Help додана кнопка для надсилання скарги для занесення до списку блокування web-сторінок, створених для шахрайства або фішингу. Кнопка відображається у режимі «Safe Browsing».
- Розширено засоби захисту від звернення до локальної системи під час взаємодії з публічними сайтами. Звернення з сайтів до Моя IP адреса локальної мережі (інтранет або внутрішні адреси) або loopback-інтерфейсу (127.0.0.0/8) вимагатиме підтвердження операції у користувача. Під дію захисту тепер підпадають не лише спроби завантаження ресурсів по HTTP/HTTPS, запити fetch() та iframe-вставки, а й установка з'єднань через WebSockets та WebTransport, а також fetch-запити, ініційовані через метод WindowClient.navigate(). Звернення до внутрішніх ресурсів використовуються зловмисниками для непрямої ідентифікації та здійснення CSRF-атак на маршрутизатори, точки доступу, принтери, корпоративні web-інтерфейси та інші пристрої та сервіси, які приймають запити лише з локальної мережі.
- Функціональність для розбору XML переведена з libxml2 на нову бібліотеку, написану мовою Rust з огляду на безпеку. Зміна стосується лише XML, як було оголошено раніше, підтримка XSLT скоро буде припинена.
- Реалізовано можливість застосування методу startViewTransition() не лише для всієї сторінки, а й для окремих HTML-елементів.
- Додана CSS-функція contrast-color(), що повертає протилежний варіант для зазначеного кольору (для білого поверне чорний, а для чорного - білий). Функцію можна використовувати для вибору кольору фону для певного кольору тексту і навпаки.
- Додано CSS-властивість "border-shape", що дозволяє створювати непрямокутне обрамлення елементів, наприклад, використовувати рамки круглої або багатокутної форми. CSS-властивість «border-shape» приймає ті ж види форм, що і властивість «clip-path», але на відміну від останнього визначає контур, декодує його і відсікає вміст, що виходить за контур.
- Доданий інтерфейс CSSPseudoElement, що дозволяє працювати з псеведоелементами CSS з JavaScript.
- В елементі link реалізована можливість застосування атрибуту «rel=modulepreload» для запобіжного завантаження не тільки скриптів, а й модулів із CSS-стилями ( ) та даними JSON ( ).
- Змінено поведінку при обчисленні ширини рамок і контурів в CSS-властивості border-width, outline-width і column-rule-width, яке уніфіковано з Firefox і браузерами на движку WebKit. До цього часу ширина в зазначених властивостях обнулялась, незалежно від виставлених у яких значень, якщо властивості border-style, outline-style чи column-rule-style мали значення «none» чи «hidden». Тепер значення order-width, outline-width і column-rule-width завжди виставляють задані розробником значення, незалежно від вмісту властивостей *-style.
- Додано метод Math.sumPrecise() для обчислення суми елементів масивів та інших об'єктів, що перераховуються, з точністю, що перевищує точність звичайного підсумовування в циклі (виключаються втрати точності при проміжному збереженні результатів).
- Доданий атрибут Request.isReloadNavigation, який дозволяє визначити, що сторінку було перезавантажено, наприклад, після натискання на кнопку «Refresh» або виклику методів location.reload() та history.go(0).
- Для зниження точності непрямої ідентифікації змінено логіку заокруглення розміру пам'яті, що повертається через API Device Memory, що дозволяє отримати інформацію про розмір оперативної пам'яті. Ця інформація може бути корисною для створення легковажних варіантів web-додатків, що завантажуються для пристроїв з невеликою ОЗП або активації розширених можливостей за наявності великого обсягу пам'яті. У збірках для платформи Android розмір пам'яті тепер округляється до 1, 2, 4 та 8, а для інших платформ до 2, 4, 8, 16 та 32.
- Для ізольованих web-додатків (IWA — Isolated Web Apps) реалізовано API Web Printing, що надає методи визначення наявності принтерів, відправки документів на друк та управління чергою виведення на друк. Імена атрибутів і семантика, що використовуються в API, відповідають протоколу IPP (Internet Printing Protocol).
- У режимі «Origin trials» реалізований API WebNN, що дозволяє використовувати сервіси, що надаються операційною системою для машинного навчання і пов'язані з цим апаратні можливості.
- Внесено покращення до інструментів для web-розробників. У вбудованому асистенті AI реалізований автоматичний вибір контексту. Модернізовано панель «Device Mode», яка використовується для тестування роботи сайту на різних мобільних пристроях. На панелі Network забезпечено автоматичне декодування стисненого вмісту запитів, переданих із заголовком Content-Encoding: gzip або deflate. Надано можливість застосування регулярних виразів для фільтрації CSS-стилів.
Окрім нововведень та виправлення помилок у новій версії усунено 60 вразливостей. Багато вразливостей виявлено в результаті автоматизованого тестування інструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer та AFL. Двом проблемам (переповнення буфера та цілечисленне переповнення в WebML) присвоєно критичний рівень небезпеки, що передбачає, що вразливості дозволяють обійти всі рівні захисту браузера та виконати код у системі за межами sandbox-оточення. У рамках програми з виплати грошової винагороди за виявлення вразливостей для поточного релізу компанія Google заснувала 60 премій і виплатила 118 тисяч доларів США (дві премії $43000, дві премії $11000 і по одній премії в $4000, $3000, $2000 і $100.
Джерело: opennet.ru
