La société Google a publié la version 147 de son navigateur web Chrome. En même temps, la version stable du projet open source Chromium, qui sert de base à Chrome, est disponible. Le navigateur Chrome se distingue de Chromium par l'utilisation de logos Google, la présence d'un système de notification en cas de crash, des modules pour la lecture de contenu vidéo protégé contre la copie (DRM), un système de mise à jour automatique, l'activation permanente de l'isolement Sandbox, la fourniture de clés pour l'API Google et la transmission des paramètres RLZ lors de recherche. Pour ceux qui ont besoin de plus de temps pour la mise à jour, une branche Extended Stable est maintenue, accompagnée de 8 semaines. La prochaine version de Chrome 148 est prévue pour le 5 mai.
Principales modifications dans Chrome 147 (1, 2, 3, 4) :
- Un mode d'affichage vertical des onglets a été ajouté, remplaçant la barre horizontale supérieure avec des boutons onglets par un panneau latéral avec des onglets verticaux. Les onglets verticaux peuvent s'afficher en mode étendu (icône + partie de la description) et en mode réduit (uniquement des icônes). En survolant un onglet latéral, un aperçu de son contenu est affiché. La gestion des groupes d'onglets a été simplifiée. Un choix « Afficher les onglets verticalement » (« Show Tabs Vertically ») a été ajouté au menu contextuel qui apparaît en cliquant avec le bouton droit de la souris sur la barre d'onglets. Si l'option n'apparaît pas par défaut, elle peut être activée via le paramètre « chrome://flags/#vertical-tabs ».
- Le mode lecture a été révisé, n'affichant que le texte significatif de la page, tandis que tous les éléments de contrôle accompagnants, les bannières, les menus, les barres de navigation et d'autres parties non liées au contenu sont masqués. Dans la nouvelle version, à la manière de Firefox, le contenu significatif est présenté sur toute la zone visible, et non plus dans une étroite fenêtre latérale à côté de la page d'origine. Si le nouveau mode n'est pas appliqué par défaut, il peut être activé via le paramètre « chrome://flags/#read-anything-immersive-reading-mode ».
- Un bouton pour signaler des plaintes a été ajouté au menu « Aide » pour inscrire en liste noire les pages web créées pour des activités frauduleuses ou de phishing. Le bouton apparaît lorsque le mode« Safe Browsing » est activé.
- Des mesures de protection contre l'accès à des systèmes locaux lors des interactions avec des sites publics ont été étendues. adresses IP L'accès aux ressources internes (intranet ou adresses internes) ou à l'interface loopback (127.0.0.0/8) nécessitera une confirmation de l'utilisateur. Maintenant, la protection concerne non seulement les tentatives de chargement de ressources via HTTP/HTTPS, les requêtes fetch() et les intégrations iframe, mais aussi les connexions établies via WebSockets et WebTransport, ainsi que les requêtes fetch initiées par la méthode WindowClient.navigate(). L'accès aux ressources internes est utilisé par des cybercriminels pour l'identification indirecte et pour mener des attaques CSRF sur les routeurs, points d'accès, imprimantes, interfaces web d'entreprise et autres dispositifs et services acceptant des requêtes uniquement depuis le réseau local.
- La fonctionnalité pour le traitement XML a été transférée de libxml2 à une nouvelle bibliothèque écrite en Rust axée sur la sécurité. Ce changement concerne uniquement XML, comme l'a précédemment annoncé, le support de XSLT sera bientôt abandonné.
- Il est désormais possible d'appliquer la méthode startViewTransition() non seulement à l'ensemble de la page mais aussi à des éléments HTML individuels.
- Ajout de la fonction CSS contrast-color(), qui retourne la couleur opposée à celle spécifiée (pour blanc, elle renverra noir, et pour noir, elle renverra blanc). Cette fonction peut être utilisée pour choisir une couleur de fond en fonction d'une couleur de texte donnée et vice versa.
- Ajout de la propriété CSS «border-shape», permettant de créer un encadrement non rectangulaire pour les éléments, par exemple, en utilisant des bordures rondes ou polygonales. La propriété CSS «border-shape» accepte les mêmes types de formes que la propriété «clip-path», mais contrairement à cette dernière, elle définit le contour, le décode et recadre le contenu qui dépasse.
- Ajout de l'interface CSSPseudoElement, permettant de travailler avec des pseudo-éléments CSS depuis JavaScript.
- Dans l'élément link, il est maintenant possible d'appliquer l'attribut «rel=modulepreload» pour le préchargement non seulement de scripts, mais aussi de modules avec des styles CSS (<link rel=»modulepreload» as=»style» href=»…»>) et de données JSON (<link rel=»modulepreload» as=»json» href=»…»>).
- Le comportement de calcul des largeurs des bordures et des contours dans les propriétés CSS border-width, outline-width et column-rule-width a été modifié, aligné avec Firefox et les navigateurs utilisant le moteur WebKit. Auparavant, la largeur dans ces propriétés était annulée, indépendamment des valeurs spécifiées, si les propriétés border-style, outline-style ou column-rule-style étaient définies sur «none» ou «hidden». Désormais, les valeurs de border-width, outline-width et column-rule-width reflètent toujours les valeurs définies par le développeur, quel que soit le contenu des propriétés «*-style».
- Une méthode Math.sumPrecise() a été ajoutée pour calculer la somme des éléments des tableaux et d'autres objets énumérables avec une précision dépassant celle de l'addition classique dans une boucle (excluant les pertes de précision lors de la sauvegarde intermédiaire des résultats).
- Un attribut Request.isReloadNavigation a été ajouté, permettant de déterminer si la page a été rechargée, par exemple, après avoir cliqué sur le bouton «Refresh» ou en appelant les méthodes location.reload() et history.go(0).
- Pour réduire la précision de l'identification indirecte, la logique d'arrondi de la taille de la mémoire retournée par l'API Device Memory a été modifiée, permettant d'obtenir des informations sur la taille de la mémoire vive. Ces informations peuvent être utiles pour créer des versions légères des applications web, qui se chargent pour des appareils avec peu de RAM ou pour activer des fonctionnalités étendues lorsqu'une grande quantité de mémoire est disponible. Dans les versions pour la plateforme Android, la taille de la mémoire est désormais arrondie à 1, 2, 4 et 8, et pour d'autres plateformes à 2, 4, 8, 16 et 32.
- Pour les applications web isolées (IWA — Isolated Web Apps), une API d'impression web a été mise en œuvre, fournissant des méthodes pour vérifier la disponibilité des imprimantes, envoyer des documents à imprimer et gérer la file d'attente d'impression. Les noms des attributs et la sémantique utilisés dans l'API correspondent au protocole IPP (Internet Printing Protocol).
- Dans le mode «Origin trials», une API WebNN a été mise en œuvre, permettant d'utiliser les services de l'opération système pour l'apprentissage machine et les capacités matérielles associées.
- Des améliorations ont été apportées aux outils pour les développeurs web. L'assistant AI intégré a mis en œuvre une sélection automatique du contexte. Le panneau « Device Mode » a été modernisé pour tester le fonctionnement du site sur différents appareils mobiles. Dans le panneau Réseau, un décodage automatique du contenu compressé des requêtes envoyées avec l'en-tête Content-Encoding : gzip ou deflate a été assuré. La possibilité d'appliquer des expressions régulières pour filtrer les styles CSS a été fournie.
En plus des nouveautés et des corrections de bugs, la nouvelle version corrige 60 vulnérabilités. Beaucoup de vulnérabilités ont été révélées à la suite de tests automatisés réalisés avec les outils AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer et AFL. Deux problèmes (dépassement de tampon et dépassement d'entier dans WebML) ont reçu un niveau de danger critique, ce qui signifie que les vulnérabilités permettent de contourner tous les niveaux de protection du navigateur et d'exécuter du code sur le système en dehors d'un environnement sandbox. Dans le cadre du programme de récompenses pour la découverte de vulnérabilités pour cette version, Google a attribué 60 récompenses et versé 118 000 dollars (deux récompenses de 43 000 $, deux de 11 000 $ et une de 4 000 $, 3 000 $, 2 000 $ et 1 000 $. Le montant de 52 récompenses reste à déterminer.
Source : opennet.ru
