Salta al contenuto principale


CloudFlare, WordPress e l’API key in pericolo per colpa di un innocente autocomplete


Un tag mancante su di un campo input di una api key può rappresentare un rischio?

Avrai sicuramente notato che il browser suggerisce i dati dopo aver compilato un form. L’autocompletamento è proprio la funzione di ricordare le cose che inseriamo.

Per impostazione predefinita, i browser ricordano le informazioni inserite dall’utente nei campi dei siti web. Questo consente loro di eseguire questi automatismi.

Come può rappresentare un pericolo?

Esaminiamo il Plugin di CloudFlare per WordPress:

In questo esempio prendiamo in analisi un plugin di CloudFlare, che permette di collegare un sito WordPress con un’istanza cloudflare.

Questo permette di eseguire varie attività come la pulizia della cache, molte volte utile dopo un aggiornamento del sito.

github.com/cloudflare/Cloudfla…

Una volta installato, nella configurazione è richiesto di inserire una mail e un api key.

L’api key è una stringa che viene generata. Ad essa possono essere assegnati una serie di permessi.

La webapp poi con quel codice potrà interfacciarsi con CloudFlare per eseguire diverse azioni, come detto prima per esempio lo svuotamento della cache.

Vediamo cosa succedere se in passato avevamo già inserito un apikey.

Il modulo ricorda la nostra apikey, ecco semplicemente spiegato la funzione di autocompletamento.

Cosa succede in realtà quando il browser salva queste informazioni?

Ogni browser dispone di un file locale, dove salva queste informazioni di autocompletamento.

In chrome, per esempio, questi dati sono salvati in un file a questo percorso:

C:\Users[user]\AppData\Local\Google\Chrome\User Data\Default\Web Data

Aprendo infatti il file è possibile riconoscere la chiave appena inserita nel form.

Perchè questo allora potrebbe rappresentare un rischio?


Questa chiave API può essere rubata se il sistema dell’utente è compromesso ed il file sottratto.

Questo è solo un esempio, in questi campi come detto prima potrebbe contenere anche per esempio dati di carte di credito e altro ancora.

Possiamo vedere che in questi rapporti di analisi di vari infostealer, proprio l’autocompletamento è uno degli obiettivi.

Leggendo alcuni report di SonicWall e Avira vediamo che molti di questi infostealer hanno come obiettivo questi file.

sonicwall.com/blog/infostealer…

Molto spesso gli infostealer vanno alla ricerca di questi file da infiltrare dal sistema attaccato.

[strong]Altre evidenze in questo rapporto di Avira:[/strong]

avira.com/en/blog/fake-office-…

In entrambi i report si vede chiaramente che questi file sono interessanti per gli infostealer.

Infine più a fondo e addirittura addentrarci su IntelX, per una ulteriore verifica a un vero leak..

Come mitigare questo rischio?


Gli input,come le password,non vengono salvate dai browser (più precisamente viene utilizzato invece il portachiavi del browser)

Nel caso invece delle apikey si utlizzi un input semplice, è possibile inserire un tag autocomplete-off, per informare il browser che questo dato non deve essere inserito nel file autocomplete.

es.

Username:

Password:

Login

Oppure

L’impostazione autocomplete=”off”sui campi ha due effetti:

Indica al browser di non salvare i dati immessi dall’utente per il completamento automatico successivo in moduli simili (alcuni browser fanno eccezioni per casi speciali, ad esempio chiedendo agli utenti di salvare le password).

Impedisce al browser di memorizzare nella cache i dati del modulo nella cronologia della sessione. Quando i dati del modulo vengono memorizzati nella cache della cronologia della sessione, le informazioni inserite dall’utente vengono visualizzate nel caso in cui l’utente abbia inviato il modulo e abbia cliccato sul pulsante Indietro per tornare alla pagina originale del modulo.

Analizzando infatti il codice html, non è presente questo tag per la api key.

Conclusioni


La maggior parte dei browser dispone di una funzionalità per ricordare i dati immessi nei moduli HTML.

Queste funzionalità sono solitamente abilitate di default, ma possono rappresentare un problema per gli utenti, quindi i browser possono anche disattivare.

Tuttavia, alcuni dati inviati nei moduli non sono utili al di là dell’interazione corrente (ad esempio, un PIN monouso) o contengono informazioni sensibili (ad esempio, un identificativo governativo univoco o un codice di sicurezza della carta di credito) oppure un token di un api.

I dati di autocompletamento archiviati dai vari browser possono essere catturati da un utente malintenzionato.

Inoltre, un attaccante che rilevi una vulnerabilità distinta dell’applicazione, come il cross-site scripting, potrebbe essere in grado di sfruttarla per recuperare le credenziali archiviate dal browser. JavaScript non può accedere direttamente ai dati dell’autofill del browser per motivi di sicurezza e privacy tuttavia Autofill può riempire i campi HTML automaticamente, e JavaScript può leggere i valori di quei campi solo dopo che sono stati riempiti.
const email = document.querySelector('#email').value;
console.log(email); // Se il browser ha già riempito il campo, questo valore sarà accessibile
Nonostante ciò esiste la possibilità che la mancata disabilitazione del completamento automatico possa causare problemi nell’ottenimento della conformità PCI (PortSwigger).

L'articolo CloudFlare, WordPress e l’API key in pericolo per colpa di un innocente autocomplete proviene da il blog della sicurezza informatica.