La société Google a présenté la version 97 de son navigateur web Chrome. En même temps, une version stable du projet open source Chromium, qui sert de base à Chrome, est également disponible. Le navigateur Chrome se distingue par l'utilisation des logos Google, un système d'envoi de notifications en cas de plantage, des modules pour la reproduction de contenu vidéo protégé contre la copie (DRM), un système de mise à jour automatique et le transfert des paramètres RLZ lors de la recherche. Pour ceux qui ont besoin de plus de temps pour effectuer les mises à jour, une branche Extended Stable est séparément maintenue, offrant un support de 8 semaines avec une mise à jour pour la version précédente de Chrome 96. La prochaine version de Chrome 98 est prévue pour le 1er février.
Les principales modifications dans Chrome 97 :
- Pour certains utilisateurs, un nouvel interface de gestion des données stockées côté navigateur est activé dans le configurateur ("chrome://settings/content/all"). Une caractéristique clé de la nouvelle interface est son orientation vers la configuration des autorisations et le nettoyage simultané de tous les cookies d'un site, sans possibilité d'afficher des informations détaillées sur des cookies individuels ou de supprimer sélectivement des cookies. Selon Google, l'accès à la gestion de cookies individuels pour les utilisateurs ordinaires, qui ne comprennent pas les subtilités du développement web, peut entraîner des dysfonctionnements imprévisibles sur les sites en raison de modifications irréfléchies de certains paramètres, ainsi qu'une désactivation accidentelle des mécanismes de protection de la confidentialité activés via les cookies. Pour ceux qui ont besoin de manipuler des cookies individuels, il est recommandé d'utiliser la section de gestion du stockage dans les outils pour développeurs web (Application/Storage/Cookie).

- Dans le bloc d'informations sur le site, un aperçu bref du site est affiché (par exemple, des descriptions provenant de Wikipedia), si le mode d'optimisation de la recherche et de la navigation est activé dans les paramètres (option "Améliorer les recherches et la navigation").

- Le support de la saisie automatique des champs dans les formulaires web a été amélioré. Les suggestions d'autocomplétion s'affichent maintenant avec un léger décalage et sont accompagnées d'icônes d'information pour un aperçu plus pratique et une identification visuelle des relations avec le champ rempli. Par exemple, l'icône de profil indique que l'autocomplétion proposée concerne les champs liés aux informations d'adresse et de contact.

