English  |  Italiano 

Casi esempio della vulnerabilità CORS


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.



Copyright © 2017-2024 Guido Trentalancia. All rights reserved.