Google heeft de release van de webbrowser Chrome 90 aangekondigd. Tegelijkertijd is er een stabiele versie van het open-source project Chromium beschikbaar, dat de basis vormt voor Chrome. De Chrome-browser onderscheidt zich door het gebruik van Google-logo's, een systeem voor het verzenden van meldingen in geval van crashes, modules voor het afspelen van beveiligde videoinhoud (DRM), een automatisch updatesysteem en het doorgeven van RLZ-parameters tijdens het zoeken. De volgende release van Chrome 91 is gepland voor 25 mei.
Belangrijkste wijzigingen in Chrome 90:
- Voor alle gebruikers is het standaard openen van websites via HTTPS ingeschakeld wanneer hostnamen in de adresbalk worden ingevoerd. Bijvoorbeeld, bij het invoeren van de host example.com zal standaard de website https://example.com worden geopend, en als er problemen optreden, zal worden teruggevallen naar http://example.com. Voor het beheer van het standaardgebruik van 'https://' is een instelling aangeboden: 'chrome://flags#omnibox-default-typed-navigations-to-https'.
- De mogelijkheid is geïmplementeerd om verschillende labels aan vensters toe te wijzen voor een betere visuele scheiding in de taakbalk. Ondersteuning voor het wijzigen van de naam van een venster vergemakkelijkt de organisatie van werk met afzonderlijke browservensters voor verschillende taken, bijvoorbeeld het openen van verschillende vensters voor werkdoeleinden, persoonlijke interesses, entertainment, uitgestelde materialen, enz. De naam kan worden gewijzigd via de optie 'Voeg venstertitel toe' in het contextmenu, dat verschijnt wanneer met de rechtermuisknop op een lege ruimte in de tabbalk wordt geklikt. Na het wijzigen van de naam wordt in de applicatiebalk in plaats van de naam van de actieve tabbladwebsite de gekozen naam weergegeven, wat handig kan zijn bij het openen van dezelfde websites in verschillende vensters die aan afzonderlijke accounts zijn gekoppeld. De koppeling blijft bewaard tussen sessies en na het herstarten zullen de vensters worden hersteld met de gekozen namen.

- De mogelijkheid om de 'Leeslijst' (Reading List) te verbergen is toegevoegd, zonder dat instellingen in 'chrome://flags' ('chrome://flags#read-later') gewijzigd hoeven te worden. Om te verbergen kan nu de optie 'Show Reading List' onderaan het contextmenu worden gebruikt, dat verschijnt bij een rechterklik op de bladwijzerbalk. Ter herinnering, in de vorige uitgave verscheen bij sommige gebruikers naast de knop 'Bladwijzer toevoegen' een tweede knop 'Toevoegen aan leeslijst' wanneer op de ster in de adresbalk werd geklikt, en in de rechterhoek van de bladwijzerbalk appeared een menu 'Leeslijst' waarin alle eerder aan de lijst toegevoegde pagina's worden vermeld. Bij het openen van een pagina vanuit de lijst wordt deze gemarkeerd als gelezen. Pagina's in de lijst kunnen ook handmatig als gelezen of ongelezen worden gemarkeerd of uit de lijst worden verwijderd.
- Er is ondersteuning toegevoegd voor netwerkscheiding om te beschermen tegen technieken die het gedrag van gebruikers tussen websites volgen, gebaseerd op het opslaan van identificatoren in gebieden die niet bedoeld zijn voor permanente opslag van informatie ('Supercookies'). Aangezien ingekorte middelen in een gemeenschappelijke naamruimte worden opgeslagen, ongeacht het oorspronkelijke domein, kan de ene site bepalen of bronnen van een andere site zijn geladen door te controleren of deze middelen in de cache aanwezig zijn. De bescherming is gebaseerd op het gebruik van netwerkscheiding (Network Partitioning), wat inhoudt dat er extra bindingen aan de records in de gedeelde cache worden toegevoegd. een domein., van waaruit de hoofdpagina is geopend, wat het bereik van de cache voor tracking-scripts beperkt tot alleen de huidige site (een script uit een iframe kan niet controleren of het middel van een andere site is geladen). De prijs van segmentering is een vermindering van de efficiëntie van caching, wat leidt tot een onbetekenbare toename van de laadtijd van de pagina (maximaal met 1,32%, maar voor 80% van de sites tussen 0,09-0,75%).
- De zwarte lijst van netwerpoortenen is uitgebreid waarvoor het verzenden van HTTP-, HTTPS- en FTP-verzoeken wordt geblokkeerd, ter bescherming tegen de NAT slipstreaming-aanval, die het mogelijk maakt om, wanneer een speciaal door de aanvaller voorbereid webpagina in de browser wordt geopend, een netwerkverbinding te leggen met de server Aanvallers kunnen nu elk UDP- of TCP-poort op het systeem van de gebruiker aanvallen, ongeacht het gebruik van interne adresreeksen (192.168.x.x, 10.x.x.x). De verboden poorten 554 (RTSP-protocol) en 10080 (gebruikt in Amanda-backup en VMWare vCenter) zijn toegevoegd. Voorheen waren de poorten 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061 en 6566 al geblokkeerd.
- Er is initiële ondersteuning toegevoegd voor het openen van PDF-documenten met XFA-formulieren in de browser.
- Voor een deel van de gebruikers is een nieuwe sectie voor instellingen 'Chrome-instellingen > Privacy en beveiliging > Privacy sandbox' geactiveerd, waarmee de API FLoC-configuraties kunnen worden beheerd. Dit is gericht op het bepalen van de interesses van de gebruiker zonder individuele identificatie en zonder koppeling aan de geschiedenis van specifieke websites.
- Een duidelijker melding is geïmplementeerd met een lijst van toegestane acties, die wordt weergegeven wanneer een gebruiker verbinding maakt met een profiel waarvoor gecentraliseerd beheer is ingeschakeld.
- De interface voor het aanvragen van bevoegdheden is minder opdringerig gemaakt. Verzoeken die de gebruiker waarschijnlijk niet zal goedkeuren, worden nu automatisch geblokkeerd met de weergave van een bijbehorend pictogram in de adresbalk, waarmee de gebruiker naar de interface voor het beheren van bevoegdheden voor elke site kan gaan.

