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

Avant la version 91, les résolutions du minuteur dans Chrome étaient limitées à 5 microsecondes sur ordinateur, lorsque l'isolation de sites était activée, et à 100 microsecondes sur Android, contrairement à ce qui est le cas.

À partir de la version 91, suite à une modification d'une 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 à 5 microsecondes, quelle que soit la plate-forme.

L'obtention de fonctionnalités plus puissantes en activant l'isolation multi-origine est une approche similaire posée sur SharedArrayBuffer. L'isolation multi-origine est un État dans lequel une page Web est isolée des autres origines, à l'exception de celles pour lesquelles la fonctionnalité a été activée.

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 n'auriez donc pas dû vous fier à la résolution actuelle.

En parallèle, 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é multi-origine. Vous obtiendrez ainsi une meilleure résolution dans Chrome et dans d'autres navigateurs basés sur Chromium, ainsi que dans Firefox.

Quel est le lien 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 de la disponibilité de SharedArrayBuffers, qui peuvent être utilisés comme minuteurs implicites) lors de la découverte de Spectre. En effet, Spectre, et d'autres attaques d'exécution spéculative similaires, s'appuient sur des minuteurs pour mesurer la durée de certaines opérations, puis deviner le contenu de la mémoire du processus.

Bien que les attaques d'exécution spéculative puissent être exécutées avec des minuteurs approximatifs, les minuteurs haute résolution peuvent les accélérer. Chrome a utilisé son architecture d'isolation de sites, ainsi que d'autres mécanismes, pour atténuer les risques et réactiver ces fonctionnalités. Toutefois, il est limité 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 pour que les navigateurs exécutent des pages dans un environnement isolé, de sorte qu'ils ne puissent pas charger de ressources multi-origines involontaires et ne soient donc pas menacés pour Spectre. L'isolation multi-origine nous permet désormais d'autoriser les pages à accéder aux minuteurs haute résolution, à SharedArrayBuffer et à d'autres API dont l'exposition n'est pas sécurisée dans les processus capables de lire des données multi-origines arbitraires.

Pour en savoir plus sur le contexte derrière ce changement, consultez la section Pourquoi avez-vous besoin d'un environnement isolé multi-origine pour bénéficier de fonctionnalités puissantes.

Photo de couverture par Linda Perez Johannessen sur Unsplash.