Immagina di ricevere una notifica che segnala un accesso sospetto al tuo account.
Non hai condiviso la password con nessuno, non hai aperto email strane e non ricordi di aver visitato siti sospetti.
Eppure, qualcuno è riuscito a effettuare il login.
Com'è possibile?
Una spiegazione potrebbe essere il credential stuffing, una tecnica di attacco che sfrutta credenziali sottratte durante precedenti violazioni di dati.
È un problema particolarmente insidioso perché non richiede necessariamente di individuare una vulnerabilità nel sito bersaglio.
A volte è sufficiente che un utente abbia riutilizzato la stessa password su più servizi.
Vediamo come funziona, perché interessa anche le piccole applicazioni web e quali contromisure possono ridurre il rischio.
Che cos'è il credential stuffing?
Il credential stuffing è una tecnica attraverso la quale un attaccante prova automaticamente combinazioni di username e password ottenute da precedenti violazioni.
L'obiettivo è individuare account che utilizzano ancora le stesse credenziali.
Supponiamo che un servizio online subisca una violazione e che alcune combinazioni di email e password vengano diffuse.
Se una persona utilizza la stessa password anche per accedere a un e-commerce, un social network o un gestionale, quelle credenziali potrebbero funzionare anche sugli altri servizi.
L'attaccante non deve necessariamente conoscere il funzionamento interno delle applicazioni.
Gli basta verificare se le credenziali sono ancora valide.
Credential stuffing e brute force: qual è la differenza?
I due attacchi vengono spesso confusi, ma esiste una differenza importante.
Un attacco brute force cerca di indovinare una password provando numerose combinazioni.
Il credential stuffing utilizza invece coppie di credenziali già note, generalmente provenienti da precedenti compromissioni.
Esiste anche il password spraying, che consiste nel provare un numero limitato di password comuni su molti account differenti.
Le tre tecniche hanno caratteristiche diverse, ma condividono un obiettivo: ottenere accessi non autorizzati sfruttando debolezze nell'autenticazione.
Perché il credential stuffing è così diffuso?
Uno dei motivi principali è il riutilizzo delle password.
Molte persone possiedono decine di account e trovano difficile ricordare credenziali differenti per ciascun servizio.
La soluzione più immediata è spesso utilizzare sempre la stessa password, magari modificando soltanto qualche carattere.
Questo comportamento crea una relazione pericolosa tra servizi che, tecnicamente, non hanno nulla in comune.
Una violazione su una piattaforma può mettere indirettamente a rischio account ospitati altrove.
Un altro fattore è l'automazione.
Gli attaccanti possono utilizzare strumenti che effettuano numerosi tentativi di autenticazione, distribuendoli nel tempo e attraverso differenti indirizzi IP.
Questo rende meno efficace affidarsi esclusivamente al blocco di un singolo indirizzo.
Come riconoscere un attacco di credential stuffing
Dal punto di vista di chi gestisce un'applicazione web, alcuni segnali possono suggerire un tentativo di credential stuffing.
Per esempio:
- Aumento improvviso delle richieste agli endpoint di login.
- Numerosi tentativi di autenticazione falliti.
- Accessi provenienti da indirizzi IP o reti insolite.
- Tentativi distribuiti su molti account differenti.
- Login riusciti seguiti da modifiche sospette al profilo.
- Incremento delle richieste di recupero password.
Nessuno di questi segnali, preso singolarmente, dimostra automaticamente la presenza di un attacco.
Un aumento dei login falliti potrebbe dipendere anche da problemi applicativi o da utenti che hanno dimenticato le credenziali.
È quindi importante analizzare il contesto.
Perché un semplice CAPTCHA non basta
I CAPTCHA possono contribuire a ostacolare alcune forme di automazione.
Tuttavia, non rappresentano una soluzione definitiva.
Alcuni sistemi automatizzati riescono a superarli, mentre controlli troppo invasivi possono peggiorare l'esperienza degli utenti legittimi.
Una protezione efficace dovrebbe utilizzare più livelli di difesa.
Tra questi troviamo il monitoraggio delle richieste, la limitazione dei tentativi, l'autenticazione a più fattori e il rilevamento di comportamenti anomali.
L'obiettivo non è soltanto impedire richieste automatiche, ma rendere molto più difficile trasformare credenziali compromesse in accessi validi.
Rate limiting: limitare i tentativi di accesso
Il rate limiting permette di limitare il numero di richieste consentite in un determinato intervallo di tempo.
Per esempio, un'applicazione potrebbe introdurre ritardi progressivi dopo diversi tentativi di autenticazione falliti.
È importante evitare configurazioni troppo semplicistiche.
Limitare esclusivamente le richieste per indirizzo IP può penalizzare utenti che condividono la stessa rete, come quelli di un ufficio.
Al contrario, limitare soltanto i tentativi su un account potrebbe consentire a un attaccante di distribuire le richieste su migliaia di utenti.
Una strategia più efficace considera diversi segnali, tra cui account, indirizzo IP, frequenza e comportamento delle richieste.
Bisogna inoltre evitare che i meccanismi di blocco diventino strumenti per impedire intenzionalmente l'accesso agli utenti legittimi.
L'importanza dell'autenticazione MFA
L'autenticazione a più fattori è una delle difese più efficaci contro gli attacchi basati su credenziali rubate.
Se un attaccante conosce la password ma non dispone del secondo fattore, non può normalmente completare l'accesso.
Le soluzioni basate su passkey e FIDO2 offrono inoltre una protezione particolarmente robusta contro molte forme di phishing.
Per gli account amministrativi, l'MFA dovrebbe essere considerata una misura prioritaria.
Questo vale soprattutto per pannelli hosting, applicazioni SaaS, sistemi di gestione dei contenuti e servizi cloud.
Come verificare se una password è già compromessa
Un'applicazione può aiutare gli utenti a evitare password già presenti in archivi di credenziali compromesse.
Servizi come Have I Been Pwned mettono a disposizione strumenti per verificare l'esposizione di indirizzi email e password.
La funzionalità Pwned Passwords consente di effettuare controlli senza inviare necessariamente la password completa al servizio.
Per gli sviluppatori è importante integrare queste verifiche rispettando le specifiche del provider e senza registrare credenziali in chiaro.
Il controllo può essere effettuato durante la registrazione o il cambio password.
Se una password risulta già compromessa, è opportuno richiederne una differente.
Come proteggere il login di un'applicazione PHP
Chi sviluppa applicazioni PHP dovrebbe considerare la sicurezza dell'autenticazione fin dalle prime fasi del progetto.
Una buona implementazione comprende:
- Password protette attraverso Argon2id o bcrypt.
- Query parametrizzate per l'accesso al database.
- Limitazione dei tentativi di autenticazione.
- MFA per gli account sensibili.
- Sessioni configurate correttamente.
- Messaggi di errore che non facilitino l'enumerazione degli utenti.
- Monitoraggio degli accessi anomali.
È importante anche proteggere le procedure di recupero password.
Un sistema di login robusto perde efficacia se un attaccante può aggirarlo attraverso una procedura di recupero debole.
Credential stuffing e WordPress
WordPress è frequentemente esposto a tentativi automatizzati di autenticazione, anche per la sua ampia diffusione.
Gli attaccanti possono prendere di mira le interfacce di login e altri endpoint che consentono l'autenticazione.
Per ridurre il rischio è utile utilizzare password uniche, MFA, controlli sui tentativi di accesso e aggiornamenti regolari.
Anche gli account dei collaboratori devono essere protetti.
Un sito può avere un amministratore con una password molto robusta e rimanere esposto attraverso un account secondario con privilegi eccessivi.
Cosa fare dopo un accesso sospetto
Se un utente segnala un accesso non riconosciuto, è importante intervenire rapidamente.
Le attività da valutare comprendono la revoca delle sessioni attive, la modifica della password, il controllo delle informazioni dell'account e la verifica di eventuali operazioni non autorizzate.
Se la stessa password è stata utilizzata su altri servizi, è opportuno modificarla anche lì.
Per gli amministratori, è utile verificare se l'evento riguarda un singolo account oppure se esistono segnali di un attacco più esteso.
Conclusione
Il credential stuffing dimostra che la sicurezza di un account non dipende esclusivamente dal sito che lo ospita.
Una password compromessa altrove può diventare un problema anche per un'applicazione perfettamente aggiornata.
Per questo motivo, le difese più efficaci combinano password uniche, autenticazione a più fattori, rate limiting e monitoraggio degli accessi.
La regola più importante è non considerare una password valida come prova sufficiente che chi sta effettuando il login sia il legittimo proprietario dell'account.
Con MiHakero puoi affiancare alla protezione degli accessi il controllo della superficie esposta dei tuoi domini e servizi pubblici, individuando configurazioni e vulnerabilità note che meritano attenzione.
SEO Meta Title: Credential stuffing: cos'è e come proteggere gli account
SEO Meta Description: Scopri come funziona il credential stuffing, perché le password riutilizzate sono pericolose e come proteggere login e applicazioni web.