Rilevare e prevenire le violazioni degli account

Google Cloud Fraud Defense ti consente di rilevare e prevenire i takeover dell'account (ATO) nei tuoi siti web e nelle tue applicazioni mobile. Per proteggere gli account dal credential stuffing e dai takeover automatici, puoi combinare l'analisi comportamentale a livello di account in Account defense con i controlli delle credenziali compromesse in Password defense e l'autenticazione a più fattori (MFA) aggiuntiva.

Gli attacchi ATO, come il credential stuffing, si verificano in genere quando un malintenzionato invia richieste di accesso utilizzando credenziali esposte in violazioni dei dati e dump di password. Poiché gli utenti riutilizzano spesso le password riutilizzate su siti non correlati, gli attacchi di stuffing automatici possono avere successo anche contro endpoint di autenticazione configurati correttamente, a meno che non si valutino il rischio comportamentale e le credenziali trapelate.

Prima di iniziare

Prepara il tuo ambiente per Google Cloud Fraud Defense.

Rileva e previeni gli ATO

Con Fraud Defense, puoi rilevare e prevenire gli ATO utilizzando le seguenti funzionalità:

Utilizza Account defense e il punteggio di rischio ATO

Account defense è la funzionalità principale per rilevare e prevenire gli ATO su siti web e app mobile.

Account defense fornisce uno score del rischio ATO dedicato (accountDefenderAssessment.accountTakeoverVerdict.risk, compreso tra 0.0 e 1.0) e indicatori di spiegabilità (riskReasons e trustReasons). Questi indicatori valutano la cronologia comportamentale a livello di account insieme agli indicatori di sessione, fornendo una precisione di rilevamento degli ATO circa quattro volte superiore rispetto ai soli punteggi dei bot.

Per integrare Account defense, passa un identificatore dell'account stabile nel campo user_info.account_id (event.userInfo.accountId quando chiami CreateAssessment. Se l'identificatore dell'account è disponibile solo dopo l'autenticazione, passa account_id quando chiami AnnotateAssessment.

Rileva password divulgate

Poiché gli ATO spesso si basano sul credential stuffing con credenziali esposte in dump di password, utilizza Password defense nei flussi di accesso, modifica della password e reimpostazione password per rilevare le credenziali compromesse.

Quando controlli le credenziali durante una valutazione, Password defense valuta il prefisso hash del nome utente e della password in formato canonico rispetto alle violazioni dei dati note senza esporre le credenziali in testo non crittografato a Google. Quando chiami CreateAssessment, passa il prefisso hash (lookupHashPrefix) del nome utente (credentials.username) e l'hash delle credenziali criptate (encryptedUserCredentialsHash) in privatePasswordLeakVerification. Se l'esito (leakedPasswordVerdict) indica credenziali compromesse, richiedi una reimpostazione password o attiva una verifica MFA aggiuntiva.

Utilizza chiavi basate sul punteggio e l'MFA con step-up

Quando lo scoring del rischio ATO (accountDefenderAssessment.accountTakeoverVerdict.risk) o il punteggio bot (riskAnalysis.score) indica un rischio elevato, utilizza le chiavi basate sul punteggio per attivare l'autenticazione step-up o l'autenticazione a più fattori (MFA) nella tua applicazione come meccanismo di applicazione. Ad esempio, chiedi all'utente un fattore aggiuntivo, richiedi la riautenticazione o attiva la verifica della password monouso (OTP).

Per implementare le chiavi basate sul punteggio e l'MFA con step-up, completa i seguenti passaggi:

  • Installa chiavi basate sul punteggio per raccogliere indicatori di sessione e rilevare l'automazione negli ATO su larga scala:

  • Quando accountTakeoverVerdict.risk supera la soglia di rischio o riskAnalysis.score scende al di sotto della soglia dei bot, attiva l'autenticazione step-up o una verifica MFA nel tuo provider di identità per verificare la proprietà dell'account al momento dell'accesso o per azioni sensibili. L'attivazione selettiva di sfide di livello superiore per le richieste con rischio elevato riduce i problemi per gli utenti legittimi.

L'esempio seguente mostra come integrare le chiavi basate su punteggio in un flusso di lavoro di accesso:

function submitForm() {
  grecaptcha.enterprise.ready(function() {
    grecaptcha.enterprise.execute(
      'reCAPTCHA_site_key', {action: 'account_login'}).then(function(token) {
       document.getElementById("token").value = token;
       document.getElementByID("loginForm").submit();
    });
  });
}
<form id="loginForm" action="?" method="POST">
  Username: <input type="text" name="username"/><br/>
  Password: <input type="password" name="password"/><br/>
  <input type="hidden" id="token" name="recaptcha_token"/>
  <button onclick="submitForm()">Login</button>
</form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>

Puoi sperimentare con questo codice in JSFiddle facendo clic sull'icona <> nell'angolo in alto a destra della finestra del codice.

<html>
  <head>
    <title>Account Login - Score</title>
    <script src="https://www.google.com/recaptcha/enterprise.js"></script>
    <script>
    function submitForm() {
      grecaptcha.enterprise.ready(function() {
        grecaptcha.enterprise.execute(
          'reCAPTCHA_site_key', {action: 'account_login'}).then(function(token) {
           document.getElementById("token").value = token;
           document.getElementByID("loginForm").submit();
        });
      });
    }
    </script>
  </head>
  <body>
    <form id="loginForm" action="?" method="POST">
      Username: <input type="text" name="username"/><br/>
      Password: <input type="password" name="password"/><br/>
      <input type="hidden" id="token" name="recaptcha_token"/>
      <button onclick="submitForm()">Login</button>
    </form>
  </body>
</html>

Passaggi successivi