¿Cómo ayuda realmente la integridad del sub-recurso?

31

La integridad del sub-recurso básicamente me permite saber que un recurso que estoy a punto de descargar es válido, porque el hash de su contenido coincide con lo que espero.

Pero esto supone que ya estoy ejecutando en algún código confiable y verificado. Si un pirata informático ha comprometido el servidor que sirve los recursos, entonces simplemente podría reemplazar el recurso raíz con hashes de su propio código malicioso (o simplemente pasar por alto las comprobaciones de integridad).

Entonces, ¿cómo ayudan las verificaciones de integridad de sub-recursos? ¿Y cómo haría un cliente para verificar el recurso raíz?

    
pregunta David Grinberg 10.09.2018 - 22:22
fuente

2 respuestas

40

La integridad del sub-recurso no se trata de proteger su propio código de la aplicación web contra modificaciones. El objetivo del SRI es verlo en la descripción de los objetivos :

  

El compromiso de un servicio de terceros no debe significar automáticamente el compromiso de cada sitio que incluye sus scripts.

Por lo tanto, se trata de proteger su uso de los recursos ubicados en sitios que no están bajo su control. SRI devuelve algo de control incluso si se incluye el código de un sitio de terceros. No ofrece disponibilidad, pero ofrece integridad, es decir, protección contra modificaciones no deseadas por parte de un tercero (o algún pirata informático que se hizo cargo de esta parte).

    
respondido por el Steffen Ullrich 10.09.2018 - 22:34
fuente
23

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.

    
respondido por el ThoriumBR 10.09.2018 - 23:19
fuente

Lea otras preguntas en las etiquetas