CVE-2026-78148
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 43 - wyżej niż 43% wszystkich znanych CVE
Streszczenie
W ggml-org llama.cpp bec4772f6 znaleziono podatność w funkcji rpc_server::graph_compute pliku ggml/src/ggml-rpc/ggml-rpc.cpp komponentu ggml-RPC Server. Wykonanie manipulacji prowadzi do wyłuskania pustego wskaźnika (null pointer dereference). Atak może być przeprowadzony zdalnie. Pull request z poprawką oczekuje na akceptację.
Ocena ryzyka
Zdalny atakujący może spowodować awarię serwera RPC, co prowadzi do niedostępności usługi. Może to zakłócić działanie aplikacji korzystających z llama.cpp.
Rekomendacja
Zaleca się śledzenie statusu pull requesta i zastosowanie poprawki, gdy tylko zostanie zaakceptowana. Tymczasowo można ograniczyć dostęp do serwera RPC.
Inne podatności w llama.cpp
Zobacz wszystkie- CVE-2026-78147Wysokie
Podatność w llama.cpp w funkcji deserialize_tensor pliku ggml/src/ggml-rpc/ggml-rpc.cpp komponentu ggml-RPC Server. Manipulacja argumentami op/op_params prowadzi do deserializacji. Atak może być przeprowadzony zdalnie. Podatność różni się od CVE-2026-34159, która tylko dodaje odrzucenie buffer==nullptr w create_node() i nie waliduje op ani op_params. Zgłoszone zgłoszenie GitHub zostało automatycznie zamknięte z powodu braku aktywności.
- CVE-2026-39909Wysokie
llama.cpp przed wersją b8585 zawiera podatność use-after-free w serwerze RPC w handlerze GRAPH_RECOMPUTE, która pozwala nieuwierzytelnionym zdalnym atakującym na uzyskanie dowolnego odczytu i zapisu, a także zdalne wykonanie kodu.
- CVE-2026-70640Wysokie
llama.cpp w wersjach b1886 do b7445 zawiera podatność typu use-after-free związaną z wyścigiem w wrapperze JNI LLaMA-Android, gdzie funkcje bench_1model() i free_1context() nie są zsynchronizowane, co pozwala wątkowi A operować na zwolnionej pamięci, podczas gdy wątek B jednocześnie zwalnia llama_context. Atakujący może wykorzystać to przez heap spray z kontrolowanymi danymi zawierającymi fałszywą vtable, aby przejąć wskaźnik vtable i uzyskać zdalne wykonanie kodu.
- CVE-2026-70639Średnie
W llama.cpp w wersjach b1886 do b7445 występuje podatność na dereferencję pustego wskaźnika w wrapperze JNI LLaMA-Android, gdzie funkcja bench_1model() nie sprawdza wskaźnika kontekstu modelu przed jego użyciem. Atakujący może dostarczyć złośliwy, uszkodzony lub skrócony plik modelu, aby wywołać warunek pustego kontekstu, powodując awarię SIGSEGV i zakończenie procesu aplikacji Android.
- CVE-2026-70638Wysokie
llama.cpp w wersjach b1886 do b7445 zawiera podatność przepełnienia liczby całkowitej w wrapperze JNI LLaMA-Android, gdzie funkcja new_1batch() mnoży sizeof(llama_seq_id) przez kontrolowany przez atakującego parametr n_seq_max bez walidacji przepełnienia, co powoduje zawinięcie alokacji bufora i przydzielenie niewystarczającej pamięci. Atakujący może wykorzystać to przez podanie spreparowanej wartości n_seq_max w złośliwym pliku modelu lub wywołaniu JNI, aby wywołać uszkodzenie sterty i uzyskać odmowę usługi lub wykonanie kodu.
- CVE-2026-43632Wysokie
llama.cpp w wersjach od b7492 do najnowszej b9060 zawiera podatność use-after-free w llama-server, wpływającą na sześć endpointów tokenizacji (/tokenize, /detokenize, /infill, /apply-template, /rerank i /anthropic/count_tokens), które omijają kolejkę zadań i uzyskują bezpośredni dostęp do `ctx_server.vocab` w wątkach roboczych HTTP. Atakujący mogą wykorzystać wyścig typu time-of-check-time-of-use, gdzie główny wątek niszczy i zwalnia vocab po zwolnieniu blokady synchronizacji, ale zanim handler zakończy jego użycie, powodując awarię lub potencjalne wykonanie kodu, gdy skonfigurowano `--sleep-idle-seconds`.
- CVE-2026-43631Wysokie
llama.cpp w wersjach od b7492 do najnowszej b9060 zawiera podatność use-after-free w wskaźniku vocab w llama-server, gdy włączona jest funkcja `--sleep-idle-seconds`, co pozwala nieuwierzytelnionym zdalnym atakującym na wykonanie dowolnego kodu. Atakujący mogą wywołać podatność, wysyłając żądania do dotkniętych endpointów podczas przechodzenia serwera w tryb uśpienia, powodując, że współbieżne wątki robocze odwołują się do zwolnionego wskaźnika vocab, który może zostać odzyskany przez dane kontrolowane przez atakującego, aby osiągnąć zdalne wykonanie kodu.
- CVE-2026-43630Średnie
llama.cpp w wersjach od b5702 do b7653 zawiera podatność na odczyt poza zakresem w ścieżce przywracania stanu pamięci rekurencyjnej, co pozwala atakującym z dostępem do zapisu w katalogu zapisu slotów na odczyt pamięci poza końcem tablicy komórek. Atakujący może stworzyć złośliwy plik slotu z nadmierną wartością seq_id, aby wywołać odczyt poza zakresem, który ujawnia dane sterty, w tym wartości wskaźników, do logów serwera, omijając ochronę ASLR i ułatwiając dalszą eksploatację.
- CVE-2026-43629Wysokie
Podatność przepełnienia bufora sterty w llama.cpp (wersje b4882 do b9058) w ścieżce przywracania stanu pamięci podręcznej KV. Funkcja state_read_data() oblicza rozmiar zapisu bez kontroli przepełnienia, co pozwala atakującemu z dostępem do katalogu slot_save_path na uszkodzenie pamięci sterty.
- CVE-2026-43628Wysokie
Podatność niedomiaru liczby całkowitej i odczytu poza zakresem w samplerze DRY w llama.cpp (wersje b3978 do b9058). Nieuwierzytelniony atakujący może wysłać spreparowane żądanie HTTP z parametrem dry_allowed_length ustawionym na INT32_MIN do endpointów /v1/completions lub /v1/chat/completions, powodując niedomiar bufora sterty.
Oryginalny opis (angielski, źródło NVD)
A vulnerability was determined in ggml-org llama.cpp bec4772f6. This affects the function rpc_server::graph_compute of the file ggml/src/ggml-rpc/ggml-rpc.cpp of the component ggml-RPC Server. Executing a manipulation can lead to null pointer dereference. The attack may be launched remotely. The pull request to fix this issue awaits acceptance.

