Firma Google zaprezentowała wydanie przeglądarki internetowej Chrome 91. Jednocześnie dostępna jest stabilna wersja otwartego projektu Chromium, który stanowi podstawę Chrome. Przeglądarka Chrome wyróżnia się użyciem logotypów Google, systemem powiadamiania w przypadku awarii, modułami do odtwarzania chronionych treści wideo (DRM), automatycznym systemem aktualizacji oraz przekazywaniem parametrów RLZ podczas wyszukiwania. Następne wydanie Chrome 92 zaplanowane jest na 20 lipca.
Główne zmiany w Chrome 91:
- Wprowadzono możliwość zatrzymania wykonania JavaScript w zminimalizowanej grupie kart. W Chrome 85 dodano wsparcie dla grupowania kart, które mogą być powiązane z określonym kolorem i etykietą. Kliknięcie na etykietę grupy minimalizuje powiązane z nią karty, a zamiast nich zostaje tylko jedna etykieta (powtórne kliknięcie na etykietę rozwija grupę). W nowym wydaniu, w celu zmniejszenia obciążenia CPU i oszczędności energii, wprowadzono zatrzymanie aktywności w zminimalizowanych kartach. Wyjątek stanowią karty, w których odtwarzany jest dźwięk, używany jest API Web Locks lub IndexedDB, wykonano połączenie z urządzeniem USB, prowadzone jest nagrywanie wideo, dźwięku lub zawartości okien. Zmiany będą wprowadzone stopniowo, zaczynając od niewielkiego procentu użytkowników.
- Włączono wsparcie dla metody negocjacji kluczy odpornej na ataki na komputerach kwantowych. Komputery kwantowe znacznie szybciej rozwiązują zadanie rozkładu liczby naturalnej na czynniki pierwsze, które stanowi podstawę nowoczesnych asymetrycznych algorytmów szyfrowania i jest efektywnie nierozwiązywalne na klasycznych procesorach. W celu użycia w TLSv1.3 udostępniono wtyczkę CECPQ2 (Combined Elliptic-Curve and Post-Quantum 2), łączącą klasyczny mechanizm wymiany kluczy X25519 z schematem HRSS, opartym na algorytmie NTRU Prime, opracowanym dla postkwantowych systemów kryptograficznych.
- Całkowicie zaprzestano wsparcia dla protokołów TLS 1.0 i TLS 1.1, które zostały sklasyfikowane przez komitet IETF (Internet Engineering Task Force) jako przestarzałe. Usunięto również możliwość powrotu do TLS 1.0/1.1 poprzez zmianę polityki SSLVersionMin.
- W wersjach dla platformy Linux wprowadzono możliwość korzystania z trybu „DNS przez HTTPS” (DoH, DNS over HTTPS), który wcześniej był udostępniony użytkownikom Windows, macOS, ChromeOS i Android. DNS-over-HTTPS zostanie automatycznie włączony dla użytkowników, którzy mają w ustawieniach wskazanych dostawców DNS obsługujących tę technologię (do DNS-over-HTTPS używany jest ten sam dostawca, który był korzystany dla DNS). Na przykład, jeśli użytkownik w systemowych ustawieniach wskazał DNS 8.8.8.8, to w Chrome zostanie aktywowany DNS-over-HTTPS usługi Google („https://dns.google.com/dns-query”), jeśli DNS to 1.1.1.1, to DNS-over-HTTPS usługi Cloudflare („https://cloudflare-dns.com/dns-query”) itd.
- Na listę zablokowanych portów dodano port 10080, który jest używany w Amanda backup oraz VMWare vCenter. Wcześniej zablokowane zostały porty 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061 oraz 6566. Dla portów na czarnej liście blokowane jest wysyłanie zapytań HTTP, HTTPS i FTP w celu ochrony przed atakami NAT slipstreaming, które umożliwiają po otwarciu specjalnie przygotowanej strony internetowej przez atakującego nawiązać połączenie sieciowe z serwera atakującego na dowolny port UDP lub TCP w systemie użytkownika, mimo użycia wewnętrznego zakresu adresów (192.168.x.x, 10.x.x.x).
- Udostępniono możliwość automatycznego uruchamiania aplikacji webowych (PWA — Progressive Web Apps) po zalogowaniu użytkownika do systemu (Windows i macOS). Autoodtwarzanie jest konfigurowane na stronie chrome://apps. Funkcjonalność jest obecnie testowana na małym procencie użytkowników, natomiast dla pozostałych wymaga aktywacji ustawienia „chrome://flags/#enable-desktop-pwas-run-on-os-login”.
- W ramach prac nad wprowadzeniem inkluzywnej terminologii plik „master_preferences” został przemianowany na „initial_preferences”. W celu zachowania kompatybilności wsparcie dla „master_preferences” zostanie jeszcze przez jakiś czas zachowane w przeglądarce. Wcześniej przeglądarka już przestała używać terminów „whitelist”, „blacklist” oraz „native”.
- W rozszerzonym trybie ochrony przed niebezpiecznymi stronami (Enhanced Safe Browsing) aktywowane są dodatkowe kontrole w celu ochrony przed phishingiem, złośliwą aktywnością i innymi zagrożeniami w sieci. Wprowadzono możliwość wysyłania przesyłanych plików do weryfikacji po stronie Google. Ponadto w Enhanced Safe Browsing uwzględniono tokeny powiązane z kontem Google przy wykrywaniu prób phishingu oraz wysyłanie na serwery Google wartości nagłówka Referrer w celu weryfikacji przekierowań z złośliwych stron.
- W edycji na platformę Android poprawiono wygląd elementów formularzy internetowych, które zostały zoptymalizowane do użycia na ekranach dotykowych i systemach dla osób z ograniczeniami (dla systemów desktopowych wygląd został zmieniony w Chrome 83). Celem przekształcenia była unifikacja wyglądu elementów formularzy oraz wyeliminowanie niespójności stylów — wcześniej część elementów formularzy była projektowana zgodnie z elementami interfejsu systemów operacyjnych, a część zgodnie z najpopularniejszymi stylami. Z tego powodu różne elementy inaczej pasowały do ekranów dotykowych i systemów dla osób z ograniczeniami.


- Dodano ankietę z opinią użytkowników, wyświetlaną przy otwieraniu ustawień Privacy Sandbox (chrome://settings/privacySandbox).
- Przy uruchamianiu wersji Android Chrome na tabletach z dużym ekranem zapewniono żądanie wersji desktopowej witryny, a nie edycji mobilnej. Zmienić to zachowanie można, używając ustawienia „chrome://flags/#request-desktop-site-for-tablets”.
- Przerobiono kod renderowania tabel, co pozwoliło rozwiązać problemy z niespójnością działania przy wyświetlaniu tabel w Chrome i Firefox/Safari.
- Zakończono przetwarzanie certyfikatów serwerowych hiszpańskiego centrum certyfikacji Camerfirma z powodu powtarzających się incydentów związanych z naruszeniami przy wydawaniu certyfikatów od 2017 roku. Obsługa certyfikatów klienckich została zachowana, blokada dotyczy tylko certyfikatów używanych na stronach dla HTTPS.
- Kontynuacja wdrażania wsparcia dla segmentacji sieci w celu ochrony przed metodami śledzenia ruchu użytkownika między stronami, opartymi na przechowywaniu identyfikatorów w obszarach, które nie są przeznaczone do trwałego przechowywania informacji („Superciasteczka”). Ponieważ zasoby w pamięci podręcznej są przechowywane w przestrzeni nazw wspólnej, niezależnie od pierwotnej domeny, jedna strona może zidentyfikować ładowanie zasobów z innej strony poprzez sprawdzenie istnienia tego zasobu w pamięci podręcznej. Ochrona opiera się na zastosowaniu segmentacji sieci (Network Partitioning), której istotą jest dodanie do współdzielonych pamięci podręcznych dodatkowego powiązania rekordów do domeny, z którego otwierana jest strona główna, co ogranicza zasięg pamięci podręcznej dla skryptów śledzących ruch tylko do bieżącej strony (skrypt w iframe nie będzie w stanie sprawdzić, czy zasób był ładowany z innej strony).
Kosztem segmentacji jest obniżenie efektywności pamięci podręcznej, prowadzące do nieznacznego zwiększenia czasu ładowania strony (maksymalnie o 1,32%, ale dla 80% stron o 0,09-0,75%). Aby przetestować tryb segmentacji, można uruchomić przeglądarkę z opcją „—enable-features=PartitionConnectionsByNetworkIsolationKey, PartitionExpectCTStateByNetworkIsolationKey, PartitionHttpServerPropertiesByNetworkIsolationKey, PartitionNelAndReportingByNetworkIsolationKey, PartitionSSLSessionsByNetworkIsolationKey, SplitHostCacheByNetworkIsolationKey”.
- Dodano zewnętrzne REST API VersionHistory (https://versionhistory.googleapis.com/v1/chrome), przez które można uzyskać informacje o wersjach Chrome w odniesieniu do platform i gałęzi, a także historię aktualizacji przeglądarki.
- W iframe, ładowanych z domen, różniących się od domeny podstawowej strony, zablokowano wywoływanie dialogów JavaScript alert(), confirm() i prompt(), co ma na celu ochronę użytkowników przed próbami wyświetlenia przez zewnętrzny skrypt wiadomości udających powiadomienia wyświetlane przez główną stronę.
- Stabilizowano i domyślnie zaproponowano API WebAssembly SIMD do wykorzystania wektorowych instrukcji SIMD w aplikacjach w formacie WebAssembly. Aby zapewnić niezależność od platformy, proponowany jest nowy 128-bitowy typ, który może reprezentować różne typy spakowanych danych, oraz kilka podstawowych operacji wektorowych do przetwarzania spakowanych danych. SIMD pozwala na zwiększenie wydajności poprzez równoległe przetwarzanie danych i będzie przydatny w kompilacji natywnego kodu do WebAssembly.
- W trybie Origin Trials (eksperymentalne funkcje wymagające osobnej aktywacji) dodano kilka nowych API. Origin Trial oznacza możliwość pracy z określonym API z aplikacji ładowanych z localhost lub 127.0.0.1, lub po zarejestrowaniu się i uzyskaniu specjalnego tokena, który jest ważny przez ograniczony czas dla konkretnej witryny.
- WebTransport — protokół i towarzyszące API JavaScript do wysyłania i odbierania danych między przeglądarką a serwerem. Kanał komunikacyjny jest organizowany na bazie HTTP/3 przy użyciu protokołu QUIC, który z kolei jest zbudowany na protokole UDP i obsługuje multiplexing wielu połączeń oraz zapewnia metody szyfrowania równoważne TLS/SSL.
WebTransport może być używany zamiast mechanizmów WebSockets i RTCDataChannel, oferując dodatkowe funkcje, takie jak organizacja przesyłu w wielu strumieniach, strumienie jednokierunkowe, dostarczanie bez uwzględnienia kolejności wysyłania pakietów (out-of-order), oraz tryby dostarczania niezawodne i niezawodne. Ponadto WebTransport może być stosowany zamiast mechanizmu Server Push, z którego zrezygnowała firma Google w Chrome.
- Deklaratywny interfejs do definiowania linków do odseparowanych aplikacji webowych (PWA), włączany za pomocą parametru capture_links w manifeście aplikacji webowej i pozwalający stronom automatycznie otwierać nowe okno PWA po kliknięciu na link aplikacji lub przechodzić w tryb jednookienny, podobnie jak w aplikacjach mobilnych.
- Dodano API WebXR Plane Detection, które dostarcza informacje o płaskich powierzchniach w wirtualnym środowisku 3D. Wspomniane API umożliwia ominięcie zasobożernej obróbki danych uzyskanych przy pomocy wywołania MediaDevices.getUserMedia(), wykorzystując własne implementacje algorytmów widzenia komputerowego. Przypomnijmy, że API WebXR pozwala znormalizować interakcję z różnymi klasami urządzeń rzeczywistości wirtualnej, od stacjonarnych zestawów 3D po rozwiązania mobilne.
- WebTransport — protokół i towarzyszące API JavaScript do wysyłania i odbierania danych między przeglądarką a serwerem. Kanał komunikacyjny jest organizowany na bazie HTTP/3 przy użyciu protokołu QUIC, który z kolei jest zbudowany na protokole UDP i obsługuje multiplexing wielu połączeń oraz zapewnia metody szyfrowania równoważne TLS/SSL.
- Zrealizowano obsługę pracy z WebSockets na bazie HTTP/2 (RFC 8441), która działa tylko dla zabezpieczonych zapytań do WebSockets i przy już nawiązanym połączeniu HTTP/2 z serwerem, w którym zapowiedziano wsparcie dla rozszerzenia „WebSockets over HTTP/2”.
- Ograniczenia dokładności wartości timera zwracanych przez wywołanie performance.now() zostały unifikowane dla wszystkich obsługiwanych platform i dostosowane z uwzględnieniem możliwej izolacji handlerów w osobnych procesach. Na przykład, w systemach desktopowych dokładność w nieizolowanych kontekstach została zmniejszona z 5 do 100 mikrosekund.
- W zestawach dla komputerów stacjonarnych wprowadzono możliwość odczytu plików z schowka (zapis plików do schowka pozostaje wciąż zablokowany). async function onPaste(e) { let file = e.clipboardData.files[0]; let contents = await file.text(); }
- W CSS wprowadzono regułę @counter-style, która pozwala definiować własny styl liczników i etykiet w numerowanych listach.
- W CSS dodano pseudoklasy „:host()” i „:host-context()”, umożliwiające przekazywanie pojedynczych wartości złożonych selektorów () oprócz list selektorów ().
- Dodano interfejs GravitySensor do określania danych objętościowych (w trzech osiach współrzędnych) z czujnika grawitacji.
- W API File System Access wprowadzono możliwość definiowania rekomendacji dotyczących wyboru nazwy pliku i katalogu, proponowanych w oknie dialogowym tworzenia lub otwierania pliku.
- W załadowanych z innych domen iframe zezwolono na dostęp do API WebOTP po udzieleniu przez użytkownika odpowiednich uprawnień. WebOTP umożliwia odczyt jednorazowych kodów potwierdzających przesyłanych przez SMS.
- Zezwolono na udostępnianie danych uwierzytelniających dla witryn powiązanych za pomocą mechanizmu DAL (Digital Asset Links), umożliwiającego powiązanie aplikacji Android z witrynami w celu uproszczenia logowania.
- W Service workerze zezwolono na użycie modułów JavaScript. Przez określenie typu 'module' podczas wywoływania konstruktora, wskazane skrypty będą ładowane w formie modułów i dostępne do importowania w kontekście worker-a. Wsparcie dla modułów upraszcza współdzielenie kodu na stronach webowych i w Service workerach.
- W JavaScript wprowadzono możliwość sprawdzenia istnienia prywatnych pól w obiekcie, używając składni „#foo in obj”. class A { static test(obj) { console.log(#foo in obj); } #foo = 0; } A.test(new A()); // true A.test({}); // false
- W JavaScript domyślnie pozwala się na używanie słowa kluczowego await na najwyższym poziomie modułów, co umożliwia łagodniejsze integrowanie asynchronicznych wywołań w proces ładowania modułów, eliminując konieczność opakowywania w „async function”. Na przykład, zamiast (async function() { await Promise.resolve(console.log(‘test’)); }()); teraz można pisać await Promise.resolve(console.log(‘test’));
- W silniku JavaScript V8 zwiększono wydajność cache'owania szablonów, co pozwoliło na zwiększenie prędkości wykonania testu Speedometer2-FlightJS o 4,5%.
- Wprowadzono dużą ilość ulepszeń w narzędziach dla web deweloperów. Dodano nowy tryb inspekcji pamięci (Memory inspector), dostarczający narzędzia do badania danych ArrayBuffer i pamięci Wasm.

W panelu Performance dodano zbiorczy wskaźnik wydajności, pozwalający ocenić, czy strona wymaga optymalizacji, czy nie.

Podczas podglądu obrazów w panelu Elements oraz w panelu analizy zapytań sieciowych dostępne są informacje na temat proporcji obrazu, parametrów wizualizacji oraz rozmiaru pliku.

W panelu inspekcji sieci pojawiła się możliwość zmiany przyjmowanych wartości nagłówka Content-Encoding.

W panelu pracy ze stylami dodano możliwość szybkiego podglądu obliczonej wartości podczas nawigacji po parametrach CSS, wybierając z menu kontekstowego opcję „Wyświetl obliczoną wartość”.

Oprócz nowości i poprawek błędów w nowej wersji usunięto 32 luki bezpieczeństwa. Wiele z luk zostało zidentyfikowanych w wyniku automatycznego testowania przy użyciu narzędzi AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer i AFL. Nie wykryto krytycznych problemów, które mogłyby umożliwić obejście wszystkich poziomów ochrony przeglądarki i wykonanie kodu w systemie poza środowiskiem sandbox. W ramach programu wypłaty nagród za wykrywanie luk bezpieczeństwa, firma Google wypłaciła 21 nagród na łączną kwotę 92 000 dolarów (jedna nagroda 20 000 dolarów, jedna nagroda 15 000 dolarów, cztery nagrody po 7 500 dolarów, trzy nagrody po 5 000 dolarów, trzy nagrody po 3 000 dolarów, dwie nagrody po 1 000 dolarów i dwie nagrody po 500 dolarów). Wysokość 5 nagród nie została jeszcze określona.
Źródło: opennet.ru







