I CAPTCHA (Completely Automated Public Turing-test-to-tell Computers and Humans Apart) sono meccanismi ideati per verificare che chi utilizza un’applicazione sia una persona in carne ed ossa e non un bot ovvero una procedura automatizzata.
Si pensi a un modulo di registrazione sul Web o a una procedura che implica la compilazione di un form e l’invio di una serie di dati: questi moduli possono essere compilati anche da spammer e da procedure che inseriscono informazioni fasulle, dati fittizi che possono “sporcare” il database e causare problemi.
Con il suo sistema reCAPTCHA Google detiene oggi il 97% del mercato: la quasi totalità dei siti Web a livello mondiale si serve di questa soluzione per discriminare tra “umani” e bot. L’invenzione dei primi CAPTCHA risale al 1997 anche se il termine CAPTCHA fu coniato nel 2003.
Le prime versioni dei CAPTCHA e dello stesso Google reCAPTCHA (la prima release del sistema risale al 2007) chiedevano di rispondere a semplici domande, digitare la stringa di caratteri visualizzata a video in una forma fuori standard (usando font di difficile lettura, caratteri parzialmente ruotati, imperfezioni visuali,…) o selezionare un’immagine tra quelle proposte.
Con il tempo il sistema è stato via via migliorato: l’evoluzione dei sistemi OCR per il riconoscimento ottico dei caratteri ha permesso a chi tentava di superare reCAPTCHA di riconoscere la stringa di caratteri mostrata a video e digitarla automaticamente nella casella di verifica. I bot sono così divenuti in grado di simulare il comportamento tenuto da un umano.
Nel 2012 reCAPTCHA ha introdotto l’utilizzo di immagini estratte da Google Street View: all’utente viene chiesto di identificare immagini di attraversamenti pedonali, semafori, bus, taxi, idranti e altri oggetti. Con questa soluzione, ancora oggi utilizzata in molti siti Web, reCAPTCHA protegge dagli attacchi basati sull’utilizzo di tecniche OCR.
Con il passaggio a reCAPTCHA v2 e v2+, Google ha iniziato a implementare l’analisi comportamentale per capire se l’utente collegato sia un umano o un bot. A fine 2014 Google ha poi introdotto NoCAPTCHA reCAPTCHA, un meccanismo che prevede esclusivamente di spuntare una casella nel box Non sono un robot.
Ciascun client connesso viene valutato prendendo in esame vari parametri (tra cui l’indirizzo IP pubblico, il browser Web in uso, le caratteristiche e le impostazioni del browser, l’eventuale presenza di cookie associati alle proprietà Google,…) e associato a un profilo di rischio. Per i sistemi client con un basso profilo di rischio, difficilmente associabili all’attività di spammer e bot, la casella Non sono un robot mostra subito una spunta verde senza presentare ulteriori richieste.
In un altro articolo abbiamo visto perché compare spesso Non sono un robot e non appare subito la spunta verde.
Nel 2017 Google ha introdotto un reCAPTCHA invisibile: la verifica avviene in background e non viene visualizzata alcuna richiesta quando l’utente collegato viene valutato a basso rischio.
Con reCAPTCHA v3, presentato nel 2018, debutta un sistema di punteggio attribuito a ciascun client: i webmaster hanno anche la possibilità di personalizzare il comportamento di reCAPTCHA e, allo stesso tempo, di evitare la visualizzazione di qualsiasi “sfida” per gli utenti certamente umani.
Con un punteggio basso il webmaster può chiedere a Google di presentare le classiche “sfide”, ad esempio quella basata sul riconoscimento delle immagini tratte da Street View, oppure bloccare la richiesta.
Come spiegato nella pagina del progetto reCAPTCHA ad oggi Google supporta tre versioni del sistema di verifica: reCAPTCHA v2, reCAPTCHA v3 e reCAPTCHA Enterprise (la prima versione è stata abbandonata a marzo 2018).
reCAPTCHA Enterprise mette a disposizione degli sviluppatori aziendali un’intera suite di soluzioni per il contrasto delle frodi sul Web: è ad esempio prevista anche la protezione contro gli attacchi DDoS (Distributed Denial of Service).
Come funziona reCAPTCHA
Il supporto per il funzionamento di reCAPTCHA viene fornito dai server centrali di Google che effettuano le verifiche sull'”identità” del client connesso. Un’apposita API di programmazione riservata agli sviluppatori Web consente di inviare una richiesta ai server di Google e ottenere il responso.
Sul sito del progetto reCAPTCHA si possono inserire i nomi a dominio sui quali si prevede di usare il sistema di verifica e stabilire quale versione utilizzare (ad esempio v2 o v3).
Come si vede nell’esempio in figura, scegliendo reCAPTCHA v2, l’utente può scegliere tra la visualizzazione del riquadro Non sono un robot e la versione del CAPTCHA invisibile in grado di effettuare tutte le verifiche “dietro le quinte”.
reCAPTCHA restituisce una chiave del sito e una chiave segreta: la prima viene esposta ed è facilmente reperibile nel sorgente HTML di ogni pagina Web che usa reCAPTCHA; la seconda va tenuta segreta.
Per aggiungere reCAPTCHA in una pagina Web basta ad esempio incollare il codice che segue specificando la corretta chiave del sito:
All’interno della sezione <head> della pagina HTML va riportato quanto segue:
In alternativa il rendering del box di reCAPTCHA può essere effettuato anche in maniera esplicita: le indicazioni sono riportate in questa pagina di supporto per reCAPTCHA v2. Aggiungendo un apposito parametro si può rendere invisibile reCAPTCHA.
Per usare reCAPTCHA v3 si può ad esempio legare la verifica del client collegato alla pressione di un pulsante presente nella pagina Web, ad esempio il tasto Invia di un form. Le istruzioni per inserire reCAPTCHA v3 nel codice HTML chiariscono questo aspetto.
Qualche tempo fa si era parlato del “lato oscuro” di reCAPTCHA v3: per evitare di esporre il box di verifica, come abbiamo visto in precedenza, Google studia il comportamento dell’utente in modo da verificare se sia un bot o un umano. Tant’è vero che gli ideatori del sistema consigliano di inserire il codice di reCAPTCHA in tutte le pagine che compongono il sito e non soltanto all’interno dei form HTML da proteggere.
Google ha sempre sostenuto che i dati raccolti da reCAPTCHA non vengono in alcun modo utilizzati per “secondi fini” né tanto meno per attività di targeting dei singoli utenti.
Nel presentare il suo CAPTCHA alternativo chiamato Turnstile (“tornello” in italiano), Cloudflare ha osservato comunque che uno dei segnali che Google utilizza per decidere se il client è da ritenersi potenzialmente pericoloso è se nel browser sia o meno memorizzato un cookie dell’azienda.
Come superare reCAPTCHA
Cloudflare sostiene che ogni giorno gli utenti di tutto il mondo spendono complessivamente l’equivalente di 500 anni delle loro vite nel superare i CAPTCHA. Cloudflare ha presentato il suo CAPTCHA chiamato Turnstile progettato per non mostrare alcun quiz all’utente e rendere molto più semplice l’utilizzo delle applicazioni Web moderne.
Tanti utenti, stanchi di selezionare taxi, autobus, idranti e semafori, si sono chiesti se sia possibile scavalcare reCAPTCHA non appena esso viene proposto.
Una delle soluzioni più apprezzate oltre che maggiormente efficaci si chiama Buster: progetto open source (il sorgente è condiviso pubblicamente su GitHub), Buster sfrutta una debolezza di reCAPTCHA ovvero il CAPTCHA audio.
Il CAPTCHA audio è uno strumento alternativo che serve per superare la verifica di reCAPTCHA che Google ha progettato per gli utenti con problemi di vista: le parole presenti nello spezzone audio che viene proposto e che è riproducibile cliccando sull’icona raffigurante un paio di cuffie devono essere inserite in un’apposita casella di controllo.
Il fatto è che come già dimostrato in uno studio accademico del 2017, reCAPTCHA può essere superato in pochi secondi passando il file audio a un motore speech-to-text.
Buster, che si presenta sotto forma di estensione per i principali browser Web, permette di impostare il riconoscimento vocale con diversi strumenti disponibili online: non appena compare il quiz grafico di reCAPTCHA basta cliccare sull’icona in figura per superare il controllo (almeno ciò avviene nella maggioranza dei casi).
È stato poi messo a punto il servizio 2Captcha che aiuta a superare reCAPTCHA con un’analisi che viene effettuata in tempo reale lato server.
Un interessante articolo mostra come superare reCAPTCHA usando codice JavaScript e 2Captcha e gli Strumenti per gli sviluppatori (tasto F12
) di Chrome. 2Captcha viene tuttavia proposto come servizio a pagamento.