Google ha rilasciato la versione 91 del browser web Chrome. È disponibile anche il rilascio stabile del progetto open source Chromium, che funge da base per Chrome. Il browser Chrome si distingue per l'uso dei loghi Google, un sistema di invio di notifiche in caso di crash, moduli per la riproduzione di contenuti video protetti (DRM), un sistema di aggiornamento automatico e la trasmissione dei parametri RLZ durante la ricerca. La prossima versione di Chrome 92 è programmata per il 20 luglio.
Le principali novità in Chrome 91:
- È stata implementata la possibilità di interrompere l'esecuzione di JavaScript nei gruppi di schede ridotti. In Chrome 85 è stata introdotta la funzione di raggruppare le schede, che possono essere associate a un determinato colore e etichetta. Facendo clic sull'etichetta del gruppo, le schede ad essa collegate vengono ridotte e rimane solo un'etichetta (un secondo clic sull'etichetta espande il gruppo). Nel nuovo rilascio, per ridurre il carico sulla CPU e risparmiare energia, è stata introdotta la sospensione dell'attività nelle schede ridotte. Un'eccezione è stata fatta per le schede in cui è in riproduzione audio, dove viene utilizzata l'API Web Locks o IndexedDB, in caso di connessione a un dispositivo USB, o durante la cattura di video, audio o contenuti delle finestre. Questa modifica verrà implementata gradualmente, iniziando da una piccola percentuale di utenti.
- È attivato il supporto per il metodo di scambio di chiavi resistente agli attacchi dei computer quantistici. I computer quantistici risolvono drasticamente più velocemente il problema della scomposizione di numeri naturali in fattori primi, che è alla base degli attuali algoritmi di crittografia asimmetrica, e non può essere affrontato in modo efficace dai processori classici. Per l'uso in TLSv1.3 è disponibile il plugin CECPQ2 (Combined Elliptic-Curve and Post-Quantum 2), che combina il meccanismo classico di scambio di chiavi X25519 con lo schema HRSS, basato sull'algoritmo NTRU Prime, progettato per i sistemi crittografici post-quantistici.
- È stata completamente interrotta la supporto per i protocolli TLS 1.0 e TLS 1.1, che sono stati classificati come obsoleti dal comitato IETF (Internet Engineering Task Force). È stata anche rimossa la possibilità di tornare a TLS 1.0/1.1 modificando la politica SSLVersionMin.
- Nelle versioni per la piattaforma Linux è stata inclusa l'implementazione della modalità 'DNS over HTTPS' (DoH), già disponibile per gli utenti di Windows, macOS, ChromeOS e Android. Il DNS-over-HTTPS verrà attivato automaticamente per gli utenti che hanno configurato fornitori DNS che supportano questa tecnologia (si utilizza lo stesso fornitore per DNS-over-HTTPS che è stato utilizzato per DNS). Ad esempio, se l'utente ha indicato 8.8.8.8 nelle impostazioni di sistema, verrà attivato il servizio DNS-over-HTTPS di Google in Chrome ('https://dns.google.com/dns-query'); se il DNS è 1.1.1.1, verrà attivato il servizio DNS-over-HTTPS di Cloudflare ('https://cloudflare-dns.com/dns-query'), e così via.
- È stato aggiunto il porto 10080 all'elenco dei porti di rete vietati, utilizzato da Amanda backup e VMWare vCenter. In precedenza, erano già stati bloccati i porti 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061 e 6566. Per i porti nella blacklist, viene bloccata l'invio di richieste HTTP, HTTPS e FTP per proteggere contro l'attacco NAT slipstreaming, che consente, aprendo una pagina web appositamente preparata dall'attaccante nel browser, di stabilire una connessione di rete dal server dell'attaccante a qualsiasi porto UDP o TCP nel sistema dell'utente, nonostante l'utilizzo di un intervallo di indirizzi interni (192.168.x.x, 10.x.x.x).
- È stata introdotta la possibilità di configurare l'avvio automatico delle applicazioni web isolate (PWA — Progressive Web Apps) al momento del login dell'utente nel sistema (Windows e macOS). L'avvio automatico può essere impostato sulla pagina chrome://apps. Questa funzionalità è attualmente in fase di test su una piccola percentuale di utenti e per gli altri richiede l'attivazione dell'impostazione «chrome://flags/#enable-desktop-pwas-run-on-os-login».
- Nell'ambito del processo di traduzione del browser verso l'uso di una terminologia inclusiva, il file «master_preferences» è stato rinominato in «initial_preferences». Per garantire la compatibilità, il supporto per «master_preferences» verrà mantenuto per un certo periodo nel browser. In precedenza, il browser aveva già eliminato l'uso delle parole «whitelist», «blacklist» e «native».
- La modalità avanzata di protezione contro i siti pericolosi (Enhanced Safe Browsing) attiva controlli aggiuntivi per proteggere da phishing, attività dannose e altre minacce sul web. È stata implementata la possibilità di inviare i file caricati per la verifica da parte di Google. Inoltre, in Enhanced Safe Browsing viene considerato il conteggio dei token associati all'account Google in caso di tentativi di phishing, così come l'invio al server di Google dei valori dell'intestazione Referrer per controllare il passaggio da siti dannosi.
- Nella versione per la piattaforma Android, è stata migliorata la progettazione degli elementi delle web form, ottimizzati per l'uso su schermi touch e sistemi per persone con disabilità (per i sistemi desktop, la progettazione è stata aggiornata in Chrome 83). L'obiettivo della riprogettazione era l'unificazione dell'aspetto degli elementi dei moduli e l'eliminazione delle incongruenze stilistiche: in precedenza, alcuni elementi dei moduli erano stati progettati secondo gli elementi dell'interfaccia dei sistemi operativi, mentre altri seguivano gli stili più popolari. Questo ha portato a variare l'idoneità degli elementi per schermi touch e sistemi per persone con disabilità.


