Google ha presentato il rilascio del browser web Chrome 93. È disponibile contemporaneamente la versione 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 installazione automatica degli aggiornamenti e la trasmissione dei parametri RLZ durante le ricerche. Il prossimo rilascio di Chrome 94 è previsto per il 21 settembre (lo sviluppo è stato trasferito a un ciclo di rilascio di 4 settimane).
Principali novità in Chrome 93:
- È stata modernizzata l'interfaccia del blocco di informazioni sulla pagina (page info), che ora supporta blocchi nidificati, e i menu a discesa sui diritti di accesso sono stati sostituiti da interruttori. Negli elenchi viene fornita per prima la visualizzazione delle informazioni più importanti. Questa modifica non è attivata per tutti gli utenti; per attivarla, è possibile utilizzare l'impostazione «chrome://flags/#page-info-version-2-desktop».

- Per una piccola percentuale di utenti, come esperimento, l'indicatore di connessione sicura nella barra degli indirizzi è stato sostituito con un simbolo più neutro e non ambiguo (il lucchetto è stato sostituito con il segno «V»). Per le connessioni non crittografate, continua a essere mostrato l'indicatore di «non sicuro». La motivazione per la sostituzione dell'indicatore è che molti utenti associano il simbolo del lucchetto alla fiducia nei contenuti del sito, piuttosto che interpretarlo come un segno di crittografia della connessione. Secondo un sondaggio di Google, solo l'11% degli utenti comprende il significato dell'icona del lucchetto.

- Nell'elenco delle schede chiuse di recente, è stato assicurato che venga visualizzato il contenuto delle chiuse gruppi di schede (in precedenza, nell'elenco veniva semplicemente mostrato il nome del gruppo senza dettagli sul contenuto) con la possibilità di ripristinare simultaneamente sia l'intero gruppo che le singole schede del gruppo. Questa funzionalità non è attivata per tutti gli utenti; quindi, potrebbe essere necessario modificare l'impostazione «chrome://flags/#tab-restore-sub-menus» per attivarla.

