Реліз Firefox 147

Відбувся реліз web-браузера Firefox 147 та сформовані оновлення минулих гілок із тривалим терміном підтримки – 140.7.0 та 115.32.0. На стадію бета-тестування переведено гілку Firefox 148, реліз якої намічено на 24 лютого.

Основні новації в Firefox 147 (1, 2, 3):

  • Додано підтримку специфікації Freedesktop.org XDG Base Directory та можливість використання каталогу «~/.config/mozilla» для зберігання профілів, доповнень, налаштувань та внутрішніх БД. Підтримка розміщення даних у старому каталозі «~/.mozilla» збережена як опція, що активується при запуску зі змінною оточення «MOZ_LEGACY_HOME=1».
  • Додана підтримка механізму Compression Dictionary Transport (RFC 9842), що дозволяє скоротити розмір даних, що передаються між клієнтом та сервером, рахунок використання алгоритмів стиснення Zstandard (Content-Encoding: dcz) і Brotli (Content-Encoding: dcb) у поєднанні зі стиском типових конструкцій з використанням словників. Доступно два сценарії використання Compression Dictionary Transport — стиснення контенту за попередньо переданими сервером словникам та використання раніше переданого контенту як словник для стиснення його нової версії (дельта-стиснення, при якому передаються лише зміни порівняно з наявною версією).

    Наприклад, при запиті "GET /index.html" сервер може передати відомості про наявність словника, повернувши шлях до нього в заголовку 'Link: <…/dict>; rel="compression-dictionary"'. При завантаженні клієнтом словника ".../dict" сервер видасть інформацію про його застосування до HTML-файлів, виставивши заголовок 'Use-As-Dictionary: match="/*html"'. При наступному запиті html-ресурсу, наприклад, "GET /index2.html", клієнт вкаже відомості про наявність у нього словника через заголовок 'Available-Dictionary: хеш_словника''. Якщо сервер має на своєму боці словник із даним хешом, то поверне вміст index2.html, стислий з використанням даного словника.

    Для дельта-стиснення різних версій JavaSсript-файлів у відповідь на запит "GET /app.v1.js" сервер може виставити заголовок 'Use-As-Dictionary: match="/app*js"', що інформує що повернутий контент надалі можна використовувати як словник для пут. При наступному запиті файлу, який відповідає даній масці, наприклад, «GET /app.v2.js», клієнт передасть хеш наявного словника через заголовок «Available-Dictionary:», а сервер поверне лише зміни між файлами app.v1.js та app.v2.js.

  • Додано сторінку about:keyboard для налаштування комбінацій клавіш та перевизначення наявних гарячих клавіш, наприклад, для завдання більш звичних для себе варіантів або виключення конфліктів з іншими програмами.
     Реліз Firefox 147
  • Оптимізовано відтворення відео з використанням прискорення апаратного декодування на GPU AMD. На системах з GPU AMD апаратно декодоване відео тепер відтворюється без додаткового копіювання даних (режим zero-copy), як це було реалізовано для систем з GPU Intel і NVIDIA.
  • Для версії 5 оновлено реалізацію протоколу Safe Browsing, що застосовується для перевірки URL на наявність у списках небезпечних ресурсів (фішингові сайти, сторінки зі шкідливим ПЗ тощо), що надаються Google. Нова версія протоколу дозволяє завантажувати списки блокування для використання на локальній системі (БД із префіксами хешів SHA256 проблемних URL), які тепер застосовуються у Firefox.
  • Додано опцію автоматичного продовження відтворення відео в режимі «картинка в картинці» у разі перемикання вкладки.
  • У режимі посиленого захисту від відстеження переміщень (ETP, Enhanced Tracking Protection => Strict) включено за замовчуванням застосування специфікації LNA (Local Network Access) для обмеження звернень до локальної системи (loopback, 127.0.0.0/8) або внутрішньої мережі (192.168.0.0/0.0/ т.п.) при взаємодії із публічними сайтами. Звернення до внутрішніх ресурсів використовуються зловмисниками для здійснення CSRF-атак на маршрутизатори, точки доступу, принтери, корпоративні web-інтерфейси та інші пристрої та сервіси, які приймають запити лише з локальної мережі. Крім того, сканування внутрішніх ресурсів може використовуватися для непрямої ідентифікації або збору інформації про локальну мережу.
  • На Linuх-системах з GNOME та композитним сервером Mutter вирішено проблему з нечітким відображенням контенту при використанні дробового рівня масштабування.
  • На комп'ютерах Apple з чіпами Apple Silicon та ОС MacOS включена підтримка API WebGPU.
  • Пріоритети вибору мови (q-параметри), що виставляються в HTTP-заголовку Accept-Language, синхронізовані зі значеннями, що виставляють інші браузери, що вирішило деякі проблеми з переносимістю. Наприклад, для другої мови тепер виставляється пріоритет q=0.9 замість q=0.5, а кожної наступної мови пріоритет зменшується на 0.1.
  • Бібліотека ICU оновлена ​​до версії 78 з підтримкою Unicode 17 та оновленням даних локалів.
  • У Service Worker-ах дозволено використання JavaScript-модулів ESM (ECMAScript Module), що імпортуються та експортуються через вирази import та export.
  • Додано підтримку специфікації CSS Module Scripts, що дозволяє використовувати систему модулів JavaScript для імпорту CSS-ресурсів. Наприклад: import styles from "./styles.css" with {type: "css"};
  • У псевдо-елементі "::marker", що дозволяє налаштувати параметри чисел і точок для перерахувань у блоках і , можна використовувати CSS-властивості «counter-*» та «quotes».
  • API CompressionStream та DecompressionStream додають підтримку формату стиснення Brotli.
  • В API View Transitions, що використовується для створення анімаційних ефектів при перемиканні між різними станами DOM, додано властивість «type», що містить масив з типами переходів. Також доданий відповідний CSS-селектор «:active-view-transition-type» та властивість document.activeViewTransition, що повертає екземпляр активного для документа об'єкта ViewTransition.
  • Увімкнено набір CSS-властивостей для керування показом елементів, прив'язаних до розташування інших елементів (CSS Anchor Positioning), без використання JavaScript, наприклад, для прикріплення до елементів спливаючих вікон (popover), що з'являються за аналогією з підказками.
  • Реалізовано специфікацію «Storage Access Headers», яка визначає заголовок запиту «Sec-Fetch-Storage-Access» та заголовок відповіді «Activate-Storage-Access» для отримання доступу до сторонніх Cookie без виклику методу document.requestStorageAccess(). Сервер може запросити доступ до Cookie через заголовок "Activate-Storage-Access" і він буде відправлений клієнтом, якщо раніше користувач підтверджував надання доступу до сховища Cookie через API Storage Access.
  • У CSS-властивість «root-font-relative» додано підтримку відносних одиниць вимірювання rcap, rch, rex і ric.
  • Реалізовано API Navigation, що дозволяє web-додаткам перехоплювати операції навігації у вікні, ініціювати перехід та аналізувати історію дій із програмою. API надає альтернативу властивостям window.history та window.location, оптимізовану для односторінкових веб-додатків.
  • В інструментах для web-розробників у панелі з правилами CSS реалізовано підтримку редагування та додавання селекторів псевдоелементів. В інтерфейс для перегляду даних у форматі JSON додано кнопку для імпорту ресурсу в систему профілювання (Firefox Profiler) для визначення інформації про його розмір. У панелях інспектування HTML-елементів та анімації забезпечено відображення псевдоелементів View Transitions. У панелі з правилами CSS реалізовано відображення правил @position-try, які застосовуються для керування показом елементів, прив'язаних до розташування інших елементів (CSS Anchor Positioning).
  • У версії Firefox для Android додано захист від атак по стороннім каналам, таким як Spectre, які застосовуються для обходу ізоляції між сайтами. Раніше подібний захист був доступний лише у збірках для десктоп-систем.

Крім нововведень та виправлення помилок у Firefox 147 усунуто 23 вразливості. 10 вразливостей викликані проблемами роботи з пам'яттю, такими як переповнення буферів та звернення до звільнених областей пам'яті. Потенційно дані проблеми можуть призвести до виконання коду зловмисника при відкритті спеціально оформлених сторінок. 3 вразливості дозволяють обійти sandbox-ізоляцію через некоректну перевірку кордонів і цілісне переповнення в компоненті для роботи з графікою.

Джерело: opennet.ru

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