Aligner des minuteurs avec des restrictions d'isolation multi-origine

Avant la version 91, les résolutions de minuteur dans Chrome étaient limitées à cinq microsecondes sur ordinateur, où l'isolation de site est activée, et à 100 microsecondes sur Android, où elle ne l'est pas.

À partir de la version 91, à la suite d'un changement de spécification, Chrome limitera la résolution des minuteurs explicites (performance.now(), performance.timeOrigin et d'autres API de performances qui exposent DOMHighResTimestamps) à 100 microsecondes sur toutes les plates-formes. En activant l'isolation multi-origine, les sites Web peuvent assouplir la restriction à cinq microsecondes, quelle que soit la plate-forme.

L'approche similaire proposée sur SharedArrayBuffer consiste à obtenir des fonctionnalités plus puissantes en activant l'isolation multi-origine. L'isolation inter-origines est un état dans lequel une page Web est isolée des autres origines, à l'exception de celles qui ont activé cette fonctionnalité.

Dois-je faire quelque chose ?

Probablement pas. performance.now() a été limité à des résolutions beaucoup plus grossières dans d'autres navigateurs (par exemple, 1 milliseconde = 0,001 seconde). Vous ne devriez donc pas vous fier à la résolution actuelle.

En même temps, si vous souhaitez bénéficier d'une résolution plus élevée pour vos minuteurs, par exemple pour des mesures de performances plus précises, vous devez vous assurer que votre site est isolé entre les origines. Vous obtiendrez ainsi une meilleure résolution dans Chrome et les autres navigateurs Chromium, ainsi que dans Firefox.

Quel est le rapport entre les minuteurs et l'isolation multi-origine ?

Les fournisseurs de navigateurs ont décidé de limiter les minuteurs à des résolutions plus grossières (ainsi que la disponibilité de SharedArrayBuffers pouvant être utilisés comme minuteurs implicites) lors de la découverte de Spectre. En effet, Spectre et les attaques d'exécution spéculative similaires s'appuient sur des minuteurs pour mesurer le temps de certaines opérations, puis devinent le contenu de la mémoire du processus.

Bien que les attaques par exécution spéculative puissent être exécutées avec des minuteurs grossiers, les minuteurs haute résolution peuvent les accélérer. Chrome a utilisé son architecture d'isolation de site, ainsi que d'autres mécanismes, pour atténuer le risque et réactiver ces fonctionnalités. Toutefois, elles sont limitées aux plates-formes de bureau et aux navigateurs Chromium uniquement. Avoir des API qui reposent sur l'architecture sous-jacente du navigateur n'est pas vraiment idéal.

L'isolation multi-origine fournit la référence standard permettant aux navigateurs d'exécuter des pages dans un environnement isolé, de sorte qu'ils ne puissent pas charger de ressources multi-origines non souhaitées et ne soient donc pas exposés à Spectre. Grâce à l'isolation inter-origine, nous pouvons désormais autoriser les pages à accéder aux minuteurs haute résolution, à SharedArrayBuffer et à d'autres API qui ne sont pas sûrs à exposer dans des processus pouvant lire des données inter-origine arbitraires.

Pour en savoir plus sur l'origine de ce changement, consultez Pourquoi avez-vous besoin de l'isolation inter-origine pour des fonctionnalités puissantes ?

Photo de couverture par Linda Perez Johannessen sur Unsplash.