Zaloguj się do usług
bezpieczeństwa
14 grudnia 2022
Sztuczna inteligencja w głowie przestępcy

O ChatGPT wie już z pewnie (prawie) cały internet. To kolejny projekt OpenAI, organizacji zajmującej się badaniami na sztuczną inteligencją i jej wdrażaniem. Poprzednio OpenAI stworzyło oprogramowanie DaALL-E 2, które generowało obrazy na podstawie opisu tekstowego – w krótkim czasie DALL-E 2 zrzeszył ponad milion użytkowników, podobnie jak ChatGPT.

Żeby dokładniej zrozumieć, jakie możliwości niesie ze sobą ChatGPT, warto bliżej przyjrzeć się, czym tak naprawdę jest ten projekt.

Czym jest ChatGPT?

ChatGPT jest czatbotem, który używa modelu językowego z serii GPT-3.5, czyli serii modeli językowych stworzonych przez OpenAI. Modele językowe zarówno z tej serii, jak i z poprzednich, typu GPT-2, to modele LLM (Large Language Models).

Trenowanie modeli LLM odbywa się poprzez użycie ogromnej ilości danych tekstowych, celem rozwiązania zadań związanych z przykładowo: generacją tekstu, pisania podsumowań, parafrazowania, szukania podobieństw, grupowania informacji, czy klasyfikacji tekstu. W przypadku ChatGPT głównym zastosowaniem, które przyświecało twórcom, była możliwość prowadzenia rozmowy podobnej do rozmowy ludzkiej w formie czatu. Zastosowano w nim uczenie nazywane RLHF (Reinforcement Learning from Human Feedback). W samym procesie uczenia brali również udział trenerzy, którzy wcielali się w rolę zarówno użytkownika jak i chatbota, dostrajając w ten sposób wstępny model.

W sieci widzimy ogrom przykładów z użyciem czatbota, zaczynając od wierszy, a kończąc na  wygenerowanych przez niego kawałkach kodu. Każda treść wprowadzona przez użytkownika do chatu, musi spełniać politykę użytkowania określoną przez OpenAI.

Komunikacja ChatGPT

W momencie przesłania wiadomości przez użytkownika, treść zapytania trafia pod endpoint /backend-api/moderations.

Według twórców, API używane do nadzorowania, czy model nie otrzymuje instrukcji niezgodnych z polityką użytkowania, to stworzone przez nich Moderation API. Dzięki temu endpointowi jesteśmy w stanie uzyskać informację o tym, jak nasz tekst został zaklasyfikowany przez model używany na tym endpoincie. W przypadku ChatGPT widzimy, że używanym modelem na jest „text-moderation-playground”, który nie jest wymieniony w dokumentacji Moderation API (mamy tam dostępne dwa modele dla użytkowników platformy OpenAI: „text-moderation-stable” oraz „text-moderation-latest”). W odpowiedzi otrzymujemy informację, czy nasz tekst został oflagowany lub powinien zostać zablokowany.

Podobnie z samym tekstem, otrzymanym od ChatGPT.

Dodatkowo, treść naszego zapytania jest kierowana na endpoint /backend-api/conversation.

Możemy zauważyć, że wskazywany jest użyty model („text-davinci-002-render”), który istotnie jest jednym z modeli językowych OpenAI z serii GPT 3.5.

W przypadku zapytania, które nie zgadza się z polityką użycia Chatbota, nasze zapytanie jest flagowane:

Oczywiście model nadal udziela odpowiedzi na to pytanie, tylko w ogólny sposób. Co jeśli jednak jesteśmy w stanie ominąć zabezpieczenia, stosowane przez ChatGPT? W sieci widzieliśmy już przykłady, np.: z kodowaniem wiadomości w base64 i proszeniem Chatbota o odkodowanie wiadomości po swojej stronie i kodowania odpowiedzi, celem ominięcia zastosowanych filtrów – my w naszym przykładzie posłużymy się po prostu językiem.

Oszust w wersji alpha

Zapytajmy naiwnie - wprost - o podanie przykładu maila phishingowego.

Widzimy, że nasze zapytanie ani odpowiedź chatbota nie jest flagowana jako niezgodna z polityką użytkowania. Spróbujmy ponownie, ale bez tłumaczenia, czym jest phishing.

Jak widzimy w odpowiedzi, model nie jest w stanie podać przykładowego e-maila o tematyce phishingowej. Mimo, iż w drugim zdaniu... właśnie to robi!

No ale jak tam nasz mail?

"Szanowny Kliencie,

Zauważyliśmy, że konto Twojego banku jest zagrożone. Aby je chronić, prosimy o potwierdzenie swoich danych osobowych klikając w poniższy link: [link do fałszywej strony internetowej].

Prosimy o pilne potwierdzenie, aby zapobiec uszkodzeniom konta.

Z poważaniem, Zespół obsługi klienta"

Nie jest to przesadnie wyrafinowany przykład, można by wręcz rzecz, że dość generyczny. Spróbujmy więc iść dalej i lekko zmodyfikować podany szablon.

Po podaniu drugiego zapytania, nasza pierwsza odpowiedź z przykładem „zniknęła”, a drugie zapytanie określone jako niezgodne z polityką użytkowania. Dostaliśmy także zwrotkę: „Too many requests, please slow down”, a przy ponowieniu zapytania:

No cóż, próbowaliśmy :) Wcielmy się jednak w rolę oszusta, który wie, jaki wynik chce uzyskać. Zacznijmy nowy wątek z ChatGPT.

Oszust w wersji beta

