Quali sono i rischi per la sicurezza quando si utilizzano le reti di distribuzione dei contenuti (CDN) gratuite?

12

Stavo facendo qualche ricerca su Content Delivery Networks. Per coloro che non sanno, un CDN è una grande raccolta di server che memorizzano nella cache e servono rapidamente contenuti statici come immagini, css, js, ecc, agli utenti finali. I CDN possono aumentare significativamente le prestazioni non solo memorizzando il contenuto nella cache, ma limitando anche il numero di hop di rete per recuperare il contenuto.

Sto pensando di utilizzare CDN gratuiti, ma sono rimasto sorpreso di trovare accanto a zero articoli, blog o forum riguardanti potenziali rischi per la sicurezza quando li si utilizzava. Quali sono i rischi dell'utilizzo di CDN gratuiti? Come vengono mitigati quei rischi?

    
posta Gilles 03.07.2012 - 22:07
fonte

2 risposte

11

Poiché di solito si caricano CSS, JavaScript e grafica da un CDN chiunque abbia le autorizzazioni di tipo root sui server CDN (ad esempio la società che esegue il CDN) può:

  • sostituisci le tue immagini con altre, come il porno o altre cose che non vuoi che i tuoi utenti vedano sul tuo sito web
  • sostituisci il tuo CSS per caricare dette immagini, rovinare il design, ecc. - per gli utenti di IE e Mozilla / Firefox il CSS potrebbe anche causare l'esecuzione di codice JavaScript arbitrario
  • sostituisci il tuo JavaScript per infastidire il tuo utente, reindirizzare ad altri siti, eventualmente caricare codice di exploit per infettarli con trojan
  • (presenta problemi tecnici che causano il caricamento delle risorse del tuo sito molto più lentamente del solito)

Quindi, tutto sommato, usa solo un CDN di cui ti fidi abbastanza per non fare quelle cose.

    
risposta data 04.07.2012 - 00:20
fonte
8

@ La risposta di ThiefMaster fa un ottimo lavoro nell'enumerare i rischi dell'uso di un contenuto controllato esternamente - che fondamentalmente rientra nella categoria dell'esecuzione o della visualizzazione di codice e contenuto arbitrari sul browser di un utente.

Mi concentrerò principalmente sulla tua ultima domanda: How are those risk mitigated? che non è stata indirizzata-- molto è cambiato da allora (in 4 anni).

La difesa principale quando si includono risorse esterne da una rete CDN è quella di utilizzare Integrità della subunità (SRI) . L'SRI estende due elementi HTML con un attributo di integrità che contiene un hash crittografico della rappresentazione della risorsa che l'autore si aspetta di caricare. Nello specifico, questi sono gli elementi <script> e <link> , comunemente usati per includere rispettivamente Javascript e CSS di terze parti.

Esempi:

CSS:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" integrity="sha384-y3tfxAZXuh4HwSYylfB+J125MxIs6mR5FOHamPBG064zB+AFeWH94NdvaCBm8qnd" crossorigin="anonymous">

JS:

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js"integrity="sha384-vZ2WRJMwsjRMW/8U7i6PWi6AlO1L79snBrmgiDpgIWJ82z8eA5lenwvxbMV1PAh7" crossorigin="anonymous">

È possibile utilizzare uno o più hash, generati generalmente con openssl con codifica base64. Un browser utilizza il "più strong" che supporta.

Questo è ora supportato da Chrome e di Firefox .

Quando questi browser incontrano un elemento protetto dallo SRI, calcolano il digest e restituiscono un errore di rete se non corrisponde al risultato previsto. Per proteggere da un aggiornamento su un CDN, è possibile configurare failover , sia ad altri CDN o al tuo server.

Un'altra difesa che puoi notare sopra è l'uso dell'attributo crossorigin="anonymous" . Ciò impedisce al browser di inviare cookie al CDN, evitando così perdite CORS con un effetto collaterale della riduzione della dimensione della richiesta.

Infine, si potrebbe ottenere un beneficio molto piccolo impostando un Content-Security-Policy restrittivo che limita la superficie di attacco solo al CDN, in modo tale che anche se un CDN vulnerabile è stato infettato da un file JS diverso, non sarà direttamente in grado per accedere ai dati (anche se potrebbe attraverso il CDN).

Oltre ai vari link sopra, un altro utile riferimento è questo articolo di Mozilla Hacks .

    
risposta data 12.07.2016 - 06:50
fonte

Leggi altre domande sui tag