OpenID Connect / OAuth 2.0 e app "false" ufficiali

2

La mia domanda riguarda principalmente OpenID Connect, ma può essere applicata anche a OAuth 2.0.

Quando si tratta di un client OpenID Connect che fa la danza "autorizza" con il provider OpenID Connect, il client invia il suo ID client al provider per indicare quale è. Questo viene utilizzato in luoghi come le schermate di "consenso", che mostrano in modo visibile quali ambiti si è disposti a consentire al client di utilizzare con la Parte di Relying come parte dei token di accesso che verranno emessi. L'ID cliente potrebbe anche essere contrassegnato come "speciale" in qualche modo, come se fosse per una "app ufficiale" potrebbe consentire a questa app di superare determinate schermate di consenso che altrimenti sarebbero visualizzate a terze parti o mostrare spunti visivi di rilievo per l'utente che questa è un'app "affidabile" ufficiale.

La mia domanda ruota attorno a come impedire che tali app vengano impersonate. Con le app lato server queste sono protette mediante l'uso di un "Client Secret" che non è disponibile per un client malintenzionato. Con i client basati su browser (utilizzando il flusso "implicito"), il "Client ID" è associato a uno specifico reindirizzamento post-autenticazione, il che significa che un client malintenzionato che utilizza fraudolentemente l'ID client del client "ufficiale" non vedrebbe mai il token, dal momento che il browser reindirizza nuovamente nel posto sbagliato (o l'URL di reindirizzamento sarebbe rifiutato.

In che modo le app native, come le app iOS o Android, impediscono questo tipo di attacco in cui l'ID client / segreto viene sottratto a un'app legittima e utilizzato da un'app canaglia per impersonarlo durante i flussi di autorizzazione di OpenID Connect ? Per quanto vedo, potrei "rubare" l'ID cliente (e / o il segreto del cliente) incorporato nell'app "ufficiale", caricare un'app canaglia su App Store / Play Store che usa detto ID / Segreto, quindi assicurati che l'URI di reindirizzamento utilizzato sia uguale all'app ufficiale. La mia app canaglia ascolterebbe quindi l'URL di reindirizzamento per i token risultanti e durante la fase di autorizzazione le schermate visualizzate all'utente segnalerebbero in modo evidente che si tratta di un'app "ufficiale" e / o di ignorare completamente tali schermate di consenso, anche se questo è un'app di terze parti.

(Ci scusiamo per il muro di testo che porta alla domanda! Volevo solo assicurarmi che tutte le mie supposizioni siano corrette! Per favore, dimmi se ho qualcosa di sbagliato!)

    
posta MattCotterellNZ 07.01.2018 - 22:24
fonte

1 risposta

1

Il furto del segreto del cliente sta diventando sempre più difficile dal momento che ora possono essere archiviati utilizzando le API hardware per la crittografia / archiviazione sicura sui dispositivi moderni. Le applicazioni mobili dovrebbero utilizzarle nella misura più ampia possibile.

Qualche tempo fa, il flusso consigliato da utilizzare per le app mobili era il flusso implicito: nessun client segreto e nessun modo per ottenere un token di aggiornamento, il che limitava la possibile finestra di attacco.

In questi giorni consiglierei il flusso ibrido (codice id_token), che consente di aggiornare i token e quindi richiede anche un segreto. Questo segreto deve essere memorizzato nel modo più sicuro possibile e inoltre è necessario implementare la protezione PKCE. PKCE protegge dagli attacchi di intercettazione del codice, non diversamente da ciò che descrivi: un'app dannosa potrebbe rubare il codice di autenticazione registrando l'URI di reindirizzamento / schema. PKCE protegge da ciò richiedendo di inviare una richiesta di codice (generata da un verificatore di codice criptorico) durante l'invio della richiesta di autorizzazione. Su ogni richiesta all'endpoint del token, viene inviato il verificatore. Ciò consente all'IDP di controllare questo contro la sfida, che garantisce che i token vengano inviati solo all'URI di reindirizzamento corretto.

Spero che questo aiuti:)

    
risposta data 29.01.2018 - 18:55
fonte

Leggi altre domande sui tag