Ograniczanie nadmiernych luk w zabezpieczeniach agencji

Opis ryzyka OWASP

Nadmierna autonomia to podatność na zagrożenia, która występuje, gdy duży model językowy (LLM) ma niepotrzebne lub zbyt szerokie uprawnienia do interakcji z innymi systemami. Gdy LLM może wywoływać zewnętrzne narzędzia, wtyczki lub funkcje (tzw. „agency”), ta podatność umożliwia mu wykonywanie działań niezamierzonych, nieautoryzowanych i potencjalnie szkodliwych. Osoba przeprowadzająca atak może to wykorzystać, stosując wstrzykiwanie promptów lub inne techniki manipulacji, aby nakłonić LLM do wykorzystania przyznanych jej uprawnień do złośliwych celów. Głównym problemem nie jest to, że LLM może podejmować działania, ale to, że zakres tych działań jest zbyt szeroki i słabo kontrolowany.

Dlaczego deweloperzy aplikacji na Androida powinni się tym zainteresować

Przyznanie dużemu modelowi językowemu zbyt dużej swobody działania w aplikacji na Androida może prowadzić do poważnych incydentów związanych z bezpieczeństwem:

  • Nieautoryzowany dostęp do systemu: jeśli system plików i zasoby pamięci urządzenia lub możliwość wykonywania połączeń sieciowych są udostępniane modelowi za pomocą wywoływania funkcji, atakujący może użyć wstrzykiwania promptów, aby uzyskać dostęp do plików na urządzeniu (np. dokumentów użytkownika, danych aplikacji) lub podłączonych zasobów sieciowych, a także je modyfikować lub usuwać.
  • Eksfiltracja danych: jeśli aplikacja używa wywoływania funkcji, aby zapewnić LLM dostęp do danych lokalnych (np. baz danych Room, SharedPreferences lub wewnętrznych interfejsów API). Złośliwy prompt może nakłonić model do pobrania informacji poufnych i przekazania ich do narzędzia zewnętrznego, np. funkcji poczty e-mail lub żądania sieciowego.
  • Kompromitacja innych funkcji lub systemów: jeśli LLM ma kontrolę nad innymi funkcjami (np. wysyłaniem SMS-ów, wykonywaniem połączeń, publikowaniem w mediach społecznościowych za pomocą niejawnych intencji, modyfikowaniem ustawień systemu, dokonywaniem zakupów w aplikacji), atakujący może przejąć te funkcje, aby wysyłać spam, rozpowszechniać dezinformację lub przeprowadzać nieautoryzowane transakcje, co może prowadzić do bezpośrednich strat finansowych lub szkód dla użytkownika.
  • Odmowa usługi: jeśli LLM jest zintegrowany z wywoływaniem funkcji, które udostępnia zapytania do bazy danych lub żądania sieciowe, złośliwy prompt może wielokrotnie wywoływać te działania. Może to prowadzić do pogorszenia stanu systemu, np. nadmiernego zużycia baterii, przekroczenia limitu danych lub wyczerpania zasobów lokalnych.

Środki zaradcze dla deweloperów aplikacji na Androida

Ograniczanie nadmiernej autonomii w aplikacjach na Androida polega na stosowaniu zasady najmniejszych uprawnień do każdego narzędzia i funkcji, do których LLM może mieć dostęp lub które może wywoływać.

Ogranicz narzędzia AI (funkcje szczegółowe lub otwarte):

  • Zapewnij minimalny zestaw narzędzi: LLM powinien mieć dostęp tylko do konkretnych narzędzi (funkcji, interfejsów API, intencji), których bezwzględnie potrzebuje do wykonywania zadań w aplikacji. Jeśli nie musi mieć możliwości przeglądania internetu ani wysyłania e-maili, nie udostępniaj mu tych funkcji.
  • Używaj prostych narzędzi o jednym przeznaczeniu: projektuj narzędzia o ograniczonym i konkretnym zakresie. Na przykład udostępnij narzędzie, które odczytuje tylko określony typ ustawień użytkownika, zamiast ogólnego narzędzia, które akceptuje otwarte parametry dostępu do wielu źródeł danych. Unikaj udostępniania dużemu modelowi językowemu zaawansowanych interfejsów API na poziomie systemu, takich jak Runtime.getRuntime().exec(), poprzez umożliwienie modelowi zdefiniowania polecenia lub argumentów.

Ograniczanie możliwości AI

  • Precyzyjne uprawnienia Androida: gdy funkcja wywoływana przez LLM wchodzi w interakcję z zasobami systemu Android lub innymi aplikacjami, sprawdź, czy aplikacja wymaga i ma tylko absolutnie minimalne uprawnienia Androida.
  • Uprawnienia użytkownika: gdy LLM wykonuje działanie w imieniu użytkownika, powinien to robić z uwzględnieniem jego uprawnień i kontekstu. Działanie wykonane przez LLM musi być bezpośrednią odpowiedzią na konkretne polecenie użytkownika.

Pozostawienie kontroli w rękach człowieka (zgoda użytkownika na krytyczne działania)

  • Wymagaj zatwierdzenia przez użytkownika: w przypadku wszelkich ważnych lub ryzykownych działań, które LLM może sugerować lub próbować wykonać (np. usuwanie danych, dokonywanie zakupów w aplikacji, wysyłanie wiadomości, zmienianie krytycznych ustawień), zawsze wymagaj wyraźnego zatwierdzenia przez użytkownika za pomocą okna potwierdzenia w interfejsie. Można to porównać do sytuacji, w której menedżer musi zatwierdzić ważną decyzję.

Zaufanie, ale weryfikacja (weryfikacja danych wejściowych i wyjściowych oraz solidne backendy)

  • Zabezpieczenia backendu: nie polegaj wyłącznie na LLM w określaniu, czy działanie jest dozwolone. Wszystkie usługi backendu lub interfejsy API, z którymi łączą się funkcje wywoływane przez LLM, powinny mieć własne, niezawodne uwierzytelnianie, autoryzację i walidację danych wejściowych, aby dokładnie sprawdzać każde żądanie i weryfikować, czy jest ono prawidłowe i mieści się w oczekiwanych parametrach.
  • Oczyść dane: podobnie jak w przypadku innych luk w zabezpieczeniach, kluczowe jest oczyszczenie i sprawdzenie zarówno danych wejściowych przekazywanych do LLM, jak i parametrów generowanych przez LLM na potrzeby wywołań funkcji. Pozwoli to wykryć wszelkie złośliwe instrukcje lub nieoczekiwane dane wyjściowe przed wykonaniem jakichkolwiek działań.

Podsumowanie

Nadmierna autonomia to poważna luka w zabezpieczeniach, w której LLM ma zbyt szerokie uprawnienia do interakcji z innymi systemami lub funkcjami, co pozwala na nakłonienie go do wykonywania szkodliwych działań. Może to prowadzić do nieautoryzowanego dostępu do danych, naruszenia bezpieczeństwa systemu, strat finansowych lub szkód dla użytkowników aplikacji na Androida. Ograniczanie ryzyka opiera się w dużej mierze na zasadzie jak najmniejszych uprawnień: należy ściśle ograniczyć narzędzia i uprawnienia Androida dostępne dla LLM, sprawdzić, czy każde narzędzie ma minimalną i określoną funkcjonalność, oraz wymagać zatwierdzenia przez człowieka wszystkich operacji o dużym znaczeniu.

Dodatkowe materiały