W ostatnim czasie ujawniono ponad trzy tuziny luk w zabezpieczeniach dotyczących otwarto-źródłowych modeli sztucznej inteligencji (AI) i uczenia maszynowego (ML), z których niektóre mogą prowadzić do zdalnego wykonywania kodu oraz kradzieży danych. Te podatności, zidentyfikowane w narzędziach takich jak ChuanhuChatGPT, Lunary oraz LocalAI, zostały zgłoszone w ramach platformy do wykrywania błędów Protect AI, Huntr.
Najpoważniejsze luki bezpieczeństwa w Lunary
Wśród zgłoszonych problemów największe zagrożenie stanowią dwie luki odkryte w Lunary, narzędziu produkcyjnym do pracy z dużymi modelami językowymi (LLMs). Pierwsza z nich, opisana jako CVE-2024-7474 (z wynikiem CVSS 9.1), to tzw. Insecure Direct Object Reference (IDOR), która pozwala zalogowanemu użytkownikowi na przeglądanie lub usuwanie zewnętrznych użytkowników, co może prowadzić do nieautoryzowanego dostępu do danych i ich potencjalnej utraty.
Druga poważna luka, CVE-2024-7475 (również z wynikiem CVSS 9.1), dotyczy niewłaściwego kontrolowania dostępu. Napastnik może dzięki niej aktualizować konfigurację SAML, co pozwala na zalogowanie się jako nieautoryzowany użytkownik i uzyskanie wrażliwych informacji.
Warto również wspomnieć o trzeciej luce w Lunary, CVE-2024-7473 (CVSS 7.5), która umożliwia atakującemu manipulowanie parametrem kontrolowanym przez użytkownika, co prowadzi do aktualizacji promptów innych użytkowników bez ich zgody.
Jak wyjaśniono w raporcie Protect AI: „Atakujący loguje się jako Użytkownik A i przechwytuje żądanie dotyczące aktualizacji promptu. Modyfikując parametr 'id’ w tym żądaniu na identyfikator promptu należącego do Użytkownika B, atakujący może zaktualizować prompt Użytkownika B bez jego zgody.”
Luki w ChuanhuChatGPT i LocalAI
Inne poważne zagrożenie dotyczy ChuanhuChatGPT. Odkryto w nim lukę CVE-2024-5982 (CVSS 9.1), która dotyczy przesyłania plików przez użytkowników. Luka ta może prowadzić do zdalnego wykonywania dowolnego kodu, tworzenia katalogów oraz odsłaniania wrażliwych danych. Problem ten wpisuje się w kategorię tzw. path traversal, w której atakujący może manipulować ścieżkami plików, co prowadzi do nieautoryzowanego dostępu do zasobów systemowych.
W przypadku LocalAI – otwarto-źródłowego projektu umożliwiającego użytkownikom uruchamianie samodzielnie hostowanych modeli LLM – wykryto dwie luki. Pierwsza, CVE-2024-6983 (CVSS 8.8), pozwala na zdalne wykonywanie dowolnego kodu poprzez przesłanie złośliwego pliku konfiguracyjnego. Druga, CVE-2024-7010 (CVSS 7.5), umożliwia atakującemu odgadnięcie poprawnych kluczy API poprzez analizę czasu odpowiedzi serwera, co jest techniką znaną jako timing attack.
Protect AI wyjaśnia, że luka ta pozwala na wykonanie ataku typu side-channel, w którym atakujący może mierzyć czas przetwarzania żądań z różnymi kluczami API i na tej podstawie po kawałku odkrywać poprawny klucz.
Dalsze zagrożenia i sposoby ochrony
Do listy zagrożeń dodano również lukę w Deep Java Library (DJL), która wynika z błędu nadpisywania plików w funkcji rozpakowywania (untar). Luka ta, oznaczona jako CVE-2024-8396 (CVSS 7.8), może prowadzić do zdalnego wykonywania kodu.
Tymczasem firma NVIDIA wydała aktualizacje, aby naprawić lukę w frameworku NeMo dla generatywnej AI (CVE-2024-0129, CVSS 6.3), która może prowadzić do wykonania kodu oraz manipulacji danymi.
Użytkownikom zaleca się aktualizację swoich instalacji do najnowszych wersji, aby chronić łańcuch dostaw AI/ML oraz zabezpieczyć się przed potencjalnymi atakami.
Analiza kodu źródłowego z Vulnhuntr
Równocześnie Protect AI ogłosiło wydanie narzędzia Vulnhuntr, otwarto-źródłowego analizatora statycznego kodu Pythona, który wykorzystuje duże modele językowe (LLM) do wykrywania luk typu zero-day w kodzie. Vulnhuntr działa poprzez dzielenie kodu na mniejsze fragmenty, co pozwala modelowi językowemu na analizę bez przeciążania jego kontekstowego okna – limitu informacji, które model może przetworzyć w jednym zapytaniu.
Dan McInerney i Marcello Salvati z Protect AI wyjaśnili, że narzędzie automatycznie przeszukuje pliki projektu, aby znaleźć te, które najprawdopodobniej odpowiadają za obsługę danych wejściowych od użytkownika. Następnie analizuje cały plik i wskazuje potencjalne luki w zabezpieczeniach.
Jailbreak ChatGPT poprzez szyfrowanie HEX i emoji
Pomijając słabości w ramach AI, nowe techniki jailbreakowania opublikowane przez Mozilla’s 0Day Investigative Network (0Din) pokazują, że szkodliwe prompty zakodowane w formacie szesnastkowym oraz emoji mogą być używane do ominięcia zabezpieczeń OpenAI ChatGPT i tworzenia exploitów dla znanych luk w zabezpieczeniach.
Marco Figueroa, badacz bezpieczeństwa, wyjaśnił, że technika ta wykorzystuje lukę językową, instruując model, aby wykonał z pozoru nieszkodliwe zadanie, takie jak konwersja wartości szesnastkowych. Model, zaprojektowany do przestrzegania instrukcji w języku naturalnym, nie rozpoznaje, że konwersja tych wartości może generować szkodliwe dane wyjściowe.
Problem ten wynika z faktu, że modele językowe optymalizowane są do wykonywania instrukcji krok po kroku, lecz brak im pełnej świadomości kontekstu, by ocenić bezpieczeństwo każdego z kroków w szerszym kontekście ich ostatecznych celów.
Podsumowanie
Ostatnie odkrycia pokazują, jak istotne jest dbanie o bezpieczeństwo w środowiskach sztucznej inteligencji i uczenia maszynowego, zwłaszcza w kontekście otwartych źródeł. Wzrastająca popularność i dostępność narzędzi opartych na AI sprawia, że są one atrakcyjnym celem dla cyberataków. Regularne aktualizacje i dokładna analiza kodu są kluczem do ochrony przed potencjalnymi zagrożeniami.