- Ondersteuning voor Intel CET (Intel Control-flow Enforcement Technology) is ingeschakeld voor hardwarebeveiliging tegen exploits die zijn opgebouwd met behulp van Return-Oriented Programming (ROP) technieken.
- De benoeming van de browser in inclusieve terminologie gaat door. Het bestand 'master_preferences' is hernoemd naar 'initial_preferences', om de gevoelens van gebruikers die het woord master als een verwijzing naar de slavernij van hun voorouders beschouwen, niet te kwetsen. Ten behoeve van de compatibiliteit blijft de ondersteuning voor 'master_preferences' nog enige tijd in de browser bestaan. Eerder heeft de browser al afscheid genomen van de woorden 'whitelist', 'blacklist' en 'native'.
- In de Android-versie is er een lage dataverbruikmodus 'Lite' geïmplementeerd die de bitrate verlaagt bij het streamen van video's via mobiele netwerken, wat de kosten voor gebruikers met datagebonden tarieven zal verlagen. In de 'Lite'-modus worden ook beelden die worden opgevraagd uit publiek toegankelijke bronnen (zonder authenticatie) via HTTPS gecomprimeerd.
- Een AV1-videoencoder is toegevoegd, speciaal geoptimaliseerd voor gebruik in videovergaderingen op basis van het WebRTC-protocol. Het gebruik van AV1 in videovergaderingen verhoogt de compressie-efficiëntie en stelt in staat om te streamen via verbindingen met een bandbreedte van 30 kbit/s.
- In JavaScript is er een 'at()'-methode geïmplementeerd in de Array-, String- en TypedArrays-objecten, waarmee relatieve indexering kan worden gebruikt (de relatieve positie wordt als index opgegeven), inclusief negatieve waarden ten opzichte van het einde (bijvoorbeeld 'arr.at(-1)' geeft het laatste element van de array terug).
- In JavaScript zijn er voor reguliere expressies .indices-eigenschappen toegevoegd, die een array bevatten met de start- en eindposities van de bijbehorende groepen. Deze eigenschap wordt alleen gevuld wanneer de reguliere expressie wordt uitgevoerd met de 'd'-vlag. const re = /(a)(b)/d; const m = re.exec('ab'); console.log(m.indices[0]); // 0 — alle bijbehorende groepen // → [0, 2] console.log(m.indices[1]); // 1 — eerste bijbehorende groep // → [0, 1] console.log(m.indices[2]); // 2 — tweede bijbehorende groep // → [1, 2]
- De prestatie van de 'super'-eigenschappen (bijvoorbeeld super.x) is geoptimaliseerd met inline caching. De prestaties van het gebruik van 'super' komen nu dicht in de buurt van de prestaties van toegang tot gewone eigenschappen.
- De aanroep van WebAssembly-functies vanuit JavaScript is aanzienlijk versneld door het gebruik van inline-uitvouw. Deze optimalisatie blijft voorlopig experimenteel en vereist dat de applicatie wordt uitgevoerd met de '—turbo-inline-js-wasm-calls' vlag.
- De WebXR Depth Sensing API is toegevoegd, waarmee de afstand tussen objecten in de omgeving van de gebruiker en het apparaat van de gebruiker kan worden bepaald, bijvoorbeeld voor het creëren van realistischere augmented reality-toepassingen. Ter herinnering: de WebXR API maakt het mogelijk om de werking met verschillende klassen van virtual reality-apparaten te uniformiseren, van desktop 3D-headsets tot oplossingen op basis van mobiele apparaten.
- De mogelijkheid voor WebXR AR Lighting Estimation is gestabiliseerd, waarmee in WebXR-sessies voor augmented reality de omgevingsverlichtingsparameters kunnen worden vastgesteld voor een natuurlijker uiterlijk van modellen en een meer harmonieuze integratie met de omgeving van de gebruiker.
- Er zijn verschillende nieuwe API's toegevoegd in de Origin Trials-modus (experimentele mogelijkheden die afzonderlijke activering vereisen), die vooralsnog beperkt zijn tot het Android-platform. Origin Trial houdt in dat de API kan worden gebruikt vanuit toepassingen die zijn geladen vanaf localhost of 127.0.0.1, of na registratie en het ontvangen van een speciale token die voor een beperkte tijd geldig is voor een specifieke site.
- De methode getCurrentBrowsingContextMedia(), die het mogelijk maakt om een MediaStream videostroom vast te leggen die de inhoud van het huidige tabblad weergeeft. In tegenstelling tot de vergelijkbare methode getDisplayMedia() toont de aanroep van getCurrentBrowsingContextMedia() de gebruiker een eenvoudig dialoogvenster om de overdracht van video-inhoud van het tabblad te bevestigen of te blokkeren.
- De Insertable Streams API stelt in staat om onbehandelde (raw) multimedia streams te manipuleren die via de MediaStreamTrack API worden verzonden, zoals gegevens van camera en microfoon, het resultaat van schermopname of tussenresultaten van decodering door de codec. Voor het weergeven van onbehandelde frames worden WebCodec interfaces gebruikt, waarna een stream wordt gevormd die lijkt op de stream die de WebRTC Insertable Streams API genereert op basis van RTCPeerConnections. Vanuit praktisch oogpunt stelt de nieuwe API in staat om functionaliteit te implementeren zoals het toepassen van machine learning-methoden voor het identificeren of annoteren van objecten in realtime of voor het toevoegen van effecten, zoals het uitsnijden van de achtergrond, vóór codering of na decodering door de codec.
- De mogelijkheid om bronnen in pakketten (Web Bundle) te verpakken voor een efficiëntere laadtijd van veel bijbehorende bestanden (CSS-stijlen, JavaScript, afbeeldingen, iframe). Onder de nadelen van de huidige ondersteuning voor pakketten voor JavaScript-bestanden (webpack) die men probeert op te lossen in Web Bundle: het pakket kan in de HTTP-cache terechtkomen, maar niet de afzonderlijke onderdelen; compilatie en uitvoering kan pas beginnen na de volledige lading van het pakket; aanvullende bronnen zoals CSS en afbeeldingen moeten worden gecodeerd in de vorm van JavaScript-strings, wat leidt tot een toename van de grootte en een extra ontledingsfase.
- Ondersteuning voor foutafhandeling in WebAssembly.
- Gestabiliseerde API Declarative Shadow DOM voor het creëren van nieuwe worteltakken in Shadow DOM, bijvoorbeeld om de geïmporteerde externe stijl van een element en de bijbehorende sub-branch van DOM te scheiden van het hoofddocument. De voorgestelde declaratieve API maakt het mogelijk om takken van DOM alleen met HTML te scheiden zonder JavaScript te hoeven schrijven.
- In de CSS-eigenschap aspect-ratio, die het mogelijk maakt om de verhouding van de hoogte en breedte expliciet aan elk element toe te wijzen (voor het automatisch berekenen van de ontbrekende maat bij het opgeven van alleen hoogte of breedte), is de mogelijkheid van interpolatie van waarden tijdens animatie geïmplementeerd (vloeiende overgang van de ene naar de andere aspectverhouding).
- Er is een mogelijkheid toegevoegd om de status van eigen HTML-elementen (custom element) in CSS weer te geven via de pseudo-klasse ‘:state()’. Deze functionaliteit is geïmplementeerd naar analogie van de mogelijkheid van standaard HTML-elementen om hun status te wijzigen afhankelijk van de interactie met de gebruiker.
- In de CSS-eigenschap ‘appearance’ is ondersteuning toegevoegd voor de waarde 'auto', die standaard is ingesteld voor en , en op het Android-platform bovendien voor , , , en .
- In de CSS-eigenschap 'overflow' is ondersteuning voor de waarde 'clip' toegevoegd. Wanneer deze is ingesteld, wordt de inhoud die buiten de grenzen van het blok valt afgesneden bij de grens van de toegestane overloop zonder mogelijkheid om te scrollen. De waarde die bepaalt hoe ver de inhoud buiten de feitelijke grens van het blok kan uitsteken voordat deze wordt afgesneden, wordt ingesteld via de nieuwe CSS-eigenschap 'overflow-clip-margin'. In vergelijking met 'overflow: hidden' biedt het gebruik van 'overflow: clip' een hogere prestaties.