- È stato aggiunto un sondaggio opinioni utente, visualizzato all'apertura delle impostazioni Privacy Sandbox (chrome://settings/privacySandbox).
- All'avvio della versione Android di Chrome su tablet con schermo grande, viene richiesta la versione desktop del sito anziché quella mobile. È possibile modificare questo comportamento tramite l'impostazione "chrome://flags/#request-desktop-site-for-tablets".
- Il codice per il rendering delle tabelle è stato riprogettato, risolvendo i problemi di incongruenza nel comportamento del rendering delle tabelle tra Chrome e Firefox/Safari.
- L'elaborazione dei certificati di server dell'autorità di certificazione spagnola Camerfirma è stata interrotta a causa di incidenti ripetuti a partire dal 2017, legati a violazioni nell'emissione di certificati. Il supporto per i certificati dei clienti è mantenuto, la sospensione si applica solo ai certificati utilizzati sui siti per HTTPS.
- È continuata l'implementazione del supporto per la segmentazione della rete per proteggere dai metodi di tracciamento degli spostamenti degli utenti tra i siti, basati sullo stoccaggio degli identificatori in aree non destinate alla conservazione permanente delle informazioni («Supercookies»). Poiché le risorse nella cache sono memorizzate in uno spazio dei nomi condiviso, indipendentemente dal dominio di origine, un sito può determinare il caricamento delle risorse da un altro sito attraverso la verifica della presenza di questa risorsa nella cache. La protezione si basa sull'applicazione della segmentazione della rete (Network Partitioning), il cui obiettivo è l'aggiunta a cache condivise di un ulteriore vincolo di abbinamento delle registrazioni a dominio, da cui è aperta la pagina principale, limitando l'area di copertura della cache per gli script di tracciamento dei movimenti solo al sito corrente (lo script nell'iframe non potrà verificare se la risorsa è stata caricata da un altro sito).
Il prezzo della segmentazione è una riduzione dell'efficacia della memorizzazione in cache, che porta a un lieve aumento dei tempi di caricamento della pagina (massimo dell'1,32%, ma per l'80% dei siti è dello 0,09-0,75%). Per testare la modalità di segmentazione, è possibile avviare il browser con l'opzione «—enable-features=PartitionConnectionsByNetworkIsolationKey, PartitionExpectCTStateByNetworkIsolationKey, PartitionHttpServerPropertiesByNetworkIsolationKey, PartitionNelAndReportingByNetworkIsolationKey, PartitionSSLSessionsByNetworkIsolationKey, SplitHostCacheByNetworkIsolationKey».
- Aggiunto l'API REST esterno VersionHistory (https://versionhistory.googleapis.com/v1/chrome), tramite il quale è possibile ottenere informazioni sulle versioni di Chrome in relazione a piattaforme e rami, nonché sulla storia degli aggiornamenti del browser.
- Negli iframe caricati da domini diversi da quello della pagina principale, è vietato visualizzare i dialoghi JavaScript alert(), confirm() e prompt(), per proteggere gli utenti da tentativi di visualizzazione di messaggi da parte di script esterni spacciati per notifiche del sito principale.
- È stata stabilita e proposta per impostazione predefinita l'API WebAssembly SIMD per l'utilizzo delle istruzioni SIMD vettoriali nelle applicazioni in formato WebAssembly. Per garantire la portabilità tra piattaforme, viene proposto un nuovo tipo a 128 bit in grado di rappresentare diversi tipi di dati impacchettati e diverse operazioni vettoriali di base per il trattamento dei dati impacchettati. SIMD consente di aumentare le prestazioni parallelizzando l'elaborazione dei dati e sarà utile durante la compilazione di codice nativo in WebAssembly.
- Nella modalità Origin Trials (funzionalità sperimentali che richiedono un'attivazione separata), sono state aggiunte diverse nuove API. L'Origin Trial permette l'accesso a queste API da applicazioni caricate da localhost o 127.0.0.1, oppure dopo registrazione e ottenimento di un token speciale, valido per un tempo limitato per un sito specifico.
- WebTransport è un protocollo e API JavaScript associata per l'invio e la ricezione di dati tra il browser e server. Il canale di comunicazione è organizzato sopra HTTP/3 utilizzando come trasporto il protocollo QUIC, che a sua volta è un'estensione del protocollo UDP, supportando il multiplexing di più connessioni e fornendo metodi di crittografia equivalenti a TLS/SSL.
WebTransport può essere utilizzato come alternativa ai meccanismi WebSockets e RTCDataChannel, offrendo funzionalità aggiuntive come la gestione del trasferimento in più flussi, flussi unidirezionali, consegna dei pacchetti senza considerazione dell'ordine (out-of-order), modalità di consegna affidabili e non affidabili. Inoltre, WebTransport può essere usato come sostituto del meccanismo Server Push, dal quale Google ha deciso di allontanarsi in Chrome.
- Interfaccia dichiarativa per definire riferimenti a web app isolate (PWA), abilitata tramite il parametro capture_links nel manifesto dell'app web e che consente ai siti di aprire automaticamente una nuova finestra PWA al clic su un link dell'app o di passare alla modalità a finestra singola, simile a quella delle app mobili.
- È stato introdotto l'API WebXR Plane Detection, che fornisce informazioni sulle superfici piatte in un ambiente 3D virtuale. Questo API consente di evitare processi dispendiosi in termini di risorse per l'elaborazione dei dati ottenuti tramite la chiamata a MediaDevices.getUserMedia(), utilizzando implementazioni proprie degli algoritmi di visione artificiale. Ricordiamo che l'API WebXR consente di uniformare il funzionamento con diverse classi di dispositivi di realtà virtuale, dai visori 3D fissi a soluzioni basate su dispositivi mobili.
- WebTransport è un protocollo e API JavaScript associata per l'invio e la ricezione di dati tra il browser e server. Il canale di comunicazione è organizzato sopra HTTP/3 utilizzando come trasporto il protocollo QUIC, che a sua volta è un'estensione del protocollo UDP, supportando il multiplexing di più connessioni e fornendo metodi di crittografia equivalenti a TLS/SSL.
- È stato implementato il supporto per i WebSockets sopra HTTP/2 (RFC 8441), che funziona solo per le richieste sicure ai WebSockets e a condizione che sia già stabilita una connessione HTTP/2 con il server, nella quale è stata annunciata la supporto per l'estensione "WebSockets over HTTP/2".
- Le limitazioni della precisione dei valori del timer forniti dalla chiamata a performance.now() sono state uniformate per tutte le piattaforme supportate e adattate tenendo conto della possibile isolamento dei gestori in processi separati. Ad esempio, nei sistemi desktop la precisione nella gestione in contesti non isolati è stata ridotta da 5 a 100 microsecondi.
- Nelle build per sistemi desktop è stata implementata la possibilità di leggere file dagli appunti (la scrittura di file negli appunti resta vietata). async function onPaste(e) { let file = e.clipboardData.files[0]; let contents = await file.text(); }
- In CSS è stata implementata la regola @counter-style, che consente di definire stili personalizzati per i contatori e le etichette nelle liste numerate.
- In CSS, ai pseudo-classi «:host()» e «:host-context()» è stata aggiunta la possibilità di trasmettere valori singoli di selettori composti () oltre a elenchi di selettori ().
- È stata aggiunta l'interfaccia GravitySensor per la determinazione dei dati volumetrici (su tre assi delle coordinate) forniti dal sensore di gravità.
- Nell'API File System Access è stata fornita la possibilità di stabilire raccomandazioni per la scelta di nomi di file e cartelle, suggeriti nel dialogo di creazione o apertura di un file.
- Negli iframe caricati da altri domini è consentito l'accesso all'API WebOTP, previa autorizzazione dell'utente. WebOTP consente di leggere codici di verifica monouso inviati tramite SMS.
- È consentito fornire l'accesso condiviso alle credenziali per i siti collegati tramite il meccanismo DAL (Digital Asset Links), che permette di associare applicazioni Android a siti web per semplificare l'accesso.
- Nella Service worker è consentito l'uso dei moduli JavaScript. Quando si specifica il tipo ‘module’ durante la chiamata al costruttore, gli script indicati verranno caricati come moduli e saranno disponibili per l'importazione nel contesto della worker. Il supporto ai moduli semplifica la condivisione del codice sulle pagine web e nelle Service worker.
- In JavaScript è possibile verificare l'esistenza di campi privati in un oggetto usando la sintassi «#foo in obj». class A { static test(obj) { console.log(#foo in obj); } #foo = 0; } A.test(new A()); // true A.test({}); // false
- In JavaScript, per impostazione predefinita, è consentito usare la parola chiave await nei moduli a livello superiore, permettendo di integrare più dolcemente le chiamate asincrone nel processo di caricamento dei moduli e di evitare l'imballaggio in una «async function». Ad esempio, invece di (async function() { await Promise.resolve(console.log(‘test’)); }()); ora si può scrivere await Promise.resolve(console.log(‘test’));
- Nel motore JavaScript V8 è stata migliorata l'efficienza della cache dei modelli, portando a un aumento del 4,5% della velocità nel test Speedometer2-FlightJS.
- È stata introdotta una significativa serie di miglioramenti agli strumenti per gli sviluppatori web. Aggiunta la nuova modalità di ispezione della memoria (Memory inspector), che fornisce strumenti per l'analisi dei dati ArrayBuffer e della memoria Wasm.

Nel pannello Performance è stato aggiunto un indicatore complessivo delle prestazioni, che consente di valutare se il sito necessita di ottimizzazioni.

Durante l'anteprima delle immagini nel pannello Elements e nel pannello di analisi delle richieste di rete, è stata fornita l'informazione sul rapporto di aspetto dell'immagine, sulle impostazioni di visualizzazione e sulla dimensione del file.

Nel pannello di ispezione della rete è stata aggiunta la possibilità di modificare i valori del'intestazione Content-Encoding ricevuta.

Nel pannello di gestione degli stili è stata introdotta la possibilità di visualizzare rapidamente il valore calcolato navigando tra le proprietà CSS, selezionando dal menu contestuale 'View computed value'.

Oltre alle nuove funzionalità e alla correzione di errori, nella nuova versione sono state risolte 32 vulnerabilità. Molte di queste vulnerabilità sono state identificate tramite test automatizzati utilizzando strumenti come AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono state rilevate problematiche critiche in grado di bypassare tutti i livelli di protezione del browser e di eseguire codice nel sistema al di fuori dell'ambiente sandbox. Nell'ambito del programma di ricompensa per la scoperta di vulnerabilità per l'attuale rilascio, Google ha corrisposto 21 premi per un totale di 92000 dollari (un premio di 20000 dollari, un premio di 15000 dollari, quattro premi di 7500 dollari, tre premi di 5000 dollari, tre premi di 3000 dollari, due premi di 1000 dollari e due premi di 500 dollari). L'importo di 5 premi deve ancora essere definito.
Fonte: opennet.ru







