In che modo l'integrità di subresource effettivamente aiuta?

31

L'integrità delle risorse secondarie mi consente di sapere che una risorsa che sto per scaricare è valida, perché l'hash dei suoi contenuti corrisponde a quello che mi aspetto.

Ma ciò presuppone che io stia già utilizzando un codice attendibile e verificato. Se un hacker ha compromesso le risorse di server che servono, allora potrebbero semplicemente sostituire la risorsa di root con hash del proprio codice dannoso (o semplicemente bypassare completamente i controlli di integrità).

Quindi in che modo i controlli sull'integrità delle risorse secondarie possono aiutare? E come farebbe un client per verificare la risorsa radice?

    
posta David Grinberg 10.09.2018 - 22:22
fonte

2 risposte

40

L'integrità delle risorse secondarie non riguarda la protezione del proprio codice dell'applicazione web contro le modifiche. L'obiettivo dell'SRI è visibile nella descrizione degli obiettivi :

Compromise of a third-party service should not automatically mean compromise of every site which includes its scripts.

Pertanto, si tratta di proteggere l'utilizzo delle risorse situate in siti che non sono sotto il tuo controllo. SRI restituisce un certo controllo anche se è incluso il codice di un sito di terze parti. Non offre disponibilità ma offre integrità, ovvero protezione contro modifiche indesiderate da parte di terzi (o di qualche hacker che ha rilevato questa parte).

    
risposta data 10.09.2018 - 22:34
fonte
23

Supponiamo che tu abbia un sito costruito attorno a jQuery. Non scarichi jQuery e usi la tua copia, ma usi una versione da un CDN, facendo uso della memorizzazione nella cache sui browser del cliente. Questo perché se un sito utilizza la versione CDN, verrà memorizzato nella cache e ogni sito che utilizza la stessa versione ne trarrà vantaggio, non dovendo scaricare ogni volta un file identico.

Un giorno qualcuno entra a far parte dei server CDN e sostituisce i file JavaScript con versioni alterate che inviano da qualche parte ogni tasto ai server dell'attaccante. E ogni singolo sito che utilizza quello script è interessato, incluso il tuo sito.

Qui entra Integrità delle risorse secondarie - SRI . Impedisce a una terza parte di alterare risorse esterne non rilevate. Se hai abilitato SRI sulle risorse esterne, un browser client non caricherà le risorse con hash mancate corrispondenze.

then they could easily just replace the root resource with hashes of their own malicious code

Non proprio. L'SRI protegge il tuo sito (codice che controlli) dalle modifiche apportate a uno script di terze parti, che non controlli. Un attacco al tuo codice non è protetto da SRI, perché se un utente malintenzionato cambia uno script di terze parti e il tuo sito, può fare lo stesso cambiando solo il tuo sito con meno problemi. Dopotutto, attaccare il tuo sito è più facile che attaccare Akamai, CloudFlare, Google o Microsoft.

    
risposta data 10.09.2018 - 23:19
fonte