- Per le imprese, sono state implementate nuove impostazioni DefaultJavaScriptJitSetting, JavaScriptJitAllowedForSites e JavaScriptJitBlockedForSites, che consentono di gestire la modalità senza JIT, disabilitando l'applicazione della compilazione JIT durante l'esecuzione di JavaScript (viene utilizzato solo l'interprete Ignition) e vietando l'allocazione di memoria eseguibile durante l'esecuzione del codice. Disattivare JIT può essere utile per aumentare la sicurezza nel trattamento delle applicazioni web potenzialmente pericolose, a costa di ridurre le prestazioni dell'esecuzione di JavaScript di circa il 17%. È degno di nota che Microsoft sia andata oltre e ha implementato nel browser Edge una modalità sperimentale chiamata «Super Duper Secure», che consente all'utente di disattivare JIT e attivare meccanismi di protezione hardware incompatibili con JIT come CET (Controlflow-Enforcement Technology), ACG (Arbitrary Code Guard) e CFG (Control Flow Guard) per i processi che elaborano contenuti web. Se l'esperimento avrà successo, ci si può aspettare il trasferimento di questa funzionalità nella versione principale di Chrome.
- Nella pagina della nuova scheda è stato implementato un elenco dei documenti più richiesti memorizzati in Google Drive. Il contenuto dell'elenco corrisponde alla sezione Priority in drive.google.com. Per gestire la visualizzazione dei contenuti di Google Drive, è possibile utilizzare le impostazioni «chrome://flags/#ntp-modules» e «chrome://flags/#ntp-drive-module».

- Per la pagina di apertura di una nuova scheda sono state proposte nuove schede informative per aiutare a trovare contenuti recentemente visualizzati e informazioni correlate. Le schede sono progettate per semplificare la ripresa del lavoro con i contenuti di cui si è interrotta la visualizzazione. Ad esempio, le schede possono aiutare a trovare una ricetta che si è recentemente trovata online ma che si è persa dopo la chiusura della pagina, o a continuare a fare acquisti online. Come esperimento, agli utenti sono state proposte due nuove schede: «Ricette» (chrome://flags/#ntp-recipe-tasks-module) per cercare ricette culinarie e mostrare ricette recentemente visualizzate; «Acquisti» (chrome://flags/#ntp-chrome-cart-module) per ricordare i prodotti scelti negli negozi online.
- Nella versione per la piattaforma Android è stata aggiunta un'opzione per supportare la barra di ricerca continua (chrome://flags/#continuous-search), che consente di visualizzare i risultati di ricerca recenti in Google (la barra continua a mostrare i risultati anche dopo aver navigato su altre pagine).

- Nella versione per la piattaforma Android è stata aggiunta una modalità sperimentale per la condivisione delle citazioni (chrome://flags/#webnotes-stylize), che consente di salvare un frammento evidenziato della pagina come citazione e condividerlo con altri utenti.
- Quando vengono pubblicati nuovi componenti aggiuntivi o aggiornamenti delle versioni nel Chrome Web Store, è ora obbligatorio applicare la verifica in due passaggi per gli sviluppatori.
- Per gli utenti di Google Account è disponibile un'opzione per salvare le informazioni di pagamento nel proprio profilo Google.
- In modalità Incognito, se attivata l'opzione di cancellazione dei dati di navigazione, è stato implementato un nuovo dialogo di conferma che spiega che la pulizia dei dati comporterà la chiusura della finestra e la conclusione di tutte le sessioni in modalità Incognito.
- A causa di incompatibilità riscontrate con il firmware di alcuni dispositivi, è stata disabilitata temporaneamente la supporto al nuovo metodo di negoziazione delle chiavi, resistente agli attacchi dei computer quantistici, introdotto in Chrome 91, basato sull'estensione CECPQ2 (Combined Elliptic-Curve and Post-Quantum 2) in TLSv1.3, che combina il meccanismo classico di scambio delle chiavi X25519 con lo schema HRSS, basato sull'algoritmo NTRU Prime, progettato per criptosistemi post-quantistici.
- Sono stati aggiunti i porti 989 (ftps-data) e 990 (ftps) all'elenco dei porti di rete vietati per bloccare l'attacco ALPACA. In precedenza, per proteggere contro l'attacco NAT slipstreaming, erano già stati bloccati i porti 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061, 6566 e 10080.
- In TLS è stata interrotta la supporto ai cifrari basati sull'algoritmo 3DES. In particolare, è stato rimosso il cifrario TLS_RSA_WITH_3DES_EDE_CBC_SHA, vulnerabile all'attacco Sweet32.
- È stata interrotta la supporto per la distribuzione di Ubuntu 16.04.
- È stata introdotta la possibilità di utilizzare l'API WebOTP tra diversi dispositivi connessi tramite un profilo Google comune. WebOTP consente a un'applicazione web di leggere codici di verifica monouso inviati tramite SMS. La modifica proposta consente di ricevere il codice di verifica su un dispositivo mobile con Chrome per Android e di utilizzarlo su un sistema desktop.
- L'API User-Agent Client Hints è stata ampliata, sviluppata come sostituto dell'intestazione User-Agent. User-Agent Client Hints consente di fornire selettivamente dati su specifici parametri del browser e del sistema (versione, piattaforma, ecc.) solo su richiesta. serverL'utente, a sua volta, può definire quali informazioni fornire ai proprietari dei siti web. Con l'uso di User-Agent Client Hints, l'identificatore del browser non viene trasmesso senza esplicita richiesta, e per impostazione predefinita vengono forniti solo parametri di base, rendendo difficile l'identificazione passiva.
Nella nuova versione è stata implementata la supporto per il parametro Sec-CH-UA-Bitness per restituire dati sulla architettura della piattaforma, che possono essere utilizzati per fornire file binari ottimizzati. Per impostazione predefinita, viene inviato il parametro Sec-CH-UA-Platform con dati generali sulla piattaforma. Nel valore UADataValues, restituito da getHighEntropyValues(), per impostazione predefinita viene fornito un insieme di parametri riassuntivi se non è possibile restituire una versione dettagliata. È stato aggiunto un metodo toJSON all'oggetto NavigatorUAData, che consente di utilizzare costrutti come JSON.stringify(navigator.userAgentData).
- È stata stabilizzata e proposta per impostazione predefinita la possibilità di confezionare risorse in pacchetti nel formato Web Bundle, adatti per organizzare un caricamento più efficiente di un gran numero di file accessori (stili CSS, JavaScript, immagini, iframe). Tra i difetti nella supporto attuale dei pacchetti per file JavaScript (webpack), che si cerca di risolvere nel Web Bundle: nel cache HTTP può rimanere il pacchetto stesso, ma non le sue componenti; la compilazione e l'esecuzione possono iniziare solo dopo il caricamento completo del pacchetto; risorse aggiuntive, come CSS e immagini, devono essere codificate sotto forma di stringhe JavaScript, il che porta a un aumento della dimensione e all'esecuzione di un ulteriore stadio di parsing.
- Incorporato l'API WebXR Plane Detection, che fornisce informazioni sulle superfici piane in ambienti virtuali 3D. Questo API consente di evitare l'elaborazione intensiva dei dati ottenuti tramite la chiamata MediaDevices.getUserMedia(), utilizzando implementazioni proprietarie degli algoritmi di visione artificiale. Ricordiamo che l'API WebXR consente di unificare l'interazione con diverse classi di dispositivi di realtà virtuale, dagli headset 3D fissi a soluzioni basate su dispositivi mobili.
- 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.
- Proposto l'API Multi-Screen Window Placement, che consente di posizionare finestre su qualsiasi schermo collegato al sistema attuale e di salvare la posizione della finestra, espandendo la finestra a schermo intero se necessario. Ad esempio, utilizzando questo API, un'applicazione web per la presentazione può organizzare la visualizzazione delle diapositive su uno schermo e mostrare le note per il relatore su un altro.
- Nell'intestazione Cross-Origin-Embedder-Policy, che gestisce la modalità di isolamento Cross-Origin e consente di definire regole per l'uso sicuro di operazioni privilegiate sulla pagina, è stata aggiunta la supporto per il parametro "credentialless" per disabilitare la trasmissione di informazioni relative alle credenziali, come cookie e certificati client.
- Per le applicazioni web installabili separatamente (PWA, Progressive Web Apps), è fornita un'overlay con elementi di controllo della finestra, come l'area del titolo e i pulsanti per espandere e ridurre la finestra. L'overlay amplia l'area modificabile a tutta la finestra e consente di aggiungere i propri elementi nell'area del titolo.

- È stata aggiunta la possibilità di creare applicazioni PWA che possono essere utilizzate come gestori di URL. Ad esempio, l'app music.example.com può registrarsi come gestore dell'URL https://*.music.example.com, e tutte le navigazioni da applicazioni esterne a questi link, ad esempio da messenger e client di posta, apriranno l'app PWA invece di una nuova scheda nel browser.
- È stata fornita la possibilità di caricare file CSS utilizzando l'espressione «import», in modo simile al caricamento dei moduli JavaScript, il che è utile per creare elementi personalizzati e consente di evitare di assegnare stili tramite codice JavaScript. import sheet from './styles.css' assert { type: 'css' }; document.adoptedStyleSheets = [sheet]; shadowRoot.adoptedStyleSheets = [sheet];
- È stato fornito un nuovo metodo statico AbortSignal.abort(), che restituisce un oggetto AbortSignal già impostato con il parametro aborted. Invece di diverse righe di codice per creare un oggetto AbortSignal nello stato aborted, ora è possibile fare in una sola riga «return AbortSignal.abort()».
- Nell'elemento Flexbox è stata aggiunta la supporto per le parole chiave start, end, self-start, self-end, left e right, che completano le parole chiave center, flex-start e flex-end per una più semplice allineamento delle posizioni degli elementi flex.
- Nel costruttore Error() è stata implementata una nuova proprietà facoltativa «cause», che consente di collegare facilmente gli errori tra loro. const parentError = new Error('parent'); const error = new Error('parent', { cause: parentError }); console.log(error.cause === parentError); // → true
- Nella proprietà HTMLMediaElement.controlsList è stata aggiunta la supporto per la modalità noplaybackrate, che consente di disabilitare gli elementi dell'interfaccia fornita dal browser per modificare la velocità di riproduzione del contenuto multimediale.
- È stato aggiunto l'intestazione Sec-CH-Prefers-Color-Scheme, che consente di inviare informazioni sulla preferenza dell'utente per la scheda colore durante l'invio della richiesta, utilizzate nelle media queries «prefers-color-scheme», permettendo al sito di ottimizzare il caricamento dei relativi CSS in base alla scheda scelta ed evitando cambiamenti visibili da altre schede.
- È stata aggiunta la proprietà Object.hasOwn, che rappresenta una versione semplificata di Object.prototype.hasOwnProperty, implementata sotto forma di metodo statico. Object.hasOwn({ prop: 42 }, 'prop') // → true
- Nel compilatore JIT Sparkplug, progettato per l'esecuzione estremamente rapida della compilazione grezza, è stata aggiunta la modalità di esecuzione batch delle operazioni, che consente di ridurre i costi di cambio delle pagine di memoria tra modalità di scrittura e esecuzione. Sparkplug ora compila più funzioni contemporaneamente e chiama mprotect una sola volta per modificare i diritti di accesso dell'intero gruppo. La modalità proposta riduce notevolmente il tempo di compilazione (fino al 44%) senza influire negativamente sulle prestazioni dell'esecuzione di JavaScript.

- Nella versione per Android sono stati disattivati i meccanismi di protezione dal motore V8 contro attacchi attraverso canali laterali, come Spectre, che non sono stati considerati così efficaci come l'isolamento dei siti in processi separati. Nella versione desktop, questi meccanismi erano già stati disattivati nel rilascio di Chrome 70. La disattivazione di controlli superflui ha permesso di aumentare le prestazioni dal 2 al 15%.

- Sono stati apportati miglioramenti agli strumenti per sviluppatori web. Nella modalità di ispezione delle tabelle di stile è stata fornita la possibilità di modificare le query create con l'espressione @container. Nella modalità di ispezione della rete è stata implementata un'anteprima delle risorse nel formato Web bundle. Nel web console, sono state aggiunte opzioni nel menu contestuale per copiare righe come letterali JavaScript o JSON. È stata semplificata la risoluzione degli errori legati a CORS (Cross-Origin Resource Sharing).

Oltre alle novità e alla correzione di bug, nella nuova versione sono state eliminate 27 vulnerabilità. Molte vulnerabilità sono state scoperte grazie a test automatizzati utilizzando strumenti come AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer e AFL. Non sono state identificate problematiche critiche che consentano 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 questa versione, Google ha assegnato 19 premi per un importo totale di 136500 USD (tre premi da $20000, un premio da $15000, tre premi da $10000, un premio da $7500, tre premi da $5000 e tre premi da $3000). L'importo di 5 premi non è ancora stato definito.
Fonte: opennet.ru