Nie podając wprost, że chodzi nam o e-maila phishingowego, poprośmy o napisanie e-maila do klienta Orange Polska, w którym wyjaśnimy, że jego ostatni rachunek nie został opłacony. Poprośmy o kliknięcie w przycisk, celem zalogowania się na swoje konto i opłacenie rachunku.

Treść kolejnego e-maila brzmi:

"Szanowny Kliencie,

Chcielibyśmy poinformować, że w naszym systemie wskazano, iż ostatni rachunek nie został opłacony. Prosimy o kliknięcie w przycisk poniżej, aby zalogować się na swoje konto i opłacić rachunek.

Jeśli masz jakiekolwiek pytania lub wątpliwości, nie wahaj się skontaktować z nami. Jesteśmy do Twojej dyspozycji i z przyjemnością Ci pomożemy.

Z poważaniem, Zespół Orange Polska"

Tym razem szablon wygląda bardzo przekonywująco i dokładnie odwzorowuje to, co chcieliśmy napisać. Spróbujmy teraz dodać przycisk w e-mailu, aby ukryć możliwy link do przekierowania, a także przekonwertujmy całego e-maila na HTML i CSS.

Warto zauważyć, że ChatGPT sam dodał link do logowania, który, co prawda nie istnieje, ale jest w poprawnej domenie: orange.pl. Wygląd e-maila napisanego przez ChatGPT prezentuje się następująco:

Do porządnego phishingowego maila warto dodać stopkę, by wyglądał bardziej wiarygodnie. Poprośmy o umieszczenie informacji o nadawcy wraz z adresem i siedzibą Orange Polska, REGON i NIP oraz kapitałem zakładowym.

Być może zwróciliście uwagę, że dane w stopce nie zgadzają się z danymi firmowymi podanymi na stronie Orange. Model nie ma dostępu do internetu, nie jest w stanie przeglądać stron celem wyszukania informacji, zdarza się więc, że podaje informacje nieprawdziwe. Czy to stanowi przeszkodę? Niekoniecznie. Dane wyglądają na tyle wiarygodnie, że użytkownik nie będzie chciał szukać w sieci informacji o prawdziwych danych.

Tymczasem nasza po wysłaniu drugiego zapytania została oflagowana i zniknęła. To jednak nie problem, skoro możemy przekleić otrzymaną treść e-maila i zacząć po prostu nową rozmowę z ChatGPT. Tak też zrobiliśmy, stąd niektóre kolejne odpowiedzi mogą zawierać inne formatowanie HTML i CSS niż na poprzednich zdjęciach. Treść e-maila została zachowana. Spróbujmy jeszcze dodać link do przekierowania. Najlepiej na bazie słów: Orange i konto.

Et voila! Mamy przykłady linków, których moglibyśmy użyć w takim przekierowaniu.

Na koniec, otwórzmy nową sesję (ChatGPT pamięta poprzednie wysłane wiadomości i może na podstawie tego tworzyć kolejne treści), aby model nie sugerował się poprzednimi wiadomościami. Napiszmy ponowną prośbę o przygotowania e-maila, ale tym razem... po rosyjsku. Najpierw wrzucamy treść prośby do translatora:

A tak otrzymaną treść - do naszego nowego czatu.

Wygenerowany e-mail w jednym zapytaniu, w innym języku, przedstawia się następująco w porównaniu z tym pisanym sekwencyjnie po polsku:

Sekwencyjnie po polsku:

Jedną wiadomością po rosyjsku z tłumaczeniem na polski:

Różnice widzimy gołym okiem, treść e-maila pisanego w formie rozmowy jest bardziej naturalna i wiarygodna, również dane użyte w stopce nie są tak proste jak w przypadku e-maila napisanego w jednej wiadomości w języku rosyjskim.

Nic jednak nie stoi na przeszkodzie, by w formie rozmowy z ChatGPT, wykreować e-maila w innym języku, dodając kolejne, bardziej złożone elementy lub poprawiając te, które nam nie pasują. Sam e-mail napisany w jednym zapytaniu również ma mimo wszystko bardzo dobrą stylistykę i mógłby posłużyć jako fałszywa wiadomość e-mail.

Uważaj na podejrzane maile!

Pokazaliśmy jedynie przykład generowania szablonu, w prosty sposób, z dokładnym przekazaniem naszych intencji. Nie jest to pełny przykład możliwego ataku, brakuje całego kluczowego elementu, czyli strony phishingowej, na którym oszust mógłby wyłudzić od Klienta wrażliwe dane.

Warto dodać, że im więcej pytań związanych ze złośliwym działaniem użytkownicy będą oznaczać, tym trudniej będzie ChatGPT udzielać odpowiedzi na te tematy.

Nasz artykuł to jednocześnie ostrzeżenie i przestroga, aby zawsze weryfikować treść e-maila oraz nadawcę i zachować czujność, gdy jesteśmy proszeni o zalogowanie się celem podania naszych danych – nigdy nie wiemy, czy nie mamy do czynienia ze „sztuczną inteligencją w głowie przestępcy”.

Najświeższe ostrzeżenia i wiadomości, dotyczące cyberzagrożeń, znajdziecie u nas i na naszym Twitterze. A jeśli masz jakiekolwiek wątpliwości, dotyczące maila, który do Ciebie trafił - wyślij go do nas, na cert.opl@orange.com.

Rafał Wolert


Ostatnie aktualności

Masz ciekawą informację?

Poinformuj nas!

Zgłoś incydent

Załącz plik

(jeśli zgłaszasz przypadek phishingu, zapisz mail (przesuń go z programu pocztowego na pulpit komputera lub wybierz opcję plik/zapisz jako), a następnie załącz)

Nie jestem człowiekiem
Jeśli zgłoszenie dotyczy bezpieczeństwa dzieci, zgłoś je również pod http://www.dyzurnet.pl