- De HTTP-header Feature-Policy is vervangen door de nieuwe header Permissions-Policy voor het beheren van de delegatie van bevoegdheden en het inschakelen van uitgebreidere functies, waarbij ondersteuning is voor gestructureerde waarden van velden (bijvoorbeeld, nu kan worden aangegeven 'Permissions-Policy: geolocation=()' in plaats van 'Feature-Policy: geolocation ‘none').
- De bescherming tegen het gebruik van Protocol Buffers voor het uitvoeren van aanvallen, veroorzaakt door speculatieve uitvoering van instructies in processors, is versterkt. De bescherming is geïmplementeerd door het toevoegen van de MIME-type 'application/x-protobuffer' aan de lijst van nooit beluisterde (sniffed) MIME-types, die wordt verwerkt via het Cross-Origin-Read-Blocking mechanisme. Eerder was de MIME-type 'application/x-protobuf' al aan een dergelijke lijst toegevoegd, maar was 'application/x-protobuffer' over het hoofd gezien.
- In de API File System Access is de mogelijkheid geïmplementeerd om de huidige positie in een bestand voorbij het einde te verschuiven, waarbij de opgevulde ruimte met nullen wordt aangevuld bij de volgende schrijfoperatie via de aanroep FileSystemWritableFileStream.write(). Deze mogelijkheid maakt het mogelijk om sparsen bestanden met lege ruimtes te creëren en vereenvoudigt het organiseren van schrijfbewerkingen in bestanden met ongeordende binnenkomende blokken gegevens (bijvoorbeeld, dit wordt toegepast in BitTorrent).
- Een StaticRange constructor is toegevoegd met de implementatie van lichte Range-typen, die geen updates van alle gerelateerde objecten vereisen bij elke wijziging van de DOM-boom.
- De mogelijkheid om de parameters width en height voor elementen op te geven is geïmplementeerd <source>, die binnen het element zijn opgegeven <picture>. Deze mogelijkheid maakt het mogelijk om de aspectverhouding voor elementen te berekenen <picture>, vergelijkbaar met hoe dit is gedaan voor <img>, <canvas> en <video>.
- De niet-gestandaardiseerde ondersteuning van RTP-datakanalen (RTP Data Channels) is uit WebRTC verwijderd, in plaats waarvan het wordt aanbevolen om datakanalen op basis van SCTP te gebruiken.
- De eigenschappen navigator.plugins en navigator.mimeTypes geven nu altijd een lege waarde terug (na de stopzetting van ondersteuning voor Flash is de noodzaak voor deze eigenschappen verdwenen).
- Er zijn veel kleine verbeteringen aangebracht in de tools voor webontwikkelaars en er is een nieuwe tool voor het debuggen van CSS flexbox toegevoegd.

