Firma Google zaprezentowała wydanie przeglądarki internetowej Chrome 105. Jednocześnie dostępna jest stabilna wersja projektu open-source Chromium, będącego podstawą Chrome. Przeglądarka Chrome różni się od Chromium używaniem logo Google, systemem wysyłania powiadomień w przypadku awarii, modułami do odtwarzania chronionych przez DRM treści wideo, systemem automatycznego instalowania aktualizacji, stałym włączeniem izolacji w Sandboxie, dostarczaniem kluczy do Google API oraz przesyłaniem parametrów RLZ podczas wyszukiwania. Dla tych, którzy potrzebują więcej czasu na aktualizację, wspierana jest osobna wersja Extended Stable, która trwa 8 tygodni. Następne wydanie Chrome 106 jest zaplanowane na 27 września.
Główne zmiany w Chrome 105:
- Zakończono wsparcie dla specjalistycznych aplikacji webowych Chrome Apps, które zastąpione zostały odrębnymi aplikacjami webowymi opartymi na technologii Progressive Web Apps (PWA) i standardowych Web API. Początkowo Google ogłosiło zamiar rezygnacji z Chrome Apps już w 2016 roku i planowało zakończyć ich wsparcie do 2018 roku, ale później odłożyło ten plan. W Chrome 105 przy próbie instalacji aplikacji Chrome Apps wyświetlane będzie ostrzeżenie o zakończeniu ich wsparcia, ale same aplikacje będą nadal działać. W Chrome 109 możliwość uruchamiania Chrome Apps zostanie wyłączona.
- Zabezpieczono dodatkową izolację procesu «renderer», odpowiedzialnego za renderowanie. Proces ten jest teraz realizowany w dodatkowym kontenerze (App Container), wprowadzonym na istniejący system izolacji sandbox. W przypadku wykorzystania luki w kodzie renderowania, wprowadzone ograniczenia nie pozwolą atakującym na uzyskanie dostępu do sieci, dzięki zakazowi wywoływania systemowych połączeń związanych z możliwościami sieciowymi.
- Wdrożono własne zintegrowane repozytorium głównych certyfikatów urzędów certyfikacji (Chrome Root Store). Nowe repozytorium nie jest obecnie domyślnie włączone, a do zakończenia wdrażania certyfikaty będą nadal weryfikowane z użyciem specyficznego dla każdej platformy repozytorium. Testowane rozwiązanie przypomina podejście firmy Mozilla, która wspiera niezależne repozytorium głównych certyfikatów dla Firefoksa, używane jako pierwszy element do weryfikacji łańcucha zaufania certyfikatów przy otwieraniu stron za pomocą HTTPS.
- Rozpoczęto przygotowania do zakończenia wsparcia dla API Web SQL, które nie jest standardyzowane, jest rzadko używane i wymaga przepisania, aby dostosować się do współczesnych wymagań bezpieczeństwa. W Chrome 105 zablokowano dostęp do Web SQL z kodu ładowanego bez użycia HTTPS, a także dodano ostrzeżenie o przestarzałej technologii w DevTools. W 2023 roku planuje się usunięcie API Web SQL. Dla deweloperów, którzy potrzebują podobnej funkcjonalności, przygotowana zostanie alternatywa oparta na WebAssembly.
- W Chrome zrezygnowano z obsługi synchronizacji z wersjami Chrome 73 i wcześniejszymi.
- Na platformach macOS i Windows aktywowano wbudowany przeglądarka certyfikatów, która zastąpiła wywołanie interfejsu dostarczonego przez system operacyjny. Wcześniej wbudowana przeglądarka była używana tylko w wersjach dla Linux i ChromeOS.
- Do wersji na platformę Android dodano ustawienia do zarządzania API „Topics & Interest Group”, promowanego w ramach inicjatywy Privacy Sandbox, które pozwala określić kategorie zainteresowań użytkownika i wykorzystać je zamiast plików cookie do śledzenia w celu wydzielenia grup użytkowników o podobnych zainteresowaniach bez identyfikacji poszczególnych użytkowników. W poprzednim wydaniu takie ustawienia zostały dodane do wersji dla Linux, ChromeOS, macOS i Windows.
- Przy włączonej zaawansowanej ochronie przeglądarki (Safe Browsing > Enhanced protection) wprowadzono zbieranie telemetrii dotyczącej zainstalowanych rozszerzeń, dostępu do API i połączeń z zewnętrznymi witrynami. Podane dane są wykorzystywane na serwerach Google do identyfikacji złośliwej aktywności i naruszeń zasad przez rozszerzenia przeglądarki.
- Przeniesiono do kategorii przestarzałych i zostanie zablokowane w wydaniu Chrome 106 użycie znaków nie-ASCII w domenach wskazanych w nagłówku Cookie (dla domen IDN należy podawać domeny w formacie punycode). Zmiana ta dostosuje przeglądarkę do wymagań RFC 6265bis oraz zachowania, które zostało zaimplementowane w Firefox.
- Zaprezentowano API Custom Highlight, które ma na celu dowolną modyfikację stylu podświetlonych obszarów tekstu, umożliwiając odejście od sztywno określonego stylu podświetlenia dostarczanego przez przeglądarkę (::selection, ::inactive-selection) oraz podkreślenia błędów składniowych (::spelling-error, ::grammar-error). W pierwszej wersji API wsparcie dotyczy zmiany koloru tekstu i tła przy użyciu pseudoelementów color i background-color, ale w przyszłości zostaną dodane inne możliwości dostosowywania stylu.
Jako przykład zadań, które można rozwiązać za pomocą nowego API, wymieniono dodanie do frameworków webowych, oferujących narzędzia do edycji tekstu, własnych mechanizmów podświetlenia tekstu, różnego rodzaju podświetlenia w przypadku jednoczesnej edycji przez wielu użytkowników, wyszukiwania w wirtualizowanych dokumentach oraz oznaczania błędów podczas sprawdzania pisowni. Wcześniej do stworzenia niestandardowego podświetlenia wymagana była skomplikowana manipulacja drzewem DOM, podczas gdy API Custom Highlight oferuje gotowe operacje do dodawania i usuwania podświetlenia, które nie wpływają na strukturę DOM i stosują style powiązane z obiektami Range.
- W CSS dodano zapytanie „@container”, które umożliwia formowanie stylu elementów w zależności od rozmiaru elementu nadrzędnego. „@container” przypomina zapytania „@media”, ale odnosi się nie do rozmiaru całego widocznego obszaru, a do wymiaru bloku (kontenera), w którym znajduje się element, co pozwala na definiowanie dla elementów potomnych własnej logiki wyboru stylu, niezależnie od tego, w jakim miejscu na stronie znajduje się dany element.

