Krytyczna luka w popularnym pakiecie Pythona dla modeli AI typu LLM (ang. large-language models) może dotyczyć nawet 6000 modeli i prowadzić do ataków na łańcuch dostaw.
Niedawno stwierdzono, że pakiet lama-cpp-python o otwartym kodzie źródłowym jest podatny na wstrzyknięcie szablonu po stronie serwera, co może prowadzić do zdalnego wykonania kodu (RCE). Luka oznaczona jako CVE-2024-34359 została odkryta przez Patricka Penga, badacza i programistę specjalizującego się w cyberbezpieczeństwie.
Pakiet llama-cpp-python zapewnia powiązania Pythona z bardzo popularną biblioteką llama.cpp. Jest to biblioteka C++, umożliwiająca uruchamianie LLM, takich jak LLaMA firmy Meta i modele Mitral AI, na własnym komputerze osobistym. Pakiet llama-cpp-python umożliwia ponadto programistom integrację tych modeli open source z Pythonem.
CVE-2024-34359, która posiada krytyczny wynik CVSS na poziomie 9.7, stwarza ryzyko RCE z powodu nieprawidłowej implementacji silnika szablonów Jinja2. Luka umożliwia analizowanie szablonów czatów przechowywanych w metadanych przez Jinja2 bez oczyszczania i sprawdzania w piaskownicy, co stwarza dla atakujących okazję do wstrzykiwania złośliwych szablonów – wyjaśnił badacz w poście na swoim blogu.
Peng przesłał exploit sprawdzający koncepcję luki w zabezpieczeniach Hugging Face, demonstrując, w jaki sposób model zainfekowany złośliwym szablonem może wykonać dowolny kod po załadowaniu lub zainicjowaniu sesji czatu. W poście opisano również, w jaki sposób złośliwy kod może zostać wstrzyknięty do modelu pobranego w postaci pliku .gguf – popularnego formatu plików służącego do udostępniania modeli przetwarzania języka naturalnego (NLP) w centrach typu open source, takich jak Hugging Face.
Według Checkmarx ponad 6000 modeli na Hugging Face korzysta z formatów llama_cpp_python, Jinja2 i gguf. Atakujący może potencjalnie pobrać podatny na ataki model, wstrzyknąć metadane .gguf z własnym złośliwym szablonem i ponownie rozpowszechnić model na potrzeby ataków na łańcuch dostaw wśród niczego niepodejrzewających twórców sztucznej inteligencji.
W zeszłym tygodniu w wersji 0.2.72 llama_cpp_python dodano poprawkę dla CVE-2024-34359. Wersja ta dodaje środki sprawdzania poprawności danych wejściowych i element sandboxingu podczas renderowania szablonów.
Odkrycie CVE-2024-34359 stanowi wyraźne przypomnienie, że na styku sztucznej inteligencji i bezpieczeństwa łańcucha dostaw mogą powstać luki w zabezpieczeniach. Tym samym podkreśla potrzebę czujnych praktyk bezpieczeństwa w całym cyklu życia systemów sztucznej inteligencji i ich komponentów. W miarę jak technologia AI staje się coraz bardziej osadzona w krytycznych aplikacjach, zapewnienie, że systemy te są budowane i utrzymywane z podejściem stawiającym na bezpieczeństwo, ma kluczowe znaczenie dla ochrony przed potencjalnymi zagrożeniami, które mogłyby podważyć korzyści płynące z tej technologii.