Sécurité
SRI : Subresource Integrity, intégrité des sous-ressources. « L'empreinte cryptographique qu'on écrit à côté d'un fichier téléchargé pour refuser toute version qui ne serait pas exactement celle attendue », par analogie avec le notaire qui consigne le poids exact du lingot : si le lingot pèse un gramme de moins à la livraison, on ne discute pas, on le renvoie.
Dans le navigateur : Recommandation du W3C (World Wide Web Consortium) publiée en 2016. Une balise script ou link porte un attribut integrity, par exemple « sha384-… » suivi d'une empreinte encodée en Base64 ; le navigateur calcule l'empreinte du fichier reçu et refuse de l'utiliser si elle diffère. Les algorithmes admis sont SHA-256, SHA-384 et SHA-512, et un fichier servi depuis un autre domaine doit en plus être chargé avec l'attribut crossorigin.
Dans les verrous de dépendances : Le gestionnaire de paquets npm reprend le même format de chaîne dans le champ integrity de package-lock.json, généralement en SHA-512. À l'installation, un paquet dont l'archive ne correspond pas à l'empreinte enregistrée est rejeté, que la modification vienne d'un registre compromis ou d'un miroir indélicat.
Limites : SRI garantit que le fichier est celui qu'on a épinglé, pas que ce fichier est sain : épingler une version déjà piégée la protège soigneusement. Un script dont le contenu change à chaque appel ne peut pas être épinglé, et doit alors être hébergé chez soi.
Ce qui arrive si on s'en passe
Charger un script depuis un CDN tiers sans attribut integrity donne au propriétaire de ce CDN, ou à quiconque le compromet ou rachète son nom de domaine, le droit d'exécuter n'importe quel code dans les pages du site, avec accès aux formulaires, aux jetons de session et aux saisies des utilisateurs. Côté dépendances, un verrou dont les empreintes ne sont pas vérifiées laisse passer un paquet modifié sur le registre ou en transit. Dans les deux cas, l'attaque ne touche pas le serveur du site : elle arrive par la porte que le site a lui-même ouverte à un fournisseur.
Explication de la marmotte
Beaucoup de sites web chargent des morceaux de code hébergés ailleurs, sur des serveurs qu'ils ne contrôlent pas. SRI consiste à noter dans la page une « empreinte » du fichier attendu, un peu comme une signature unique calculée à partir de son contenu. Le navigateur recalcule cette empreinte quand il reçoit le fichier et le refuse si elle ne correspond pas. Ainsi, si quelqu'un modifie le fichier sur le serveur extérieur, le code piégé n'est pas exécuté.
Où ce terme est utilisé
- Sécuriser un paiement e-commerce contre la fraude (4 occurrences)
- Cross-site scripting (XSS) : mécanisme, variantes et défenses (2 occurrences)
- Sécuriser les mises à jour automatiques de dépendances et semver (2 occurrences)
