Admin bloccato fuori dal sito dopo aver eliminato le chiavi a due fattori dalle preferenze

Passaggi per riprodurre l’errore

  1. Essere un amministratore su un sito Discourse aggiornato con una o più chiavi di autenticazione a due fattori abilitate, come chiavi di sicurezza o app di autenticazione.
  2. Essere in grado di accedere ed uscire correttamente utilizzando tali chiavi di autenticazione a due fattori.
  3. Assicurarsi che l’impostazione del sito per l’obbligo di accesso con autenticazione a due fattori sia impostata su “no”.
  4. Eliminare tutti gli elementi di autenticazione a due fattori dal proprio account (amministratore) utilizzando gli strumenti standard dell’interfaccia utente presenti nella scheda Sicurezza delle preferenze del profilo utente dell’amministratore.
  5. Effettuare il logout.

Comportamento atteso

  1. Effettuare l’accesso al sito con nome utente o password; accesso concesso; oppure
  2. Effettuare l’accesso al sito con “inviami un link via email”; accesso concesso.

Comportamento effettivo

Entrambi gli scenari “attesi” falliscono con un messaggio di errore e l’accesso non è consentito:

Il metodo di autenticazione a due fattori selezionato non è abilitato per il tuo account.

Non esiste alcun altro modo per accedere con l’account dell’amministratore.


Va notato che non sono effettivamente bloccato fuori dal sito in questione; avevo un’altra sessione ancora attiva su un altro computer e sono riuscito ad accedere a quella sessione per riaggiungere un’autenticazione basata su token e rientrare. Tuttavia, se non avessi avuto un’altra sessione attiva, sarei stato completamente bloccato fuori.

10 Mi Piace

Grazie per aver segnalato questo problema. L’ho messo tra i preferiti negli ultimi giorni, ma non ho ancora avuto modo di testarlo. Presumo che quanto segnalato sia corretto, ma ci darò un’occhiata approfondita la prossima settimana.

4 Mi Piace

Immagino che questo sia il bug? Non dovremmo permetterlo se l’impostazione del sito richiede che tutti gli amministratori abbiano l’autenticazione a due fattori abilitata.

Penso che tu non sia completamente bloccato fuori; puoi utilizzare la console per recuperare ora, ma non dovremmo rendere facile creare una situazione patologica.

Non sono del tutto sicuro che questa sia la logica corretta? Non avevo impostato applica il secondo fattore su nulla, tranne il valore predefinito di “no”, e non è davvero sicuro assumere che ogni installazione abbia più di un account amministratore. Sembra che una volta rimossi i chiavi 2FA dal profilo, qualche altro flag non venga rimosso da qualche parte…

Penso che tu non sia completamente bloccato fuori, puoi usare la console per recuperare ora

Suppongo che questo sia un valido workaround di emergenza, anche se potrebbe essere oltre le competenze di un amministratore che non gestisce anche il proprio server, e potrebbero dover rintracciare un amministratore di sistema.

4 Mi Piace

Mi chiedo se i codici di recupero siano rimasti invariati. Puoi provare a inserirne uno?

1 Mi Piace

@Osama mentre sei nel codice, forse:

  • SE all’utente non sarà consentito di accedere di nuovo dopo aver eliminato questo 2fa (ultimo 2fa che hanno e 2fa è richiesto per l’account secondo le impostazioni del livello di fiducia / impostazioni dell’amministratore)

  • ALLORA non consentirgli di eliminare l’ultimo 2fa e visualizzare un errore.

1 Mi Piace

Penso di essere stato colpito dallo stesso bug (Discourse versione 2.7.10, aggiornato oggi).