- Dodano pseudoklasa CSS „:has()” do sprawdzania obecności elementu potomnego w rodzicu. Na przykład „p:has(span)” owija elementy <p>, w których znajduje się element <span>.
- Dodano API HTML Sanitizer, które pozwala na usunięcie z treści elementów wpływających na wyświetlanie i wykonanie podczas wywoływania metody setHTML(). API może być użyteczne do oczyszczania danych przychodzących z zewnątrz pod kątem eliminacji HTML-tagów, które mogą być wykorzystywane do przeprowadzania ataków XSS.
- Udostępniono możliwość wykorzystania API Streams (ReadableStream) do wysyłania zapytań fetch zanim załadowane zostanie ciało odpowiedzi, co oznacza, że można rozpocząć przesyłanie danych bez oczekiwania na zakończenie generowania strony.
- Dla instalowanych odrębnych aplikacji webowych (PWA, Progressive Web App) udostępniono możliwość zmiany wyglądu obszaru nagłówka okna za pomocą komponentów Window Controls Overlay, które rozszerzają obszar ekranu aplikacji webowej na całe okno i pozwalają nadać aplikacji webowej wygląd typowej aplikacji desktopowej. Aplikacja webowa może zarządzać renderowaniem i przetwarzaniem wejścia w całym oknie, z wyjątkiem nałożonego bloku z domyślnymi przyciskami sterowania oknem (zamykanie, minimalizowanie, maksymalizowanie).

