Zobacz artykuł

Czy CAPTCHA jest skuteczna?

Zespół TrafficWatchdog

07.01.2019 r.

captcha, recaptcha, bot, google

źródło: opracowanie własne

Niejednokrotnie przed potwierdzeniem wysłania danych na stronie www spotkać można prośbę o przepisanie tekstu, gdzie litery są mocno nieczytelne, i przepisanie ich w pole tekstowe. Najdrobniejsza pomyłka generuje błąd i wymusza ponowne przepisanie nowej grupy liter. W Internecie bardzo dużo formularzy jest zabezpieczonych przez ten mechanizm, który nazywany jest CAPTCHA.

Słowo CAPTCHA jest skrótem utworzonym od angielskich słów Completely Automated Public Turing test to tell Computers and Humans Apart, czyli generalnie jest to zadanie do rozwiązania, które ma celu udowodnić, że osoba wypełniająca formularz jest człowiekiem, a nie na przykład botem lub programem wstrzykującym dane na serwer. Jedno z najpopularniejszych tego typu zadań polega właśnie na przepisaniu kilku znaków alfanumerycznych znajdujących się na obrazku. Dla człowieka zadanie to wydaje się w miarę proste. Ale amatorskie programowanie nie jest w stanie odczytać tekstu z obrazka. Wymagane jest do tego specjalistyczne oprogramowanie korzystające z zaawansowanych algorytmów rozpoznawania obrazów, a nawet i to nie daje gwarancji rozwiązania zadania CAPTCHA.

CAPTCHA ma na celu utrudnienie masowego wypełnienia formularza. Zakłada się, że to człowiek siedzi przed komputerem, korzysta z normalnej przeglądarki i wypełnia formularz zabezpieczony przez CAPTCHA na tyle rzadko, że w zasadzie nie jest to dla niego uciążliwe. Dla masowej wysyłki danych na pewno mechanizm ten stanowi poważny problem. Z tego względu stosowanie CAPTCHA jest mocno zalecane.

CAPTCHA posiada jednak też wady. Jeżeli stosujemy jakieś popularną bibliotekę generującą zadanie do rozwiązania, najprawdopodobniej można znaleźć sposób na jej złamanie lub obejście. I tutaj nie chodzi nawet o bezpośrednie włamanie się na serwer lub stronę www (choć za czasów pierwszych stron www kod CAPTCHA był niejednokrotnie przechowywany bezpośrednio na stronie w polu typu hidden, wystarczyło go podejrzeć i przepisać!), ale o możliwość rozwiązania i wstrzyknięcia tego rozwiązania na stronę. Jak wspomniano, do rozwiązania niektórych zadań udało się zastosować algorytmy rozpoznawania obrazów i dzięki temu rozpoznanie liter nie stanowi problemu. CAPTCHA jest jednak coraz bardziej udoskonalana i obecnie coraz częściej wymagane jest na przykład rozpoznawanie pewnych drobnych elementów na małych obrazkach, które dla sztucznej inteligencji mogą już stanowić poważny problem.

Aktualnie najbardziej popularne jest zabezpieczenie reCAPTCHA oferowane przez Google. Korzysta się tutaj z zewnętrznego API, a sposób implementacji na stronie jest bardzo prosty. Google oferuje obecnie dwie wersje reCAPTCHA. Wersja v2 posiada trzy osobne możliwości implementacji: dla zabezpieczeń stron internetowych w klasyczny sposób (znany przycisk z napisem „Nie jestem robotem”), wersja Invisible captcha, która bada zachowanie użytkownika oraz wersja dla Androida. Wersja v3 jest nowością, pojawiła się pod koniec 2018 roku. Głównym celem jest wykrywane botów i dostarczenie informacji na ich temat.

ReCAPTCHA v2 dla człowieka wydaje się prosta do rozwiązania. Wystarczy kliknąć wskaźnikiem myszy w odpowiednie miejsce. Jednak dla botów stanowi to spory problem. Nawet gdyby udało się wywołać odpowiednie zdarzenia uruchamiające słynnego chceckboxa „Nie jestem robotem”, to pozostaje problem rozwiązania testu polegającego na rozpoznawaniu obrazu lub dźwięku. Ten test pojawia się gdy następuje uporczywe, wielokrotne wchodzenie na zabezpieczoną stronę.

Zadania wymagające rozpoznawania obrazu lub dźwięku można skutecznie obejść. Obejście polega na rozwiązaniu zadania przez człowieka zdalnie, który nawet nie wie na jakiej stronie znajduje się to zabezpieczenie. Zajmują się tym firmy zewnętrzne, które zatrudniają tanich pracowników z Rosji i Azji do rozwiązywania takich testów. Co ciekawe, nie stanowi to duży problemu, aby umożliwić to rozwiązanie takiego testu zdalnie. Już za mniej niż $2 możemy kupić rozwiązanie 1000 zabezpieczeń CAPTCHA, a korzystanie z takich usług jest bardzo proste i polega na implementacji prostego API.

ReCAPTCHA v3 ma nieco inne działanie. Jej zadaniem jest eliminacja potrzeby interakcji ze strony użytkownika. Bazuje na nowej technologii Google, której dokładne szczegóły nie są znane. Jest ona w stanie wykrywać zachowanie użytkowników na stronach i analizować normalny ruch. Dzięki temu będzie można znaleźć anomalie, które mają być powodowane przez boty.

W naszym laboratorium poddajemy testom nową wersję reCAPTCHA. Na chwilę obecną nie jest ona szczególnie odporna na boty jakimi dysponujemy. O naszych dalszych badaniach nad reCAPTCHA v3 będziemy informować w kolejnych artykułach.

MG