Mi sono stati concessi i diritti di amministratore e ho abilitato l’autenticazione a due fattori (2FA). Successivamente, ho creato un secondo utente per me stesso da un’e-mail diversa da utilizzare esclusivamente per l’amministrazione e ho concesso a quest’ultimo i diritti di amministratore.
Quindi ho rimosso i diritti di amministratore dal mio utente originale ed eliminato tutti i metodi 2FA. Ora il mio utente originale riceve il comportamento di errore menzionato dall’OP.
Non ho accesso alla console di questo server. Il sito non impone la 2FA per gli amministratori.

Qualcuno potrebbe spiegare esattamente cosa deve essere fatto dalla console per risolvere questo problema.

A proposito, i motivi per cui l’ho fatto sono che voglio essere soggetto alle normali autorizzazioni e notifiche (o meno) per i gruppi privati sul sito tramite il mio utente normale, magari con la modalità mailing list attiva. Non ho bisogno dell’attrito aggiuntivo della 2FA come utente normale.

Naturalmente l’utente amministratore può vedere tutto, quindi si basa sulla fiducia che non spii inutilmente. Quell’utente può disattivare tutte le notifiche e non abilitare la modalità mailing list.

1 Mi Piace

Penso che tu non abbia l’opportunità di usare i codici di recupero, perché possono essere usati solo tramite il flusso di accesso 2fa?

@sam Dici in modo allettante che questo problema può essere risolto tramite la console, senza dire cosa fare nello specifico. Apprezzerei molto un suggerimento su come risolvere questo particolare problema.

Può essere d’aiuto?

2 Mi Piace

Sospetto di no, poiché l’account ha già la 2FA disabilitata, o per essere più precisi, ha rimosso tutti i metodi 2FA dal proprio account (la 2FA risulta “no” nel profilo), eppure l’accesso sta ancora tentando di utilizzare la 2FA.
Quella guida è per un utente che ha la 2FA abilitata ma ha perso/dimenticato i propri mezzi per generare un token valido.

SOLUZIONE: Come utente amministratore, visita la pagina dei dettagli dell’utente bloccato, scorri fino in fondo e fai clic sul pulsante rosso Impersonifica.
Quindi, nelle preferenze dell’utente, aggiungi un metodo 2FA. (è necessario disporre della password dell’utente per farlo)
Il segreto 2FA deve essere fornito all’utente bloccato.
In questo caso, sono entrambi gli utenti, quindi non è un compito difficile :wink:

1 Mi Piace

Ottimo. :+1::slightly_smiling_face:

Questo ti ha permesso poi di rimuovere con successo l’autenticazione a due fattori dall’utente in seguito?

No. La rimozione del metodo 2FA ha nuovamente bloccato l’utente.

La rimozione dell’autenticazione a due fattori (2FA) premendo il pulsante “Disabilita tutto” si comporta diversamente dalla rimozione dell’ultimo metodo 2FA? Ovvero, premendo quel pulsante la si rimuove senza bloccarti?

Sono stato in grado di riprodurre questo problema e trovare una soluzione usando la console.

La riproduzione è leggermente diversa da come viene descritta nel primo post. Il passaggio 2 è cruciale, i passaggi 3 e 4 sono meno importanti.

  1. Essere un utente admin su un sito Discourse aggiornato con una o più chiavi a due fattori abilitate, come chiavi di sicurezza e app di autenticazione.
  2. Abilitare i codici di backup
  3. Essere in grado di accedere e disconnettersi con successo con tali chiavi a due fattori.
  4. Assicurarsi che l’impostazione del sito per l’applicazione degli accessi a due fattori sia impostata su “no”.
  5. Eliminare tutti gli elementi a due fattori (autenticatori e chiavi di sicurezza) dal tuo account admin utilizzando gli strumenti standard dell’interfaccia utente nella scheda Sicurezza delle preferenze del profilo utente admin.
  6. Disconnettersi.

Ciò che accade è che se tutti gli elementi a due fattori sono stati rimossi, i codici di backup sono ancora presenti nel database e l’autenticazione a due fattori non viene considerata disabilitata al momento dell’accesso.