Naast de nieuwe functies en bugfixes zijn in de nieuwe versie 37 kwetsbaarheden verholpen. Veel van deze kwetsbaarheden zijn ontdekt door geautomatiseerde tests met tools zoals AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer en AFL. Er zijn geen kritieke problemen gevonden die alle beveiligingslagen van de browser kunnen omzeilen en code buiten de sandbox-omgeving kunnen uitvoeren. In het kader van het beloningsprogramma voor het melden van kwetsbaarheden heeft Google voor deze release 19 prijzen uitgereikt ter waarde van 54.000 dollar (één prijs van 20.000 dollar, één prijs van 10.000 dollar, twee prijzen van 5.000 dollar, drie prijzen van 3.000 dollar, één prijs van 2.000 dollar, één van 1.000 dollar en vier prijzen van 500 dollar). De omvang van 6 beloningen is nog niet bepaald.
Bijzonder vermeldenswaard is dat er gisteren, na de correctieve release 89.0.4389.128 maar vóór de release van Chrome 90, nog een exploit is gepubliceerd, waarin gebruik werd gemaakt van een nieuwe 0-day kwetsbaarheid die niet was verholpen in Chrome 89.0.4389.128. Het is nog niet duidelijk of dit probleem in Chrome 90 is opgelost. Zoals in het eerste geval dekt de exploit slechts één kwetsbaarheid en bevat geen code om de sandbox-isolatie te omzeilen (bij het uitvoeren van chrome met de vlag "—no-sandbox" zorgt de exploit bij het openen van een webpage op het Windows-platform ervoor dat notepad wordt gestart). De kwetsbaarheid die verband houdt met de nieuwe exploit betreft de technologie WebAssembly.
Bron: opennet.ru





