Digamos que tienes un sitio creado alrededor de jQuery. No descarga jQuery y usa su copia, pero usa una versión de un CDN, haciendo uso del almacenamiento en caché en los navegadores del cliente. Eso funciona porque si un sitio usa la versión CDN, se almacenará en caché y todos los sitios que usen la misma versión se beneficiarán, ya que no tendrán que descargar un archivo idéntico cada vez.
Un día, alguien piratea los servidores CDN y reemplaza los archivos JavaScript con versiones modificadas que envían cada pulsación de tecla a los servidores del atacante en algún lugar. Y todos los sitios que usan ese script se ven afectados, incluido su sitio.
Aquí ingresa Subresource Integrity - SRI . Evita que un tercero altere los recursos externos no detectados. Si tiene SRI habilitado en sus recursos externos, un navegador cliente no cargará recursos con desajustes de hash.
entonces podrían reemplazar fácilmente el recurso raíz con hashes de su propio código malicioso
En realidad no. SRI protege su sitio (código que usted controla) de cambios en una secuencia de comandos de terceros, que usted no controla. Un ataque a su código no está protegido por SRI, porque si un atacante cambia un script de terceros y su sitio, puede hacer lo mismo cambiando solo su sitio con menos problemas. Después de todo, atacar su sitio es más fácil que atacar a Akamai, CloudFlare, Google o Microsoft.