Chrome Version 90

Google a dévoilé la sortie du navigateur Web Chrome 90. Parallèlement, une version stable du projet gratuit Chromium, qui sert de base à Chrome, est disponible. Le navigateur Chrome se distingue par l'utilisation des logos Google, la présence d'un système d'envoi de notifications en cas de crash, de modules de lecture de contenus vidéo protégés (DRM), d'un système d'installation automatique des mises à jour et de transmission des paramètres RLZ lors de la recherche. La prochaine version de Chrome 91 est prévue pour le 25 mai.

Changements clés dans Chrome 90 :

  • Tous les utilisateurs sont autorisés à ouvrir des sites via HTTPS par défaut lorsqu'ils saisissent des noms d'hôte dans la barre d'adresse. Par exemple, lorsque vous entrez l'hôte exemple.com, le site https://exemple.com sera ouvert par défaut, et si des problèmes surviennent lors de l'ouverture, il sera restauré vers http://exemple.com. Pour contrôler l'utilisation du « https:// » par défaut, le paramètre « chrome://flags#omnibox-default-typed-navigations-to-https » est proposé.
  • Il est désormais possible d'attribuer différentes étiquettes aux fenêtres pour les séparer visuellement dans le panneau du bureau. La prise en charge de la modification du nom de la fenêtre simplifiera l'organisation du travail lors de l'utilisation de fenêtres de navigateur distinctes pour différentes tâches, par exemple lors de l'ouverture de fenêtres distinctes pour des tâches de travail, des intérêts personnels, des divertissements, des documents différés, etc. Le nom est modifié via l'élément « Ajouter un titre de fenêtre » dans le menu contextuel qui apparaît lorsque vous cliquez avec le bouton droit sur une zone vide dans la barre d'onglets. Après avoir modifié le nom dans le panneau d'application, au lieu du nom du site de l'onglet actif, le nom sélectionné s'affiche, ce qui peut être utile lors de l'ouverture des mêmes sites dans différentes fenêtres liées à des comptes distincts. La liaison est maintenue entre les sessions et après un redémarrage, les fenêtres seront restaurées avec les noms sélectionnés.
    Chrome Version 90
  • Ajout de la possibilité de masquer la « Liste de lecture » sans avoir à modifier les paramètres dans « chrome://flags » (« chrome://flags#read-later »). Pour masquer, vous pouvez désormais utiliser l'option « Afficher la liste de lecture » en bas du menu contextuel affiché lorsque vous cliquez avec le bouton droit sur la barre de favoris. Rappelons que dans la dernière version, lorsque certains utilisateurs cliquent sur l'astérisque dans la barre d'adresse, en plus du bouton « Ajouter un favori », un deuxième bouton « Ajouter à la liste de lecture » apparaît, et dans le coin droit du panneau de signets, le menu « Liste de lecture » apparaît, qui répertorie toutes les pages précédemment ajoutées à la liste. Lorsque vous ouvrez une page de la liste, elle est marquée comme lue. Les pages de la liste peuvent également être marquées manuellement comme lues ou non lues, ou supprimées de la liste.
  • Ajout de la prise en charge de la segmentation du réseau pour se protéger contre les méthodes de suivi des mouvements des utilisateurs entre les sites basées sur le stockage d'identifiants dans des zones non destinées au stockage permanent d'informations (« Supercookies »). Étant donné que les ressources mises en cache sont stockées dans un espace de noms commun, quel que soit le domaine d'origine, un site peut déterminer qu'un autre site charge des ressources en vérifiant si cette ressource se trouve dans le cache. La protection est basée sur l'utilisation de la segmentation du réseau (Network Partitioning), dont l'essence est d'ajouter aux caches partagés une liaison supplémentaire des enregistrements au domaine à partir duquel la page principale est ouverte, ce qui limite la couverture du cache pour les scripts de suivi de mouvement uniquement. vers le site actuel (un script issu d'une iframe ne pourra pas vérifier si la ressource a été téléchargée depuis un autre site). Le prix de la segmentation est une diminution de l'efficacité de la mise en cache, entraînant une légère augmentation du temps de chargement des pages (maximum de 1.32 %, mais pour 80 % des sites de 0.09 à 0.75 %).
  • La liste noire des ports réseau pour lesquels l'envoi de requêtes HTTP, HTTPS et FTP est bloquée a été reconstituée afin de se protéger contre les attaques par slipstreaming NAT, ce qui permet, lors de l'ouverture d'une page web spécialement préparée par l'attaquant dans un navigateur, d'établir un réseau connexion du serveur de l'attaquant à n'importe quel port UDP ou TCP du système de l'utilisateur, malgré l'utilisation de la plage d'adresses interne (192.168.xx, 10.xxx). Ajout de 554 (protocole RTSP) et 10080 (utilisé dans la sauvegarde Amanda et VMWare vCenter) à la liste des ports interdits. Auparavant, les ports 69, 137, 161, 554, 1719, 1720, 1723, 5060, 5061 et 6566 étaient déjà bloqués.
  • Ajout de la prise en charge initiale de l'ouverture de documents PDF avec des formulaires XFA dans le navigateur.
  • Pour certains utilisateurs, une nouvelle section de paramètres « Paramètres Chrome > Confidentialité et sécurité > Privacy sandbox » a été activée, qui permet de gérer les paramètres de l'API FLoC, visant à déterminer la catégorie d'intérêts des utilisateurs sans identification individuelle et sans référence à l'histoire de la visite de sites spécifiques.
  • Une notification plus claire avec une liste des actions autorisées s'affiche désormais lorsqu'un utilisateur se connecte à un profil pour lequel la gestion centralisée est activée.
  • Rendu l’interface de demande d’autorisations moins intrusive. Les demandes que l'utilisateur est susceptible de refuser sont désormais bloquées automatiquement avec un indicateur correspondant affiché dans la barre d'adresse, avec lequel l'utilisateur peut accéder à l'interface de gestion des autorisations site par site.
    Chrome Version 90
  • La prise en charge des extensions Intel CET (Intel Control-flow Enforcement Technology) est incluse pour la protection matérielle contre les exploits créés à l'aide de techniques de programmation orientée retour (ROP, Return-Oriented Programming).
  • Le travail se poursuit pour faire évoluer le navigateur vers une terminologie inclusive. Le fichier "master_preferences" a été renommé "initial_preferences" pour éviter de heurter les sentiments des utilisateurs qui perçoivent le mot "master" comme une allusion à l'ancien esclavage de leurs ancêtres. Pour maintenir la compatibilité, la prise en charge de « master_preferences » restera dans le navigateur pendant un certain temps. Auparavant, le navigateur s'était déjà débarrassé de l'utilisation des mots « liste blanche », « liste noire » et « natif ».
  • Dans la version Android, lorsque le mode d'économie de trafic « Lite » est activé, le débit binaire est réduit lors du téléchargement de vidéo lors de la connexion via les réseaux des opérateurs mobiles, ce qui réduira les coûts des utilisateurs dont les tarifs basés sur le trafic sont activés. Le mode « Lite » permet également la compression des images demandées à partir de ressources accessibles au public (ne nécessitant pas d'authentification) via HTTPS.
  • Ajout d'un encodeur au format vidéo AV1, spécialement optimisé pour une utilisation en visioconférence basée sur le protocole WebRTC. L'utilisation d'AV1 en visioconférence permet d'augmenter l'efficacité de la compression et d'offrir la possibilité de diffuser sur des canaux avec une bande passante de 30 kbit/s.
  • En JavaScript, les objets Array, String et TypedArrays implémentent la méthode at(), qui vous permet d'utiliser l'indexation relative (une position relative est spécifiée comme index du tableau), notamment en spécifiant des valeurs négatives par rapport à la fin (par exemple , "arr.at(-1)" renverra le dernier élément du tableau).
  • JavaScript a ajouté la propriété « .indices » pour les expressions régulières, qui contient un tableau avec les positions de début et de fin des groupes de correspondances. La propriété est renseignée uniquement lors de l'exécution de l'expression régulière avec l'indicateur "/d". const re = /(a)(b)/d; const m = re.exec('ab'); console.log(m.indices[0]); // 0 — tous les groupes de correspondance // → [0, 2] console.log(m.indices[1]); // 1 est le premier groupe de correspondances // → [0, 1] console.log(m.indices[2]); // 2 - deuxième groupe de matchs // → [1, 2]
  • Les performances des « super » propriétés (par exemple, super.x) pour lesquelles le cache en ligne est activé ont été optimisées. Les performances d'utilisation de "super" sont désormais proches des performances d'accès aux propriétés standard.
  • L'appel de fonctions WebAssembly à partir de JavaScript a été considérablement accéléré grâce à l'utilisation du déploiement en ligne. Cette optimisation reste expérimentale pour l'instant et nécessite de fonctionner avec le flag « -turbo-inline-js-wasm-calls ».
  • Ajout de l'API WebXR Depth Sensing, qui vous permet de déterminer la distance entre les objets dans l'environnement de l'utilisateur et l'appareil de l'utilisateur, par exemple, pour créer des applications de réalité augmentée plus réalistes. Rappelons que l'API WebXR vous permet d'unifier le travail avec différentes classes d'appareils de réalité virtuelle, des casques 3D fixes aux solutions basées sur des appareils mobiles.
  • La fonctionnalité WebXR AR Lighting Estimation a été stabilisée, permettant aux sessions WebXR AR de déterminer les paramètres d'éclairage ambiant pour donner aux modèles une apparence plus naturelle et une meilleure intégration avec l'environnement de l'utilisateur.
  • Le mode Origin Trials (fonctionnalités expérimentales nécessitant une activation séparée) ajoute plusieurs nouvelles API actuellement limitées à la plate-forme Android. Origin Trial implique la possibilité de travailler avec l'API spécifiée à partir d'applications téléchargées depuis localhost ou 127.0.0.1, ou après enregistrement et réception d'un jeton spécial valable pour une durée limitée pour un site spécifique.
    • La méthode getCurrentBrowsingContextMedia(), qui permet de capturer un flux vidéo MediaStream reflétant le contenu de l'onglet courant. Contrairement à la méthode similaire getDisplayMedia(), lors de l'appel de getCurrentBrowsingContextMedia(), une simple boîte de dialogue est présentée à l'utilisateur pour confirmer ou bloquer l'opération de transfert de vidéo avec le contenu de l'onglet.
    • API Insertable Streams, qui vous permet de manipuler les flux multimédias bruts transmis via l'API MediaStreamTrack, tels que les données de caméra et de microphone, les résultats de capture d'écran ou les données de décodage de codec intermédiaire. Les interfaces WebCodec sont utilisées pour présenter des images brutes et un flux est généré similaire à celui généré par l'API WebRTC Insertable Streams sur la base de RTCPeerConnections. Côté pratique, la nouvelle API permet des fonctionnalités telles que l'application de techniques de machine learning pour identifier ou annoter des objets en temps réel, ou encore l'ajout d'effets tels que le découpage de l'arrière-plan avant l'encodage ou après le décodage par un codec.
    • La possibilité de regrouper les ressources en packages (Web Bundle) pour organiser un chargement plus efficace d'un grand nombre de fichiers d'accompagnement (styles CSS, JavaScript, images, iframes). Parmi les lacunes du support existant des packages pour fichiers JavaScript (webpack), que le Web Bundle tente d'éliminer : le package lui-même, mais pas ses composants, peut se retrouver dans le cache HTTP ; la compilation et l'exécution ne peuvent commencer qu'une fois le package complètement téléchargé ; Les ressources supplémentaires telles que CSS et images doivent être codées sous forme de chaînes JavaScript, ce qui augmente la taille et nécessite une autre étape d'analyse.
    • Prise en charge de la gestion des exceptions dans WebAssembly.
  • Stabilisation de l'API Declarative Shadow DOM pour créer de nouvelles branches racine dans le Shadow DOM, par exemple pour séparer un style d'élément tiers importé et sa sous-branche DOM associée du document principal. L'API déclarative proposée vous permet d'utiliser uniquement du HTML pour désépingler les branches DOM sans avoir besoin d'écrire du code JavaScript.
  • La propriété CSS aspect-ratio, qui vous permet de lier explicitement le rapport hauteur/largeur à n'importe quel élément (pour calculer automatiquement la taille manquante lors de la spécification uniquement de la hauteur ou de la largeur), implémente la possibilité d'interpoler les valeurs pendant l'animation (transition en douceur d'un rapport hauteur/largeur à un autre).
  • Ajout de la possibilité de refléter l'état des éléments HTML personnalisés en CSS via la pseudo-classe « :state() ». La fonctionnalité est implémentée par analogie avec la capacité des éléments HTML standard à changer d'état en fonction de l'interaction de l'utilisateur.
  • La propriété CSS "apparence" prend désormais en charge la valeur "auto", qui est définie par défaut pour Et , et sur la plateforme Android en plus pour , , , Et .
  • La prise en charge de la valeur « clip » a été ajoutée à la propriété CSS « ​​overflow ». Lorsqu'elle est définie, le contenu qui s'étend au-delà du bloc est coupé jusqu'à la limite du débordement autorisé du bloc sans possibilité de défilement. La valeur qui détermine jusqu'où le contenu peut s'étendre au-delà de la bordure réelle de la boîte avant le début du découpage est définie via la nouvelle propriété CSS "overflow-clip-margin". Par rapport à "overflow: caché", l'utilisation de "overflow: clip" permet de meilleures performances.
    Chrome Version 90Chrome Version 90
  • L'en-tête HTTP Feature-Policy a été remplacé par un nouvel en-tête Permissions-Policy pour contrôler la délégation des autorisations et l'activation des fonctionnalités avancées, qui inclut la prise en charge des valeurs de champs structurés (par exemple, vous pouvez désormais spécifier « Permissions-Policy : géolocalisation =()" au lieu de "Feature-Politique : géolocalisation 'aucune'").
  • Protection renforcée contre l'utilisation de Protocol Buffers pour les attaques provoquées par l'exécution spéculative d'instructions dans les processeurs. La protection est mise en œuvre en ajoutant le type MIME « application/x-protobuffer » à la liste des types MIME jamais détectés, qui est traité via le mécanisme Cross-Origin-Read-Blocking. Auparavant, le type MIME « application/x-protobuf » était déjà inclus dans une liste similaire, mais « application/x-protobuffer » était laissé de côté.
  • L'API d'accès au système de fichiers implémente la possibilité de déplacer la position actuelle dans un fichier au-delà de sa fin, comblant ainsi le vide résultant avec des zéros lors de l'écriture ultérieure via l'appel FileSystemWritableFileStream.write(). Cette fonctionnalité permet de créer des fichiers clairsemés avec des espaces vides et simplifie considérablement l'organisation de l'écriture dans un fichier de flux avec arrivée désordonnée de blocs de données (par exemple, cela se pratique dans BitTorrent).
  • Ajout du constructeur StaticRange avec implémentation de types Range légers qui ne nécessitent pas de mise à jour de tous les objets associés à chaque fois que l'arborescence DOM change.
  • Implémentation de la possibilité de spécifier les paramètres de largeur et de hauteur pour les éléments spécifié à l'intérieur de l'élément . Cette fonctionnalité vous permet de calculer le rapport hauteur/largeur des éléments , par analogie avec la façon dont cela se fait pour , Et .
  • La prise en charge non standardisée des canaux de données RTP a été supprimée de WebRTC et il est recommandé d'utiliser à la place des canaux de données basés sur SCTP.
  • Les propriétés navigator.plugins et navigator.mimeTypes renvoient désormais toujours une valeur vide (après la fin du support Flash, ces propriétés n'étaient plus nécessaires).
  • Une grande partie de petites améliorations ont été apportées aux outils destinés aux développeurs Web et un nouvel outil de débogage CSS, flexbox, a été ajouté.
    Chrome Version 90

En plus des innovations et des corrections de bugs, la nouvelle version élimine 37 vulnérabilités. De nombreuses vulnérabilités ont été identifiées à la suite de tests automatisés utilisant les outils AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer et AFL. Aucun problème critique n'a été identifié qui permettrait de contourner tous les niveaux de protection du navigateur et d'exécuter du code sur le système en dehors de l'environnement sandbox. Dans le cadre du programme de récompense en espèces pour la découverte des vulnérabilités de la version actuelle, Google a versé 19 récompenses d'une valeur de 54000 20000 $ (une récompense de 10000 5000 $, une récompense de 3000 2000 $, deux récompenses de 1000 500 $, trois récompenses de 6 XNUMX $, une récompense de XNUMX XNUMX $, une récompense de XNUMX XNUMX $ et quatre récompenses de XNUMX $. ). ). La taille des XNUMX récompenses n’a pas encore été déterminée.

Par ailleurs, on peut noter qu'hier, après la formation de la version corrective 89.0.4389.128, mais avant la sortie de Chrome 90, un autre exploit a été publié, qui utilisait une nouvelle vulnérabilité de 0 jour qui n'a pas été corrigée dans Chrome 89.0.4389.128. . Il n'est pas encore clair si ce problème a été résolu dans Chrome 90. Comme dans le premier cas, l'exploit ne couvre qu'une seule vulnérabilité et ne contient pas de code pour contourner l'isolation du bac à sable (lors de l'exécution de Chrome avec l'indicateur « --no-sandbox » , l'exploit se produit lors de l'ouverture d'une page Web sur la plate-forme Windows permettant d'exécuter le Bloc-notes). La vulnérabilité associée au nouvel exploit affecte la technologie WebAssembly.

Source: opennet.ru

Ajouter un commentaire