Come già spiegato, quando CORS è abilitato il programma di navigazione web può caricare
contenuti da origini (serventi web) diversi dall'origine inizialmente richiesta (il
servente web che appare nella barra degli indirizzi del programma di navigazione).
Esempio 1
Supponiamo che vuoi accedere al sito web della tua banca
https://www.miabanca.esempio
(in cui tu chiaramente riponi una qualche fiducia, visto che hai aperto un conto
corrente con loro), per accedere al tuo conto corrente bancario virtuale.
Purtroppo la tua banca ha deciso di utilizzare CORS per alcune parti del suo sito web
e per questo il suo sito carica tramite CORS immagini, contenuti audio, video o scripts
da altri domini di terze parti (in cui la banca ha fiducia o semplicemente ha trovato una
qualche convenienza economica).
Il fornitore esterno di scripts o contenuti multimediali non necessariamente segue gli
stessi standard di sicurezza della tua banca (o rischia la bancarotta e quindi ha
urgente bisogno di liquidità).
Quello che potrebbe accadere è che le immagini (o i Javascripts) caricati dal fornitore
esterno contengano codice malevolo: questo è estremamente facile da inserire in una
immagine digitale, sfruttando vulnerabilità quali
"buffer overflow",
molto diffuse nelle librerie di processamento delle immagini (ad esempio, per la nota
libreria libpng
- formato Portable Network Graphics, vedasi
[1],
[2],
[3],
[4],
[5],
[6],
[7],
[8]).
Simili considerazioni valgono per i contenuti audio e video.
Il risultato finale che potrebbe verificarsi è che, dopo aver puntato il tuo programma
di navigazione al sito web della tua banca
https://www.miabanca.esempio,
viene
caricato non solo il contenuto fidato della banca ma anche il contenuto dannoso fornito
ad esempio da
https://www.sitomalevolo.esempio, causando un crash della tua sessione
di navigazione ed eventualmente anche la
compromissione di dati sensibili (ad esempio,
parole chiavi di accesso).
Esempio 2
Con il tuo programma di navigazione web visiti un sito "imbarazzante", chiamiamolo
https://www.sitoimbarazzante.esempio, che ti fa ridere e divertire e di cui da molti
anni riponi fiducia per il suo rispetto della riservatezza dei navigatori.
Sfortunatamente però il tuo sito imbarazzante preferito ha recentemente firmato un
contratto di sotto-fornitura dei video con una cosiddetta Rete di Distribuzione dei
Contenuti (acronimo anglofono CDN), il quale potrebbe non avere lo stesso rispetto
della riservatezza dei visitatori che invece aveva il sito originale.
Il risultato è che ogni volta che visiti il sito
https://www.sitoimbarazzante.esempio
il tuo indirizzo IP (Internet Protocol) viene registrato non solo sul sito da te
richiesto, ma anche sui serventi web del ben poco affidabile CDN: quindi
la
riservatezza della tua navigazione è persa!
Esempio 3
Per molte applicazioni pratiche, un parallelo può essere fatto in ambito di sicurezza
tra la tecnologia Cross-Origin Resource Sharing ed il concetto astratto di
"
esternalizzazione della sicurezza".
L'
esternalizzazione (o la
sub-appaltazione) è per definizione l'atto di
delegare qualcosa a qualcun'altro.
In economia, l'
esternalizzazione della sicurezza informatica (o la
sub-appaltazione
della sicurezza informatica) significa delegare la protezione e la confidenzialità
di informazioni e dati critici o confidenziali ad altre aziende o entità, in cambio di
denaro, attraverso contratti privati di libero mercato.
Tuttavia,
la sicurezza informatica è un elemento critico per molte organizzazioni
e persone, quindi l'atto di esternalizzarla (o sub-appaltarla) implica necessariamente
una dipendenza critica da altre organizzazioni esterne e pertanto può condurre ad una
perdita critica di sicurezza, nel caso in cui l'organizzazione esterna fallisca o
contravvenga al contratto.
Si consideri inoltre che, una volta che una organizzazione o altra entità ha
sub-appaltato il processamento di parte dei propri dati, nulla di solito previene il
verificarsi della forma più pericolosa di sub-appaltazione, ovvero la
sub-appaltazione
multi-livello (o
a cascata).
Pertanto, in un gran numero di casi ed in particolare per quanto riguarda la sicurezza
informatica o sicurezza delle informazioni critiche o confidenziali, l'atto di esternalizzare,
delegare o sub-appaltare la protezione e la confidenzialità di tali informazioni
generalmente implica un rischio estremamente alto di perdere la sicurezza del tutto
(
l'esternalizzazione della sicurezza delle informazioni tenderà sempre ad una situazione
in cui non vi è alcuna sicurezza in atto ed in particolare ad una potenziale perdita di
confidenzialità per tali informazioni).
Questo esempio può essere anche spesso correlato ad i cosiddetti "
schemi di Ponzi
decentralizzati" ed agli "
schemi piramidali", entrambi noti tipi di frode.
Esercizio 1
Descrivere come la vulnerabilità Cross-Origin Resource Sharing (CORS) può portare
alla divulgazione non autorizzata a terze parti dell'indirizzo Internet Protocol (IP)
di un calcolatore elettronico su cui viene eseguita una applicazione che visita un
sito web.
Esercizio 1
Descrivere come la vulnerabilità Cross-Origin Resource Sharing (CORS) può essere
sfruttata da un sito web malevolo per rubare i
cookies immagazzinati nel
programma di navigazione web.
Conclusione
La conclusione è che, esattamente come normalmente avviene nella vita reale,
la fiducia non è una proprietà transitiva: generalmente le persone non si
fidano dei conoscenti dei propri amici e a volte neanche della nuova ragazza del
proprio figlio, almeno finchè non li conoscono un pò meglio!
Questa è la ragione per cui in generale
non dovresti fidarti del fatto che CORS
carichi risorse che non hai esplicitamente richiesto.