Google a lancé la version 101 de son navigateur web Chrome. Parallèlement, une version stable du projet open source Chromium, qui sert de base à Chrome, est également disponible. Le navigateur Chrome se distingue de Chromium par l'utilisation des logos de Google, un système de notification en cas de plantage, des modules permettant la lecture de contenus vidéo protégés (DRM), un système de mise à jour automatique, l'activation permanente de l'isolation Sandbox, la fourniture de clés pour l'API Google et l'envoi de paramètres RLZ lors des recherches. Pour ceux qui ont besoin de plus de temps pour la mise à jour, une branche Extended Stable est maintenue durant 8 semaines, comprenant une mise à jour pour la version précédente Chrome 100. La prochaine version de Chrome 102 est prévue pour le 24 mai.
Les principales modifications de Chrome 101 :
- Une fonction de recherche latérale a été ajoutée, permettant d'afficher les résultats de recherche dans un panneau latéral tout en naviguant sur une autre page (dans une seule fenêtre, le contenu de la page et les résultats de recherche peuvent être visibles simultanément). Après avoir visité un site depuis la page des résultats de recherche de Google, une icône avec un « G » apparaît devant le champ de saisie de la barre d'adresse ; en cliquant dessus, le panneau latéral avec les résultats de la recherche précédente s'ouvre. Par défaut, cette fonction n'est pas activée sur tous les systèmes ; il est possible de l'activer via le paramètre « chrome://flags/#side-search ».

