Bypassing OpenID Connetti il reclamo del pubblico con una sovvenzione implicita

1

Ad esempio, diamo un'occhiata a come funziona l'autenticazione con Kubernetes :

Inparticolare,concentriamocisuciòchefailserverapi.Perautenticarelarichiesta,è:

  • Verifica che la firma JWT sia valida
  • Verifica che il JWT non sia scaduto
  • Verifica che questo utente sia autorizzato a utilizzare questa API
  • Ci deve essere più di questo! Il problema dei provider OIDC è che distribuiranno token con firme valide a chiunque. Ad esempio, supponiamo di voler utilizzare Google come provider di identità. Se l'unico requisito era che la firma JWT fosse valida, un utente malintenzionato potrebbe configurare un sito che mi piacerebbe, ad esempio con immagini di gatti divertenti. Ad un certo punto visito il sito e accesso, e il bingo, l'attaccante ha un JWT di identità con una firma valida e il mio nome su di esso. Sarebbe piuttosto brutto se il proprietario di funnycatpictures.com potesse ora accedere al server API di Kubernetes sotto il mio nome.

    Quindi, in particolare quali sono i vincoli che impediscono questo attacco?

    La mia comprensione è che la rivendicazione aud (pubblico) nel JWT è parte di essa: Kubernetes deve accettare il token solo se aud contiene il suo ID client OAuth. Questo dovrebbe significare che i token rilasciati ad altri client OAuth (come il divertente sito di foto di gatti) non saranno accettati perché avranno il aud sbagliato.

    Tuttavia, sembra esserci un modo per aggirare questo con il flusso di concessione implicito, che non richiede un segreto client OAuth. In quanto tale, funnycatpictures.com potrebbe utilizzare il flusso implicito ma con l'id del client Kubernetes, ottenendo così token con il aud corretto che sarebbe accettato dal server API di Kubernetes.

    Che cosa impedisce un simile attacco?

        
    posta Phil Frost 22.08.2018 - 21:45
    fonte

    1 risposta

    0

    Scope. Le immagini Cat non avrebbero la possibilità di richiedere l'ambito per la tua API e quindi non essere in grado di accedervi con alcun token di accesso risultante. Inoltre, nel flusso implicito l'url di richiamata è registrato sul client e deve corrispondere esattamente.

        
    risposta data 17.09.2018 - 23:29
    fonte

    Leggi altre domande sui tag