English  |  Italiano 

Modifiche WebKit non ufficiali per evitare la vulnerabilità CORS


Questo documento presenta una serie di modifiche non ufficiali del codice sorgente WebKit per configurare un programma di navigazione web in modo da evitare la vulnerabilità CORS. CORS è un acronimo che indica Cross-Origin Resouce Sharing. Tale modifica è stata originalmente introdotta dal W3C come "miglioria" della funzionalità web, tuttavia i suoi benefici non ripagano dei costi in termini di compromissione della sicurezza e della riservatezza.

Infatti, quando la funzionalità CORS è abilitata, un programma di navigazione web può caricare risorse da origini (serventi web) che sono diverse dall'origine della richiesta iniziale dell'utente (il servente web che appare nella barra degli indirizzi del programma di navigazione web). Pertanto, quando la funzionalità CORS è abilitata, il programma di navigazione web può caricare risorse che generalmente saranno non fidate (in quanto la fiducia non è una proprietà transitiva), permettendo quindi una forma potenzialmente molto pericolosa di dirottamento del programma di navigazione web!

Per comprendere meglio i pericoli creati dalla vulnerabilità CORS si consiglia di leggere alcuni esempi pratici.

Le seguenti modifiche del codice sorgente rappresentano una possibile contromisura alla vulnerabilità CORS:
- modifiche per WebKit versione 2.40.x;
- modifiche per WebKit versione 2.38.x;
- modifiche per WebKit versione 2.36.x;
- modifiche per WebKit versione 2.34.x;
- modifiche per WebKit versione 2.32.x;
- modifiche per WebKit versione 2.22.x (non collaudate);
- modifiche per WebKit versione 2.20.x (non collaudate);
- modifiche per WebKit versione 2.19.x;
- modifiche per WebKit versione 2.18.x;
- modifiche per WebKit (Chromium) distribuito con Android 4.4 (KitKat).

Si noti che, quando un documento web viene caricato con la funzionalità CORS disabilitata, ci potrebbe essere una limitazione della funzionalità (per esempio, alcune o tutte le immagini non vengono caricate). Questo è assolutamente normale e dimostra che la contromisura è efficace in quanto il programma di navigazione web non sta consentendo il caricamento di contenuto da fornitori non fidati.



Le modifiche al codice sorgente WebKit elencate sopra sono efficaci solo quando combinate con un programma di navigazione che sia stato anch'esso modificato in modo tale da poter configurare le nuove opzioni. Di seguito si forniscono le modifiche al codice sorgente del programma di navigazione web del sistema Android e di tre altri programmi selezionati come esempio, epiphany (Linux/Gnome), Zirco (Android) e Orweb (Android):
- modifiche per epiphany versione 3.32.x;
- modifiche per epiphany versione 3.30.x;
- modifiche per epiphany versione 3.27.x;
- modifiche per epiphany versione 3.26.x;
- modifiche per il navigatore web predefinito del sistema Android 4.4 (KitKat);
- modifiche per il navigatore web Zirco versione 0.4.4;
- modifiche per il navigatore web Orweb versione 0.7.



Tutte le modifiche elencate sopra possono essere applicate tramite il comando "patch -p1". Esse sono software libero, fornito "così com'è", nella speranza che risulti utile, ma SENZA ALCUNA GARANZIA.

La maggior parte degli utenti dovrebbero probabilmente configurare il programma di navigazione web come segue:
- selezionare l'opzione "Disable CORS";
- selezionare l'opzione "Enable CORS within the same domain";
- disabilitare l'opzione "Disable CORS Redirection".

Un ultimo consiglio: prima di ricompilare il programma di navigazione web Android, si dovrà prima installare la Android SDK modificata, che potrà essere compilata tramite i comandi "make update-api ; make PRODUCT-sdk-sdk". E se si dovesse generare un errore riguardo a strumenti mancanti durante la compilazione dell'SDK, allora re-inizializzare e sincronizzare la base dati del codice sorgente con i seguenti comandi:
"repo init <original_repository_arguments> -gall,tools ; repo sync"
Una volta che l'SDK è stato compilato, sarà disponibile in out/host/linux-x86/sdk. A quel punto, aggiornare le preferenze SDK Manager in Android Studio con il percorso del nuovo SDK e infine iniziare a ricompilare il programma Zirco o Orweb modificato, facendo attenzione a non sovrascrivere il nuovo SDK con aggiornamenti scaricati dalla rete.

Una distribuzione Android fortificata la quale contiente queste modifiche e molte altre funzionalità e migliorie per la sicurezza e la riservatezza è ora disponibile per telefoni Sony Xperia E3: distribuzione Android 4.4.4 "KitKat" fortificata.

Se si utilizza il programma di navigazione Mozilla Firefox invece che un programma di navigazione basato su WebKit, allora è possibile trovare una simile funzionalità con configurabilità completa nella seguente estensione: requestpolicy.



Copyright © 2017-2023 Guido Trentalancia. Tutti i diritti sono riservati.