Wydano kolejną wersję Chrome 86 i stabilne wydanie Chromium.
Główne zmiany w Chrome 86:
- ochrona przed niebezpiecznym przesyłaniem formularzy na stronach załadowanych przez HTTPS, które jednak wysyłają dane przez HTTP.
- Blokowanie niebezpiecznego ładowania (http) plików wykonywalnych zostało rozszerzone o blokowanie niebezpiecznego ładowania archiwów (zip, iso itd.) oraz wyświetlanie ostrzeżeń przy niebezpiecznym ładowaniu dokumentów (docx, pdf itd.). W następnej wersji planowane jest blokowanie dokumentów oraz wyświetlanie ostrzeżenia dla obrazów, plików tekstowych i multimediów. Blokada została wprowadzona, ponieważ ładowanie plików bez szyfrowania może być wykorzystywane do działań złośliwych poprzez podmienianie treści w trakcie ataków MITM.
- W domyślnym menu kontekstowym wyświetlana jest opcja „Zawsze pokazuj pełny URL”, którą wcześniej trzeba było włączyć, zmieniając ustawienia na stronie about:flags. Pełny URL można również zobaczyć, klikając dwa razy na pasku adresu. Przypominamy, że od wersji Chrome 76 adres stał się domyślnie wyświetlany bez protokołu i poddomeny www. W Chrome 79 usunięto opcję przywracającą poprzednie zachowanie, ale po niezadowoleniu użytkowników w Chrome 83 dodano nowy eksperymentalny flag, który dodaje punkt do menu kontekstowego, umożliwiający wyłączenie ukrywania i pokazywania pełnego URL w każdych warunkach.
- Wznowiono inicjatywę dotyczącą usunięcia wsparcia dla FTP. W Chrome 86 FTP jest domyślnie wyłączone dla około 1% użytkowników, a w Chrome 87 zasięg wyłączenia wzrośnie do 50%, jednak wsparcie będzie można przywrócić za pomocą flagi "—enable-ftp" lub "—enable-features=FtpProtocol". W Chrome 88 wsparcie dla FTP zostanie całkowicie wyłączone.
- W wersji na Androida, podobnie jak w wersji na komputery stacjonarne, w menedżerze haseł wprowadzono sprawdzanie zapisanych loginów i haseł w bazie skompromitowanych kont, z wyświetlaniem ostrzeżeń w przypadku wykrycia problemów lub próby użycia trywialnych haseł. Sprawdzenie odbywa się na podstawie bazy obejmującej ponad 4 miliardy skompromitowanych kont, które znalazły się w wyciekach baz danych użytkowników. Aby zachować prywatność, stosuje się porównanie haszy prefiksów po stronie użytkownika, a same hasła oraz ich pełne hasze nie są przesyłane na zewnątrz.
- W wersji na Androida dodano również przycisk „Sprawdzenie bezpieczeństwa” (Safety check) oraz rozszerzony tryb ochrony przed niebezpiecznymi stronami (Enhanced Safe Browsing). Przycisk „Safety check” pokazuje podsumowanie możliwych problemów z bezpieczeństwem, takich jak korzystanie ze skompromitowanych haseł, status sprawdzania złośliwych stron (Safe Browsing), dostępność niezainstalowanych aktualizacji oraz wykrywanie złośliwych dodatków. Rozszerzony tryb ochrony aktywuje dodatkowe kontrole w celu zabezpieczenia przed phishingiem, złośliwą działalnością i innymi zagrożeniami w sieci, a także oferuje dodatkową ochronę dla konta Google oraz usług Google (Gmail, Drive itd.). W trybie normalnym Safe Browsing kontrole są wykonywane lokalnie na podstawie bazy danych okresowo pobieranej na system klienta, natomiast w Enhanced Safe Browsing informacje o stronach i pobraniach są przekazywane do weryfikacji w czasie rzeczywistym po stronie Google, co pozwala na szybkie reagowanie na zagrożenia zaraz po ich wykryciu, bez czekania na aktualizację lokalnej czarnej listy.
- Dodano wsparcie dla pliku wskaźnika ".well-known/change-password", za pomocą którego właściciele stron mogą wskazać adres formularza sieciowego do zmiany hasła. W przypadku wykrycia kompromitacji danych logowania użytkownika, Chrome teraz natychmiast zaproponuje użytkownikowi formularz do zmiany hasła, określony na podstawie informacji z tego pliku.
- Wprowadzono nowe powiadomienie „Wskazówka dotycząca bezpieczeństwa”, które wyświetla się podczas otwierania stron internetowych, których domena jest bardzo podobna do innej i heurystyka wskazuje na duże prawdopodobieństwo spoofingu (np. otworzono goog0le.com zamiast google.com).
* Wprowadzono wsparcie dla pamięci podręcznej przejść (Back-forward cache), która zapewnia natychmiastowe przejście podczas korzystania z przycisków „Wstecz” i „Dalej” lub podczas nawigacji po wcześniej przeglądanych stronach bieżącej witryny. Pamięć podręczna jest włączana za pomocą ustawienia chrome://flags/#back-forward-cache.
- Optymalizacja zużycia zasobów CPU przez okna, które są poza zasięgiem. Chrome sprawdza, czy okno przeglądarki nie jest zasłonięte innymi oknami i wyklucza renderowanie pikseli w obszarach nakładania się. Wskazana optymalizacja została wprowadzona dla niewielkiego procentu użytkowników w Chrome 84 i 85, a teraz jest aktywowana powszechnie. W porównaniu do poprzednich wydań usunięto również niespójność z systemami wirtualizacji, przez które wyświetlały się puste białe strony.
- Wzmocniono ograniczenie zużycia zasobów dla zakładek w tle. Takie zakładki nie mogą teraz zużywać więcej niż 1% zasobów CPU i mogą być aktywowane nie częściej niż raz na minutę. Po pięciu minutach w tle zakładki są zamrażane, z wyjątkiem zakładek, w których odtwarzana jest zawartość multimedialna lub prowadzone jest nagranie.
- Wznowiono prace nad unifikacją nagłówka HTTP User-Agent. W nowej wersji dla wszystkich użytkowników aktywowano wsparcie dla mechanizmu User-Agent Client Hints, rozwijanego jako zamiennik User-Agent. Nowy mechanizm polega na selektywnym przekazywaniu danych o konkretnych parametrach przeglądarki i systemu (wersja, platforma itp.) tylko na żądanie serwera i daje użytkownikom możliwość selektywnego udostępniania takich informacji właścicielom witryn. Przy użyciu User-Agent Client Hints identyfikator nie jest domyślnie przesyłany bez wyraźnej prośby, co uniemożliwia prowadzenie pasywnej identyfikacji (domyślnie podawana jest tylko nazwa przeglądarki).
Zmieniła się indikacja dostępności aktualizacji i konieczności ponownego uruchomienia przeglądarki w celu jej zainstalowania. Zamiast kolorowej strzałki w polu awatara konta teraz pojawia się napis „Aktualizacja”. - Zrealizowano prace nad przetłumaczeniem przeglądarki, aby zastosować inkluzywną terminologię. W nazwach polityk terminy „whitelist” i „blacklist” zostały zastąpione przez „allowlist” i „blocklist” (już dodane polityki nadal będą działać, ale zostanie wyświetlone ostrzeżenie o ich przestarzałości). W kodzie i nazwach plików odniesienia do „blacklist” zamieniono na „blocklist”. Wzmianki „blacklist” i „whitelist” widoczne dla użytkownika zostały zastąpione już na początku 2019 roku.
Dodano eksperymentalną funkcję edytowania zapisanych haseł, którą można aktywować za pomocą flagi „chrome://flags/#edit-passwords-in-settings”. - Przetworzono na stabilne i ogólnodostępne API Native File System, umożliwiające tworzenie aplikacji webowych współpracujących z plikami w lokalnym systemie plików. Na przykład, nowe API może być użyteczne w zintegrowanych środowiskach programistycznych, edytorach tekstu, obrazów i wideo uruchamianych w przeglądarce. Aby uzyskać możliwość bezpośredniego zapisywania i odczytywania plików lub korzystania z okien dialogowych do otwierania i zapisywania plików, a także do nawigacji po zawartości katalogów, aplikacja prosi użytkownika o specjalne potwierdzenie.
- Dodano selektor CSS ":focus-visible", który korzysta z tej samej heurystyki, co przeglądarka przy podejmowaniu decyzji o pokazaniu wskaźnika zmiany fokusa (gdy fokus przemieszcza się na przycisk za pomocą kombinacji klawiszy, wskaźnik się pojawia, a przy kliknięciu myszą — nie). Poprzednio dostępny selektor CSS ":focus" zawsze podświetlał fokus. Dodatkowo w ustawieniach dodano opcję „Quick Focus Highlight”, po jej włączeniu obok aktywnych elementów pojawi się dodatkowy wskaźnik fokusa, który pozostaje widoczny nawet jeśli na stronie przez CSS wyłączono elementy stylu wizualnego podświetlenia fokusa.
- 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.
- API WebHID dla niskopoziomowego dostępu do urządzeń HID (Human Interface Device, klawiatury, myszy, kontrolery gier, panele dotykowe), umożliwiające implementację logiki pracy z urządzeniem HID w JavaScript w celu obsługi rzadkich urządzeń HID bez posiadania specyficznych sterowników w systemie. Przede wszystkim nowe API ma na celu zapewnienie wsparcia dla kontrolerów gier.
- Informacje o ekranach API rozszerzają możliwości umieszczania okien API o wsparcie dla konfiguracji z wieloma ekranami. W odróżnieniu od window.screen nowy API umożliwia manipulowanie rozmieszczeniem okna w ogólnej przestrzeni ekranowej systemów wielomonitorowych, nie ograniczając się do bieżącego ekranu.
- Meta-tag battery-savings, dzięki któremu strona może informować przeglądarkę o konieczności aktywacji trybów oszczędzania energii i optymalizacji obciążenia CPU.
- API COOP Reporting informuje o potencjalnych naruszeniach trybów izolacji Cross-Origin-Embedder-Policy (COEP) i Cross-Origin-Opener-Policy (COOP), bez stosowania rzeczywistych ograniczeń.
- W API Credential Management wprowadzono nowy typ danych uwierzytelniających PaymentCredential, zapewniający dodatkowe potwierdzenie dokonywanej operacji płatniczej. Strona weryfikująca, na przykład bank, ma możliwość wygenerowania klucza publicznego PublicKeyCredential, który może zostać zażądany przez sprzedawcę dla dodatkowego bezpiecznego potwierdzenia płatności.
- W API PointerEvents dodano wsparcie dla kątów wysokości (kąt między rysikiem a ekranem) i azymutu (kąt między osią X a rzutem rysika na ekran) w celu określenia nachylenia rysika, zamiast kątów TiltX i TiltY (kątów między płaszczyzną rysika a jedną z osi oraz płaszczyzną osi Y i Z). Dodano również funkcje konwersji między wysokością/azymutem a TiltX/TiltY.
- Zmiana kodowania spacji w URL podczas jego obliczania w obsługach protokołu — metoda navigator.registerProtocolHandler() teraz zastępuje spacje na „” zamiast „+”, co ujednolica zachowanie z innymi przeglądarkami, takimi jak Firefox.
- W CSS dodano pseudo-element "::marker", umożliwiający dostosowanie koloru, rozmiaru, kształtu i typu numerów oraz kropek w listach <ul> i <ol>.
- Dodano wsparcie dla nagłówka HTTP Document-Policy, który umożliwia ustalenie reguł dostępu do dokumentów podobnych do mechanizmu izolacji sandbox dla iframe, ale bardziej uniwersalnego. Na przykład poprzez Document-Policy można ograniczyć użycie niskiej jakości obrazów, wyłączyć powolne API JavaScript, ustalić zasady ładowania iframe, obrazów i skryptów, ograniczyć całkowity rozmiar dokumentu oraz przepustowość, zabronić metod prowadzących do przerysowania strony i wyłączyć funkcję Scroll-To-Text.
- W elemencie <fieldset> dodano wsparcie dla parametrów ‘inline-grid’, ‘grid’, ‘inline-flex’ i ‘flex’, ustawianych za pomocą właściwości CSS ‘display’.
- Dodano metoda ParentNode.replaceChildren() do wymiany wszystkich elementów podrzędnych węzła rodzicielskiego na inny węzeł DOM. Wcześniej do wymiany węzłów można było używać kombinacji metod node.removeChild() oraz node.append() lub node.innerHTML i node.append().
- Poszerzono zakres schematów URL, które można zastąpić za pomocą registerProtocolHandler(). W listę schematów włączono zdecentralizowane protokoły cabal, dat, did, dweb, ethereum, hyper, ipfs, ipns i ssb, co umożliwia definiowanie linków do elementów niezależnie od witryny lub bramy zapewniającej dostęp do zasobu.
- W API Asynchronous Clipboard dodano wsparcie dla formatu text/html do kopiowania i wklejania HTML za pośrednictwem schowka (podczas zapisu i odczytu do schowka przeprowadzana jest czyszczenie niebezpiecznych konstrukcji HTML). Zmiana ta umożliwia organizowanie w web-edytorach wklejania i kopiowania sformatowanego tekstu z obrazami i linkami.
- W WebRTC dodano możliwość podłączania własnych uchwytów danych, które są wywoływane na etapach kodowania lub dekodowania WebRTC MediaStreamTrack. Na przykład, tę możliwość można wykorzystać do dodania wsparcia dla end-to-end szyfrowania danych przesyłanych przez serwery pośredniczące.
W silniku JavaScript V8 przyspieszono realizację Number.prototype.toString o 75%. Dodano do asynchronicznych klas właściwość .name z pustą wartością. Usunięto metodę Atomics.wake, która w swoim czasie została przemianowana na Atomics.notify dla zgodności ze specyfikacją ECMA-262. Otworzono kod narzędzi fuzzingowych JS-Fuzzer. - W wykorzystanym w poprzednim wydaniu podstawowym kompilatorze Liftoff dla WebAssembly dodano możliwość używania instrukcji wektorowych SIMD do przyspieszenia obliczeń. Sądząc po testach, optymalizacja umożliwiła przyspieszenie zadań w niektórych testach o 2.8 raza. Inna optymalizacja pozwoliła na znaczne przyspieszenie wywołania importowanych funkcji JavaScript z WebAssembly.
- Rozszerzono narzędzia dla twórców stron internetowych: Na panelu Media dodano informacje o odtwarzaczach używanych do odtwarzania wideo na stronie, w tym dane o zdarzeniach, logi, wartości właściwości i parametry dekodowania klatek (na przykład, można określić przyczyny utraty klatek oraz problemy z interakcją z JavaScript).
- W menu kontekstowym panelu Elements dodano możliwość tworzenia zrzutów ekranu wybranego elementu (na przykład zrzut ekranu spisu treści lub tabeli).
- W konsoli webowej panel z alertami o problemach został zastąpiony zwykłym komunikatem, a problemy z zewnętrznymi ciasteczkami są domyślnie ukryte w zakładce Issues i można je włączyć specjalnym przełącznikiem.
- W zakładce Rendering dodano przycisk „Wyłącz lokalne czcionki”, który umożliwia symulację braku lokalnych czcionek, a w zakładce Sensors pojawiła się możliwość symulacji nieaktywności użytkownika (dla aplikacji korzystających z API Idle Detection).
- W panelu Application dostępne są szczegółowe informacje o każdym iframe, otwartym oknie i oknach pop-up, w tym dane o izolacji Cross-Origin z wykorzystaniem COEP i COOP.
Rozpoczęto zastępowanie implementacji protokołu QUIC wersją rozwijaną w specyfikacji IETF, zamiast wersji Google QUIC.
Oprócz nowości i poprawek błędów w nowej wersji usunięto 35 podatności. Wiele z podatności zostało zidentyfikowanych w wyniku automatyzacji testów przy użyciu narzędzi AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer i AFL. Jedna podatność (CVE-2020-15967, odniesienie do zwolnionego obszaru pamięci w kodzie komunikacji z Google Payments) została oznaczona jako krytyczna, co oznacza, że pozwala na obejście wszystkich poziomów zabezpieczeń przeglądarki i wykonanie kodu w systemie poza środowiskiem piaskownicy. W ramach programu wypłaty nagród za wykrywanie podatności w bieżącej wersji firma Google przyznała 27 nagród na łączną kwotę 71500 USD (jedna nagroda 15000 USD, trzy nagrody 7500 USD, pięć nagród 5000 USD, dwie 3000 USD, jedna 200 USD i dwie nagrody 500 USD). Wysokość 13 nagród wciąż nie została ustalona.
Pobrane z Opennet.ru
Źródło: linux.org.ru