- La suppression des gestionnaires de profils utilisateurs de la mémoire après la fermeture des fenêtres de navigateur associées a été assurée. Auparavant, les profils restaient en mémoire et continuaient d'effectuer des tâches liées à la synchronisation et à l'exécution de scripts d'extensions en arrière-plan, ce qui entraînait une consommation injustifiée de ressources sur les systèmes utilisant plusieurs profils simultanément (par exemple, un profil invité et une liaison avec un compte Google). De plus, un nettoyage plus approfondi des données restantes lors de l'utilisation du profil a été mis en place.
- La page des paramètres des moteurs de recherche («Settings>Manage search engines») a été améliorée. L'activation automatique des moteurs, dont les informations sont fournies lors de l'ouverture d'un site via le script OpenSearch, a été désactivée — les nouveaux moteurs pour le traitement des requêtes de recherche depuis la barre d'adresse doivent désormais être activés manuellement dans les paramètres (les moteurs précédemment activés automatiquement continueront de fonctionner sans changement).
- À partir du 17 janvier, le catalogue Chrome Web Store n'acceptera plus les extensions utilisant la deuxième version du manifeste Chrome, mais les développeurs d'extensions déjà ajoutées pourront publier des mises à jour comme auparavant.
- Un support expérimental pour la spécification WebTransport a été ajouté, définissant un protocole et une API JavaScript associés pour l'envoi et la réception de données entre le navigateur et serveur. Un canal de communication est établi au-dessus de HTTP/3 en utilisant le protocole QUIC comme transport. WebTransport peut remplacer le mécanisme WebSockets, offrant des fonctionnalités supplémentaires telles que le transfert multipath, des flux unidirectionnels, la livraison sans tenir compte de l'ordre d'envoi des paquets (out-of-order), ainsi que des modes de livraison fiables et non fiables. De plus, WebTransport peut être utilisé à la place du mécanisme Server Push, que Google a abandonné dans Chrome.
- Des méthodes findLast et findLastIndex ont été ajoutées aux objets JavaScript Array et TypedArrays, permettant de rechercher des éléments avec un affichage du résultat par rapport à la fin du tableau. [1,2,3,4].findLast((el) => el % 2 === 0) // → 4 (dernier élément pair)
- Les éléments HTML <details> fermés (sans l'attribut «open») sont désormais accessibles pour la recherche et les liens, et se déplient automatiquement lors de l'utilisation de la recherche sur la page et de la navigation par fragments (ScrollToTextFragment).
- Les restrictions de la politique de sécurité du contenu (CSP) dans les en-têtes de réponse de serveurs s'appliquent également aux workers dédiés, qui étaient auparavant considérés comme des documents distincts.
- Une requête explicite d'autorisation pour charger des sous-ressources depuis le réseau interne est désormais requise : avant de se connecter au réseau interne ou à localhost sur le serveur principal, une requête CORS (Cross-Origin Resource Sharing) avec l'en-tête « Access-Control-Request-Private-Network: true » doit être envoyée, nécessitant une confirmation de l'opération par le retour de l'en-tête « Access-Control-Allow-Private-Network: true ».
- Ajout de la propriété CSS font-synthesis, permettant de contrôler la possibilité pour le navigateur de synthétiser des variations de police manquantes (oblique, bold et small-cap) qui ne sont pas présentes dans la famille de polices sélectionnée.
- Pour les transformations CSS, un paramètre ‘none’ a été ajouté à la fonction perspective() et est traité comme une valeur infinie lors de l'organisation de l'animation.
- L'en-tête HTTP Permissions-Policy (Feature Policy), utilisé pour déléguer des pouvoirs et activer des fonctionnalités avancées, a ajouté le support de la valeur keyboard-map, permettant l'utilisation de l'API Keyboard. La méthode Keyboard.getLayoutMap() a été mise en place pour déterminer quelle touche a été pressée en tenant compte des différentes dispositions de clavier (par exemple, si une touche a été pressée avec la disposition russe ou anglaise).
- Ajout de la méthode HTMLScriptElement.supports(), unifiant la définition des nouvelles fonctionnalités disponibles dans l'élément « script », permettant par exemple de connaître la liste des valeurs prises en charge pour l'attribut « type ».
- Le processus de normalisation des nouvelles lignes lors de l'envoi de formulaires web a été harmonisé avec les moteurs de navigateurs Gecko et WebKit. La normalisation des caractères de saut de ligne et de retour chariot (remplaçant \/r et \/n par \r\n) dans Chrome est désormais effectuée à la dernière étape, et non au début du traitement de l'envoi du formulaire (c'est-à-dire que les gestionnaires intermédiaires utilisant l'objet FormData verront les données telles qu'ajoutées par l'utilisateur et non sous une forme normalisée).
- Les noms des propriétés pour l'API Client Hints, développée comme un remplacement de l'en-tête User-Agent et permettant la délivrance sélective des données sur des paramètres spécifiques du navigateur et du système (version, plateforme, etc.) uniquement sur demande du serveur, ont été standardisés. Les propriétés sont maintenant préfixées par « sec-ch- », par exemple, sec-ch-dpr, sec-ch-width, sec-ch-viewport-width, sec-ch-device-memory, sec-ch-rtt, sec-ch-downlink et sec-ch-ect.
- La deuxième phase de la fin du support de l'API WebSQL a été appliquée, et les appels à celle-ci depuis des scripts tiers seront désormais bloqués. À l'avenir, il est prévu d'arrêter progressivement le support de WebSQL, quel que soit le contexte d'utilisation. Le gestionnaire WebSQL est basé sur le code SQLite et pouvait être exploité par des attaquants pour tirer parti des vulnérabilités dans SQLite.
- Pour la plateforme Windows, une version avec des vérifications d'intégrité du flux d'exécution (CFG, Control Flow Guard) a été activée, bloquant les tentatives d'injection de code dans le processus Chrome. De plus, les services réseau exécutés dans des processus séparés bénéficient désormais d'une isolation en sandbox, limitant les capacités du code dans ces processus.
- Dans Chrome pour Android, un mécanisme de mise à jour dynamique du journal des certificats émis et révoqués (Certificate Transparency) a été intégré, qui était auparavant activé dans les versions pour systèmes de bureau.
- Des améliorations ont été apportées aux outils pour les développeurs web. Un support expérimental pour la synchronisation des paramètres de DevTools entre différents appareils a été mis en œuvre. Un nouveau panneau enregistreur a été ajouté, permettant d'enregistrer, de reproduire et d'analyser les actions des utilisateurs sur la page.

Lors de l'affichage des erreurs dans la console web, les numéros de colonnes liés au problème sont désormais affichés, ce qui facilite le débogage des problèmes dans le code JavaScript minifié. La liste des appareils pouvant être simulés pour évaluer l'affichage de la page sur des appareils mobiles a été mise à jour. L'interface d'édition des blocs HTML (Edit as HTML) a ajouté la coloration syntaxique et l'autocomplétion des saisies.

Outre les nouveautés et les corrections de bogues, la nouvelle version corrige 37 vulnérabilités. Beaucoup de ces vulnérabilités ont été identifiées grâce à des tests automatisés utilisant les outils AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer et AFL. Une des vulnérabilités a été classée comme un problème critique, permettant de contourner tous les niveaux de sécurité du navigateur et d'exécuter du code sur le système, en dehors de l'environnement sandbox. Les détails concernant la vulnérabilité critique (CVE-2022-0096) ne sont pas encore divulgués, il est seulement connu qu'elle est liée à l'accès à une zone mémoire déjà libérée dans le code de gestion des stockages internes (API Storage).
Dans le cadre du programme de récompense financière pour la découverte de vulnérabilités pour la version actuelle, Google a versé 24 primes d'un montant total de 54 000 dollars américains (trois primes de 10 000 $, deux primes de 5 000 $, une prime de 4 000 $, trois primes de 3 000 $ et une prime de 1 000 $). Le montant de 14 récompenses n'a pas encore été déterminé.
Source : opennet.ru





