Vulnerabilità OAuth |. Come implementare l'autorizzazione sicura nell'applicazione Web

Anonim
Vulnerabilità OAuth |. Come implementare l'autorizzazione sicura nell'applicazione Web 2740_1

Questo articolo riguarderà le note vulnerabilità OAuth. I lettori impareranno anche come implementare l'autorizzazione sicura e sicura nell'applicazione Web.

Oauth è un protocollo affidabile, ma il suo grado di sicurezza dipende in gran parte dalla consapevolezza degli sviluppatori web durante l'implementazione dell'autorizzazione. Ciò rende questo argomento estremamente importante per i professionisti della sicurezza delle informazioni. Devono fornire un alto livello di protezione dei conti dei loro utenti. È tempo di conoscere praticanti efficaci che contribuiranno a ridurre il pericolo di scarsa vendita di oauth.

introduzione

Il protocollo OAuth 2.0 è attualmente ampiamente utilizzato in varie applicazioni. Usandolo, un'interfaccia utente conveniente diventa disponibile, autenticazione e autorizzazione più semplice rispetto ai metodi tradizionali per l'immissione del nome utente e della password. Con l'implementazione corretta e premurosa, il protocollo OAuth sarà più sicuro dell'autorizzazione tradizionale, poiché gli utenti non hanno bisogno di condividere i loro dati contabili con un'applicazione di terze parti per accedere a una risorsa specifica. Gli utenti preferiscono spesso accedere utilizzando i loro account Google, Facebook o LinkedIn, invece di creare un nuovo account ogni volta che è necessario registrarsi su un sito Web. Pertanto, il protocollo OAuth semplifica notevolmente le nostre vite.

In generale, i fornitori di servizi OAUTH popolari sono molto affidabili. Accedi con l'account Google o Facebook ispira un certo senso di sicurezza ed è corretto. Il protocollo è attentamente testato da esperti. Tutte le vulnerabilità disponibili sono sempre rapidamente corrette dal team sviluppatore. Tuttavia, vale la pena notare che la sensazione di completa sicurezza può essere falsa.

I fornitori di servizi OAuth hanno lasciato gli sviluppatori di applicazioni un sacco di motivi per sostenere la sicurezza dei loro programmi. Infatti, il servizio OAUTH inizialmente protetto, implementato erroneamente nel processo di installazione, può diventare un obiettivo facile per gli intrusi. Tale preoccupazione porterà al furto dei dati personali degli utenti.

Successivamente, è necessario considerare le vulnerabilità più comuni incontrate in applicazioni di terze parti che implementano il protocollo OAuth per autorizzare i propri utenti. Deve essere ricordato che il protocollo stesso è sicuro e affidabile. Solo dopo un'implementazione errata, diventa vulnerabile agli attacchi di hacker.

OAuth Tockkey Fect utilizzando l'intestazione di referente

Quando l'applicazione richiede l'autorizzazione per conto dell'utente presso il server OAUTH, una persona riceve il codice per inserire e inviare al server per il suo controllo successivo. Se durante il lavoro, l'utente verrà reindirizzato in un'altra pagina, il codice verrà visualizzato nell'intestazione "Referer" della richiesta HTTP. Pertanto, il codice cadrà sul sito Web esterno, che minacciarà i dati dell'utente registrati sul server OAUTH.

Nota: l'intestazione di referente è un'intestazione di query HTTP, trasmette l'host dell'URL da cui viene inviata la richiesta.

Per ammorbidire le conseguenze di questa vulnerabilità, lo sviluppatore deve assicurarsi che la sua applicazione Web non contiene alcuna iniezione HTML. Se le iniezioni sono state rilevate, l'utente malintenzionato può facilmente impostare il tag immagine sul suo server Web e trovare un modo per reindirizzare l'utente su di esso. Quindi, avrà l'opportunità di rubare il codice dall'intestazione "Referer" della richiesta HTTP.

OAuth Tockkey Theft utilizzando il parametro Redirect_uri

L'applicazione avvia il processo di autorizzazione inviando una richiesta al server OAuth:

https://www.example.com/signin/authorize?[...]&ererect_uri=https://demo.example.com/loginsuccessfulful.

La query contiene sempre il parametro "rediirect_uri" utilizzato dal server OAuth per inviare segnalini alla domanda dopo che l'utente ha dato il suo consenso. Se il valore di questo parametro non è controllato o non controllato, l'utente malintenzionato può cambiarlo facilmente e reindirizzare la richiesta al suo sito Web, in cui utilizza un programma speciale per l'elaborazione del token e accedere a una risorsa limitata.