Poiché non ci sono più autenticatori o chiavi di sicurezza, l’utente non è in grado di utilizzare i codici di backup.

Una volta rimossi tutti gli autenticatori e le chiavi, i codici di backup non possono nemmeno essere rimossi in Profilo - Sicurezza.

Correzione proposta: Quando l’ultimo elemento di sicurezza viene rimosso dall’utente, anche i codici di backup dovrebbero essere rimossi.

Soluzione alternativa: rimuovere tutti i record UserSecondFactor per questo utente dal database.

UserSecondFactor.where(user_id: 1).delete_all

12 Mi Piace

È possibile che venga implementata una correzione per questo in una versione più recente di Discourse? Mi è appena successa esattamente la stessa cosa oggi ed è stato un problema recuperare il mio account.

1 Mi Piace

Ho lo stesso problema con un utente che si lamenta di non poter accedere. A questo utente era stata abilitata l’autenticazione a due fattori (2FA) sul suo account in un certo momento, ma in seguito l’ha rimossa. Il messaggio di errore che riceve quando tenta di accedere è:

Il metodo di autenticazione a due fattori selezionato non è abilitato per il tuo account.

  • Dal menu di amministrazione, vedo che il profilo dell’utente elenca “Autenticazione a due fattori” come “No”.

  • Non ho la password dell’utente per impiegare questa soluzione alternativa Admin locked out of site after deleting two-factor keys from prefs - #13 by ewblen e anche se l’avessi, io stesso non ho metodi 2FA da aggiungere lì.

  • Poiché è scorretto chiedere all’utente la sua password, ho provato a cambiare la sua e-mail o ad aggiungere un’e-mail secondaria che controllo. Tuttavia, dopo aver cliccato su “Conferma” sull’URL dell’e-mail di conferma, ricevo questo errore:

Il metodo di autenticazione a due fattori selezionato non è valido.

… e l’e-mail non viene modificata/aggiunta.

  • Non ho accesso alla console o al database per questa installazione di Discord perché è “gestita”.

C’è qualcos’altro che posso provare? O l’utente è bloccato fuori dal suo account per sempre?

Questo è terribile.

Non ho accesso alla console di discourse, perché questa è un’istanza discourse “ospitata”.

Gli amministratori devono essere in grado di rimuovere la 2FA dalla interfaccia di amministrazione, è estremamente poco professionale dover chiedere ai nostri utenti le loro password.

Questo è chiaramente un bug importante che deve essere risolto. Come possiamo segnalarlo formalmente e monitorare i progressi della sua correzione?

Come progetto OpenSource con un’istanza discourse ospitata, non posso accedere alla console o al database, ho solo l’interfaccia di amministrazione.

In realtà non sono d’accordo. Quando la 2FA è disabilitata, i codici di backup della 2FA dovrebbero essere completamente ignorati e non avere alcuna importanza.

Correggendo questo nel posto sbagliato (quando l’ultimo metodo 2FA viene rimosso, rimuovere i codici di backup), abbiamo ancora persone che non possono accedere e si sono semplicemente arrese senza segnalarlo.

Correggendo il bug effettivo (considerando i codici di backup quando la 2FA è disabilitata), risolviamo questo problema per il 100% degli utenti interessati, immediatamente, invece di assicurarci solo che questo non continui ad accadere a nuovi utenti.

Ha funzionato per me, l’utente mi ha dato la password.

Non devi disabilitare direttamente il 2FA, devi prima:

  • rimuovere tutti i codici di backup 2FA
  • controllare tre volte che tutti i codici di backup 2FA siano stati rimossi
  • solo allora disabilitare il 2FA

Usando questo metodo sei effettivamente in grado di disabilitare il 2FA. Questo è vero sia per gli utenti amministratori che impersonano gli utenti per risolvere questo problema, sia per ogni utente normale che vuole semplicemente disabilitare il 2FA.