Typefully

Odpowiedzialne dzielenie się danymi z AI

Avatar

Share

 • 

A year ago

 • 

View on X

Zbudowałem narzędzie usprawniające konfigurację serwerów VPS, które bazuje na LLM i... pracuje na wrażliwych danych użytkowników 😱 Opowiem Ci, czym są placeholdery? 🧵 ↓
W ramach projektu Mikrus zaoferowałem swoim użytkownikom dostęp do prostego generatora skryptów shellowych napędzanego przez AI. Użytkownik wpisuje np: "chcę  zainstalować apache + mysql + php i mieć domenę XYZ w katalogu /var/www/xyz" W odpowiedzi dostaje gotowy instalator.
Rozwiązanie napędzane jest przez Claude 3.5 Sonnet i w ciągu 4 miesięcy wygenerowało 1500+ skryptów, ułatwiając życie użytkownikom serwerów VPS z mojej oferty. Taka aplikacja jest teoretycznie łatwa w budowie. Prosty prompt, a Claude sam ogarnie resztę. Ale jest jeszcze coś!
Czysty LLM stworzy co prawda skrypt w Bashu, który będzie wyglądał na poprawny i może nawet będzie działał, ale niekoniecznie w środowisku Mikrusa (jest ono lekko nietypowe). Z tego powodu posłużyłem się prostym RAG-iem (Retrieval-Augmented Generation).
W zależności od słów kluczowych użytych w zapytaniu użytkownika, do wnętrza prompta dorzucane są fragmenty dokumentacji usługi, jak i hinty na temat tego, jak należy konfigurować poszczególne aplikacje. Przykładowo, LLM dostaje info, że SSH słucha np. na porcie 10123, a nie 22.
Jest jednak coś jeszcze! LLM w odpowiednie miejsca w konfiguracji usług wrzuca adres mailowy użytkownika, czy fragmenty konfiguracji jego systemu, w tym hasła do dopiero co zainstalowanej bazy danych. Nooo... nie brzmi to dobrze 😱 Jak to działa?
LLM otrzymuje fałszywe dane usera do operowania na nich, a następnie wrzuca je do konfiguracji (np. do wp-config.php w Wordpress). Dane wyglądają np. tak: mysql_user = admindb mysql_pass = password123 user_mail = whatever@whatever.xyz itd.
LLM tworzy skrypt, który zawiera fałszywe dane. Są to tzw. placeholdery. Zdefiniowane są tylko po to, aby model językowy miał na czym pracować, ale aby nie poznał prawdziwych danych użytkownika. Mój mechanizm odbiera wygenerowany kod i podmienia dane na właściwe.
W ten sposób poufne dane nigdy nie opuszczają serwera, na którym użytkownik uruchamia generator kodu. LLM pracuje jedynie na danych w pełni jawnych, a jednocześnie poprawnie konfiguruje wszystkie usługi.
Możesz wykorzystać tę metodę z placeholderami, gdy pracujesz na danych, które zdecydowanie NIE powinny znaleźć się w usłudze chmurowej, co do której nie masz zaufania. Przykładem może być np. opracowywanie wyników ankiety zawierającej dane osobowe i odpowiedzi A,B,C,D.
Przed wrzuceniem danych do LLM-a zamieniasz (w kodzie aplikacji) wszystkie imiona i nazwiska uczestników ankiety na placeholdery z kolejnymi numerami: IMIE-01 NAZWISKO-01 IMIE-02 NAZWISKO-02 ... IMIE-NN NAZWISKO-NN
Następnie tak zanonimizowaną ankietę z odpowiedziami do testu wysyłasz do ulubionego LLM-a z promptem "komu najlepiej poszedł test? oto klucz odpowiedzi: XYZ". W odpowiedzi otrzymujesz: IMIE-74 NAZWISKO-74. Twój lokalny kod już świetnie wie, że to Stefan Bomba.
Avatar

Jakub Mrugalski 🔥

@uwteam

🤖 Piszę o technologii, automatyzacji, cybersecurity ✍️ Dokumentuję swoją drogę w biznesie 🖥️ mikr.us ← to moje 😎