- Stabilizowano możliwość dostępu do Media Source Extensions z dedykowanych workerów (w kontekście DedicatedWorker), co można wykorzystać, na przykład, do zwiększenia wydajności buforowanego odtwarzania danych multimedialnych poprzez tworzenie obiektu MediaSource w osobnym workerze i przekazywanie wyników jego pracy do HTMLMediaElement w głównym wątku.
- W API Client Hints, które rozwija się w celu zastąpienia nagłówka User-Agent i pozwala selektywnie przekazywać dane o konkretnych parametrach przeglądarki i systemu (wersja, platforma itd.) tylko na żądanie, dodano wsparcie dla właściwości Sec-CH-Viewport-Height, umożliwiającej uzyskanie informacji o wysokości widocznego obszaru. serweremZmodyfikowano format oznaczeń dla określenia w tagu „meta” parametrów Client Hints dla zasobów zewnętrznych: Było: Stało się:
- Dodano możliwość tworzenia globalnych obsługiwaczy zdarzeń onbeforeinput (document.documentElement.onbeforeinput), dzięki którym aplikacje webowe mogą nadpisywać zachowanie podczas edytowania tekstu w blokach ,
- Rozszerzono możliwości API Navigation, umożliwiającego aplikacjom webowym przechwytywanie operacji nawigacji w oknie, inicjowanie przejść i analizowanie historii działań z aplikacją. Dodano nowe metody intercept() do przechwytywania przejść i scroll() do przewijania do określonej pozycji.
- Dodano statyczną metodę Response.json(), umożliwiającą tworzenie ciała odpowiedzi na podstawie danych typu JSON.
- Wprowadzono ulepszenia w narzędziach dla web developerów. W debuggerze umożliwiono edytowanie górnych funkcji w stosie bez przerywania sesji debugowania, gdy punkt zaczepienia jest aktywny. W panelu Recorder, służącym do nagrywania, odtwarzania i analizy działań użytkownika na stronie, wprowadzono obsługę punktów zaczepienia, krokowego odtwarzania oraz rejestrowania zdarzeń najechania myszą.
W panelu analizy wydajności dodano metryki LCP (Largest Contentful Paint) w celu wykrywania opóźnień związanych z renderowaniem dużych (widocznych dla użytkownika) elementów w obszarze widocznym, takich jak obrazy, filmy i bloki. W panelu Elements wprowadzono oznaczenie górnych warstw, wyświetlanych na innym kontencie, specjalną ikoną. Dla WebAssembly dodano możliwość załadowania danych debugowania w formacie DWARF.
Oprócz nowości i poprawek w nowej wersji usunięto 24 podatności. Wiele z nich wykryto w wyniku automatycznego testowania przy użyciu narzędzi AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer i AFL. Nie znaleziono krytycznych problemów, które mogłyby obejść wszystkie poziomy ochrony przeglądarki i uruchomić kod w systemie poza środowiskiem sandbox. W ramach programu nagród za odkrycie podatności firma Google przyznała 21 nagród o łącznej wartości 60500 dolarów (jedna nagroda 10000 dolarów, jedna nagroda 9000 dolarów, jedna nagroda 7500 dolarów, jedna nagroda 7000 dolarów, dwie nagrody 5000 dolarów, cztery nagrody 3000 dolarów, dwie nagrody 2000 dolarów i jedna nagroda 1000 dolarów). Wartość siedmiu nagród nie została jeszcze określona.
Źródło: opennet.ru