https://www.example.com/signin/authorize?[...]&redirect_uri=https://localhost.evil.com.

A volte gli URL simili sono bloccati. L'attaccante può reindirizzare i dati ricevuti sull'URL aperto, in questo modo:

https://www.example.com/oauth20_authorize.srf?[...[ &redirect_uri=httpps://accounts.google.com/backtouthsubtarget?next=httpset ://evil.com.

O questo:

https://www.example.com/oauth2/authorize? [...]% Irect_uri = https% 3a% 2f% 2fapps.facebook.com% 2fattacker% 2f.

Quando si implementa OAuth, non puoi mai includere i domini intere nella lista bianca. Solo alcuni URL dovrebbero essere aggiunti a "Redirect_uri" non reindirizza una richiesta di reindirizzamento aperto.

Fortezza delle richieste di cross-line

La falsificazione di una richiesta Intersight potrebbe verificarsi quando un utente malintenzionato riesce a fare la vittima di fare clic sul suo collegamento e, quindi, per generare una richiesta che non avrebbe generato. La falsificazione delle richieste di cross-line viene solitamente ammorbidito con il token CSRF, che è associato alla sessione utente. Aiuta l'applicazione a controllare la persona di una persona che ha inviato la richiesta. Il parametro "stato" nel protocollo OAuth funge da token CSRF.

Vale la pena visualizzare come viene eseguito l'attacco CSRF su OAuth e come il parametro "stato" può essere utilizzato per mitigare gli effetti della vulnerabilità.

Hacker apre un'applicazione Web e avvia il processo di autorizzazione per accedere al fornitore di servizi utilizzando OAuth. L'applicazione richiede un fornitore di servizi di accesso che deve essere fornito. L'hacker verrà reindirizzato al sito Web del fornitore di servizi, in cui di solito è necessario inserire il nome utente e la password per autorizzare l'accesso. Invece, l'hacker prende e previene questa richiesta e salva il suo URL. Hacker in qualche modo provoca la vittima di aprire questo URL. Se la vittima è entrata nel sistema del fornitore di servizi utilizzando il suo account, le sue credenziali saranno utilizzate per emettere un codice di autorizzazione. Il codice di autorizzazione scambia l'accesso al token di accesso. Ora l'account Hacker nell'applicazione è autorizzato. Può accedere all'account della vittima.

Quindi, come posso impedire a questa situazione usando il parametro "stato"?

L'applicazione deve creare un valore in qualche modo in base all'account sorgente (ad esempio, utilizzare la chiave HASH della sessione utente). Non è così importante di cosa si tratta, la cosa principale è che il valore è unico e generato utilizzando informazioni private sull'utente originale. È assegnato al parametro "Stato".

Questo valore viene trasmesso al fornitore di servizi durante il reindirizzamento. Ora l'hacker invita la vittima di aprire l'URL, che ha mantenuto.

Il codice di autorizzazione viene emesso e inviato al client nella sessione insieme al parametro "stato".

Il client genera un valore di parametro in base a un'informazione di sessione e lo confronta con il valore "stato", che è stato inviato indietro dalla richiesta di autorizzazione al fornitore di servizi. Questo valore non corrisponde al parametro "stato" nella query, poiché è stato generato solo sulla base delle informazioni sulla sessione corrente. Di conseguenza, il valore ottenuto non è accettato dal sistema.

Altre vulnerabilità rilevate quando l'implementazione di OAuth includa la possibilità di eseguire XSS (scripting cross-site) utilizzando il parametro "redirect_uri", l'impostazione della chiave privata OAuth (il tasto può a volte essere ottenuto quando si decompira un applicazione mobile) e la violazione della regola del codice di autorizzazione (quando Il codice di autorizzazione può essere utilizzato più di una volta per rilasciare più gettoni di accesso). Queste vulnerabilità sono meno comuni di quelle sopra descritte, ma non li rende meno pericolosi. Lo sviluppatore dovrebbe conoscere tutte le pratiche necessarie per garantire un funzionamento affidabile della sua applicazione Web.

L'autore dell'articolo Tradotto: Simon Saliba.

Importante! Informazioni esclusivamente per scopi accademici. Si prega di rispettare la legislazione e non applicare queste informazioni per scopi illegali.

Materiale più interessante su Cisoclub.ru. Iscriviti a noi: Facebook | VK |. Twitter |. Instagram |. Telegram |. Zen |. Messenger |. ICQ nuovo |. Youtube |. Pulsante.

Leggi di più