Mozilla Firefox 148 marque un changement significatif dans les protections au niveau du navigateur contre les scripts intersites (XSS). La dernière version de Firefox est le premier navigateur à intégrer l'API Sanitizer standardisée, qui offre une protection XSS intégrée en nettoyant le code HTML non fiable avant son insertion dans le DOM. La nouvelle méthode setHTML() remplace l'affectation innerHTML, sujette aux erreurs, en supprimant par défaut les éléments et attributs dangereux. Les développeurs peuvent également personnaliser la configuration de nettoyage pour des règles plus strictes ou plus permissives, et peuvent combiner setHTML() avec Trusted Types pour une protection encore plus efficace.
Mozilla Firefox est un navigateur web gratuit et open source développé par la Fondation Mozilla et sa filiale, la Mozilla Corporation. Il utilise le moteur de rendu Gecko pour afficher les pages web, qui met en œuvre les normes web actuelles et prévues. Firefox a été créé en 2002 sous le nom de code « Phoenix » par des membres de la communauté Mozilla qui souhaitaient un navigateur autonome plutôt que le pack Mozilla Application Suite. Historiquement, Firefox s'est positionné comme une alternative légère et respectueuse de la vie privée face à ses concurrents, en particulier Google Chrome.
Le navigateur Firefox 148 a récemment été publié, apportant des améliorations aux capacités de la plateforme Web de base, notamment l'intégration des API Trusted Types et Sanitizer pour lutter contre les problèmes de script inter-sites (XSS). Cette version comprend également l'ajout d'un nouveau « kill switch » pour l'IA, qui permet aux utilisateurs de désactiver complètement les fonctionnalités d'intelligence artificielle (IA) intégrées au navigateur via un panneau de paramètres dédié.
Le cross-site scripting (XSS) est un type de faille de sécurité que l'on peut trouver dans certaines applications web. Les attaques XSS permettent aux pirates d'injecter des scripts côté client dans les pages web consultées par d'autres utilisateurs. Une vulnérabilité de type cross-site scripting peut être utilisée par des pirates pour contourner les contrôles d'accès tels que la politique de même origine. Les effets du XSS varient, allant d'une simple nuisance à un risque de sécurité important, en fonction de la sensibilité des données traitées par le site vulnérable et de la nature des mesures de sécurité mises en œuvre par le réseau propriétaire du site.
Le cross-site scripting (XSS) est l'une des vulnérabilités les plus répandues sur le Web. Dès l'essor des applications Web riches et du HTML5, plusieurs experts ont alerté sur la difficulté de contenir les failles XSS. En 2011, Michal Zalewski, alors ingénieur chez Google, soulignait déjà que ces attaques permettaient d'injecter du code malveillant dans des pages légitimes, compromettant ainsi les identifiants et les données sensibles des utilisateurs. Bien que la politique de même origine limite certaines interactions intersites, une page compromise peut rester sous le contrôle d'un attaquant tant qu'elle reste active.
La nouvelle API Sanitizer standardisée offre aux développeurs Web un moyen simple de nettoyer le code HTML non fiable avant de l'insérer dans le DOM. Le navigateur Firefox 148 est ainsi le premier navigateur à intégrer cette API standardisée qui améliore la sécurité, contribuant à rendre le Web plus sûr pour tous.
Une vulnérabilité XSS survient lorsqu'un site web laisse involontairement des pirates injecter du code HTML ou JavaScript arbitraire via du contenu généré par les utilisateurs. Grâce à cette attaque, un pirate peut surveiller et manipuler les interactions des utilisateurs et voler continuellement leurs données tant que la vulnérabilité reste exploitable. Le XSS est depuis longtemps réputé pour être difficile à prévenir et figure parmi les trois principales vulnérabilités web (CWE-79) depuis près d'une décennie.
Firefox s'est fortement impliqué dans les solutions contre les XSS dès le début, en commençant par lancer la norme Content-Security-Policy (CSP) en 2009. La norme CSP permet aux sites web de restreindre les ressources (scripts, styles, images, etc.) que le navigateur peut charger et exécuter, offrant ainsi une solide ligne de défense contre les attaques XSS. Malgré des améliorations constantes et une maintenance continue, la norme CSP n'a pas été suffisamment adoptée pour protéger l'ensemble du web, car elle nécessite des changements architecturaux importants pour les sites web existants et un examen continu par des experts en sécurité.
L'API Sanitizer est conçue pour combler cette lacune en fournissant un moyen standardisé de transformer du code HTML malveillant en code HTML inoffensif, autrement dit, de le nettoyer. La méthode setHTML() intègre le nettoyage directement dans l'insertion HTML, offrant ainsi une sécurité par défaut. Voici un exemple de nettoyage d'un code HTML simple et non sécurisé :
Code HTML :
Cette sanitisation autorisera l'élément HTML <h1> tout en supprimant l'élément <img> intégré et son attribut onclick, éliminant ainsi l'attaque XSS et générant le code HTML sécurisé suivant :1 document.body.setHTML(`<h1>Hello my name is <img src="x"
2 onclick="alert('XSS')">`);
Code HTML :
<h1>Hello my name is</h1>
Les développeurs peuvent opter pour des protections XSS plus efficaces avec des modifications minimales du code en remplaçant les affectations innerHTML sujettes aux erreurs par setHTML(). Si la configuration par défaut de setHTML() est trop stricte (ou pas assez stricte) pour un cas d'utilisation donné, les développeurs peuvent fournir une configuration personnalisée qui définit les éléments et attributs HTML à conserver ou à supprimer. Pour tester l'API Sanitizer avant de l'introduire sur une page web, il est recommandé d'explorer le playground de l'API Sanitizer.
Pour une protection encore plus efficace, l'API Sanitizer peut être combinée avec Trusted Types, qui centralise le contrôle de l'analyse et de l'injection HTML. Une fois setHTML() adopté, les sites peuvent activer plus facilement Trusted Types, souvent sans avoir besoin de politiques personnalisées complexes. Une politique stricte peut autoriser setHTML() tout en bloquant d'autres méthodes d'insertion HTML non sécurisées, ce qui contribue à prévenir les régressions XSS futures.
L'API Sanitizer permet de remplacer facilement les affectations innerHTML par setHTML() dans le code existant, introduisant ainsi une nouvelle valeur par défaut plus sûre pour protéger les utilisateurs contre les attaques XSS sur le Web. Firefox 148 prend en charge l'API Sanitizer ainsi que les Trusted Types, qui créent une expérience Web plus sûre. L'adoption de ces normes permettra à tous les développeurs de prévenir les attaques XSS sans avoir besoin d'une équipe de sécurité dédiée ou de modifications importantes de la mise en œuvre.
Alors que Firefox renforce ses défenses natives, d’autres évolutions du marché des navigateurs soulèvent de nouvelles inquiétudes en matière de sécurité. Des rapports récents ont en effet révélé que les navigateurs IA créent d'énormes vulnérabilités en matière de cybersécurité. Des chercheurs ont notamment identifié des failles dans ChatGPT Atlas permettant l'injection de code via les mécanismes de mémoire IA, tandis que le navigateur Comet pourrait être manipulé par des instructions dissimulées dans des pages Web. Le mode Copilot de Microsoft Edge présente également des risques similaires, avec des scénarios d'exécution d'actions au nom de l'utilisateur.
Selon les experts, ces navigateurs génèrent des profils d’utilisation particulièrement intrusifs et augmentent rapidement la surface d’attaque. L’intégration d’agents capables d’interagir activement avec le contenu Web multiplierait les vulnérabilités zero-day potentielles. Selon certains spécialistes, la course à la mise sur le marché aurait précédé des phases de tests de sécurité suffisamment approfondies, créant ce qu’ils qualifient de « bombe à retardement » en matière de cybersécurité.
merci à Developpez.com