- La barre d'adresse Omnibox a mis en œuvre le pré-rendu (prerendering) du contenu des suggestions, qui sont proposées au fur et à mesure de la saisie. Auparavant, pour accélérer la transition depuis la barre d'adresse, les recommandations les plus probables étaient chargées sans attendre de clic de l'utilisateur, à l'aide de l'appel Prefetch. Désormais, en plus d'être chargées, elles sont également pré-rendues en mémoire (y compris l'exécution de scripts et la formation de l'arbre DOM), ce qui permet d'assurer un affichage instantané des recommandations après un clic. Des paramètres pour gérer le pré-rendu sont proposés via « chrome://flags/#enable-prerender2 », « chrome://flags/#omnibox-trigger-for-prerender2 » et « chrome://flags/#search-suggestion-for-prerender2 ».
- Les informations dans l'en-tête HTTP User-Agent et les paramètres JavaScript navigator.userAgent, navigator.appVersion et navigator.platform ont été limitées. L'en-tête ne contient que des informations sur le nom du navigateur, sa version majeure (les composants de la version MINOR.BUILD.PATCH remplacés par 0.0.0), la plateforme et le type d'appareil (téléphone mobile, PC, tablette). Pour obtenir des données supplémentaires, telles que la version exacte et des informations avancées sur la plateforme, il est nécessaire d'utiliser l'API User Agent Client Hints. Pour les sites qui ne disposent pas d'informations supplémentaires et qui ne sont pas encore prêts à passer à User Agent Client Hints, la possibilité de retourner l'intégralité de l'user-agent sera maintenue jusqu'en mai 2023.
- Le comportement de la fonction setTimeout a été modifié lorsque l'argument de délai est nul. À partir de Chrome 101, lorsque 'setTimeout(…, 0)' est spécifié, le code sera exécuté immédiatement, sans délai de 1 ms comme l'exige la spécification. Pour les appels imbriqués répétés de setTimeout, un délai de 4 ms est appliqué.
- La version pour la plateforme Android a implémenté la prise en charge de la demande d'autorisation pour afficher des notifications (sur Android 13, pour afficher des notifications, l'application doit avoir l'autorisation 'POST_NOTIFICATIONS', sans laquelle l'envoi de notifications sera bloqué). Lors du lancement de Chrome dans un environnement Android 13, le navigateur affichera désormais une demande de permissions pour les notifications.
- La possibilité d'utiliser l'API WebSQL dans des scripts tiers a été supprimée. Par défaut, le blocage de WebSQL dans les scripts chargés depuis un site différent de l'actuel a été activé dans Chrome 97, mais une option pour désactiver ce comportement a été laissée. Dans Chrome 101, cette option a été supprimée. À l'avenir, le support de WebSQL sera progressivement arrêté, quel que soit le contexte d'utilisation. Il est recommandé d'utiliser l'API Web Storage et Indexed Database à la place de WebSQL. Le gestionnaire WebSQL était basé sur le code SQLite, qui pouvait être exploité par des attaquants pour tirer parti des vulnérabilités de SQLite.
- Les noms des politiques pour les entreprises (chrome://policy) contenant des termes non inclusifs ont été supprimés. À partir de Chrome 86, des remplacements utilisant une terminologie inclusive ont été proposés pour les politiques spécifiées. Des termes tels que 'whitelist', 'blacklist', 'native' et 'master' ont été nettoyés. Par exemple, la politique URLBlacklist a été renommée en URLBlocklist, AutoplayWhitelist en AutoplayAllowlist et NativePrinters en Printers.
- Dans le cadre des Origin Trials (fonctionnalités expérimentales nécessitant une activation distincte), des tests de l'API Federated Credential Management (FedCM) ont commencé uniquement sur les versions pour la plateforme Android. Cette API permet de créer des services d'identification intégrés qui garantissent la confidentialité et fonctionnent sans mécanismes de suivi intersites, tels que le traitement des cookies tiers. L'Origin Trial implique la possibilité d'utiliser cette API depuis des applications chargées à partir de localhost ou 127.0.0.1, ou après avoir enregistré et obtenu un jeton spécial, qui est valide pour une durée limitée pour un site web spécifique.
- Le mécanisme Priority Hints a été stabilisé et proposé à tous ceux qui le souhaitent. Cela permet de définir l'importance de certaines ressources chargées en ajoutant un attribut supplémentaire 'importance' dans les balises telles que iframe, img et link. Cet attribut peut prendre les valeurs 'auto', 'low' et 'high', influençant ainsi l'ordre de chargement des ressources externes par le navigateur.
- Une nouvelle propriété AudioContext.outputLatency a été ajoutée, permettant d'obtenir des informations sur la latence attendue avant la sortie audio (le délai entre la demande de son et le début du traitement des données reçues par le périphérique de sortie audio).
- La propriété CSS font-palette et la règle @font-palette-values ont été ajoutées, permettant de choisir une palette de couleurs d'une police colorée ou de définir sa propre palette. Par exemple, cette fonctionnalité peut être utilisée pour adapter des polices de caractères colorées ou des emoji à la couleur de mise en forme du contenu, ou pour activer un mode sombre ou clair pour la police.
- Une nouvelle fonction CSS hwb() a été ajoutée, fournissant une méthode alternative pour spécifier des couleurs sRGB au format HWB (Teinte, Blanchiment, Noircissement), qui est similaire au format HSL (Teinte, Saturation, Luminosité), mais plus simple à percevoir pour l'humain.
- Dans la méthode window.open(), la spécification de la propriété popup dans la chaîne windowFeatures, sans attribuer de valeur (c'est-à-dire simplement указать popup, sans значение popup=true) est maintenant traitée comme un déclenchement de l'ouverture d'une fenêtre popup miniature (équivalent à popup=true) au lieu d'attribuer par défaut la valeur 'false', ce qui était illogique et prêtait à confusion pour les développeurs.
- L'API MediaCapabilities, qui fournit des informations sur les capacités de l'appareil et du navigateur en matière de décodage de contenu multimédia (codecs, profils, débits binaires et résolutions pris en charge), a ajouté la prise en charge des flux WebRTC.
- Une troisième version de l'API Secure Payment Confirmation a été proposée, fournissant des outils pour une confirmation supplémentaire des transactions de paiement. La nouvelle version inclut la prise en charge des identifiants nécessitant la saisie de données, la définition d'une icône pour indiquer une échec de vérification, ainsi qu'une propriété facultative payeeName.
- L'API USBDevice a ajouté la méthode forget() pour révoquer les autorisations précédemment accordées par l'utilisateur pour accéder au périphérique USB. De plus, les instances USBConfiguration, USBInterface, USBAlternateInterface et USBEndpoint sont désormais égales lors d'une comparaison stricte («===», pointant vers le même objet), si elles sont renvoyées pour le même objet USBDevice.
- Des améliorations ont été apportées aux outils pour les développeurs web. Il est désormais possible d'importer et d'exporter des actions utilisateur enregistrées au format JSON (exemple). La console web et l'interface d'inspection du code ont amélioré le calcul et l'affichage des propriétés privées. La prise en charge de la manipulation avec le modèle de couleur HWB a été ajoutée. Le panneau CSS a ajouté une fonctionnalité de visualisation des couches en cascade définies par la règle @layer.

En plus des nouvelles fonctionnalités et corrections de bogues dans cette version, 30 vulnérabilités ont été corrigées. De nombreuses vulnérabilités ont été identifiées grâce à des tests automatisés utilisant les outils AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer et AFL. Aucune vulnérabilité critique permettant de contourner toutes les couches de protection du navigateur et d'exécuter du code en dehors de l'environnement sandbox n'a été détectée. Dans le cadre du programme de récompense pour la découverte de vulnérabilités pour cette version, Google a octroyé 25 récompenses d'un montant total de 81 000 dollars (une récompense de 10 000 $, trois récompenses de 7 500 $, trois récompenses de 7 000 $, une récompense de 6 000 $, deux récompenses de 5 000 $, quatre récompenses de 2 000 $, trois récompenses de 1 000 $ et une récompense de 500 $). Le montant de 6 récompenses n'est pas encore déterminé.
Source : opennet.ru


