CVE-2026-78147
WysokieCVSS 7.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 45 - wyżej niż 45% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Zdalny atakujący może wykorzystać deserializację do wykonania nieautoryzowanych operacji lub spowodować awarię usługi, co może prowadzić do naruszenia integralności systemu.
Rekomendacja
Zaleca się aktualizację llama.cpp do najnowszej wersji zawierającej poprawkę oraz monitorowanie zgłoszeń bezpieczeństwa. Należy również rozważyć ograniczenie dostępu do usługi ggml-RPC.
Inne podatności w llama.cpp
Zobacz wszystkie- CVE-2026-107183Wysokie
llama.cpp przed wersją b11393 zawiera podatność use-after-free i double free w funkcji common_chat_peg_mapper::map, która pozwala nieuwierzytelnionym zdalnym atakującym uszkodzić pamięć sterty przez zwisający wskaźnik current_tool. Atakujący mogą wysłać chat_parser w żądaniu POST /completion emitującym tool-id po tagu tool-close, aby spowodować awarię llama-server i uzyskać prymityw zapisu do sterty.
- CVE-2026-119052Wysokie
llama.cpp w wersjach od b2877 do przed b11935 zawiera podatność nieobsłużonego wyjątku w serwerze ggml-rpc. Nieuwierzytelniony zdalny atakujący może wysłać zbyt dużą długość wiadomości (np. w poleceniu SET_TENSOR), wywołując std::length_error i przerwanie procesu. Prowadzi to do odmowy usługi dla wszystkich klientów.
- CVE-2026-118375Wysokie
llama.cpp w wersjach od b8841 do b11865 zawiera podatność na zapis poza granicami bufora w funkcji rdma_recv() transportu RDMA ggml-rpc, która pozwala nieuwierzytelnionym peером na przepełnienie stosu serwera rpc-server. Atakujący deklarujący obsługę RDMA w wiadomości HELLO mogą wysłać do 256 KiB do zmiennej stosu o rozmiarze 1 bajta w rpc_serve_client(), powodując awarię serwera lub potencjalne wykonanie kodu.
- CVE-2026-116840Średnie
llama.cpp w wersjach od b5854 do b11275 zawiera podatność przepełnienia liczby całkowitej w funkcji gguf_init_from_reader, która omija sprawdzenie rozmiaru z CVE-2025-53630 poprzez dopełnienie rozmiarów tensorów bliskich SIZE_MAX. Atakujący może dostarczyć spreparowany plik GGUF, którego rozmiar tensora dopełnia się do zera, powodując zbyt mały blok danych i odczyty poza granicami przez konsumentów.
- CVE-2026-116829Średnie
llama.cpp w wersjach od b10398 do b11301 zawiera podatność przepełnienia liczby całkowitej w funkcji gguf_init_from_reader, która pozwala obejść walidację liczby elementów tensora poprzez dostarczenie kształtów, których iloczyn zawija się do zera. Atakujący może spreparować pliki GGUF z ogromnymi wymiarami tensorów, które przepełniają ggml_nbytes() i kroki, powodując dostęp do pamięci poza granicami, gdy bufory są rozmiarowane na podstawie zawiniętych liczb bajtów.
- CVE-2026-116816Wysokie
llama.cpp w wersjach od b5899 przed b10261 zawiera podatność zapisu poza granice sterty (heap out-of-bounds write) w funkcji llm_tokenizer_plamo2::build, umożliwiającą atakującym uszkodzenie pamięci sterty za pomocą spreparowanych modeli GGUF. Atakujący może dostarczyć tekst tokenu typu BYTE, taki jak <0x-1>, którego ujemna wartość podczas ładowania modelu zapisuje identyfikatory tokenów przed buforem bytes_, powodując awarie lub potencjalne wykonanie kodu.
- CVE-2025-71439Średnie
llama.cpp przed wersją b5649 zawiera podatność polegającą na odczycie poza granicami sterty w funkcji llama_vocab::impl::print_info(), która pozwala atakującym na wywołanie awarii podczas ładowania modelu poprzez zbyt duże identyfikatory tokenów specjalnych. Atakujący może dostarczyć spreparowany model GGUF z krótką tablicą tokenizer.ggml.tokens, powodując odczyt poza id_to_token i awarię llama-cli lub llama-server.
- CVE-2024-58400Wysokie
llama.cpp w wersjach przed b3701 zawiera podatność odczytu poza granice (out-of-bounds read) w funkcjach llama_decode_internal i llama_encode_internal, umożliwiającą zdalnym nieuwierzytelnionym atakującym odczyt pamięci poprzez dostarczenie niezwalidowanych identyfikatorów tokenów. Atakujący może wysłać tablice liczb całkowitych do punktu końcowego /completion serwera llama-server z identyfikatorami spoza zakresu 0 do n_vocab, aby odczytać pamięć osadzeń poza granicami lub spowodować awarię procesu.
- CVE-2024-58399Średnie
llama.cpp przed wersją b2731 zawiera podatność polegającą na odczycie poza granicami w funkcji llama_model_loader, która pozwala atakującym na odczyt pamięci poza zmapowanym plikiem modelu poprzez spreparowane przesunięcia tensorów GGUF. Atakujący może dostarczyć spreparowany lub obcięty plik modelu GGUF z dowolnymi 64-bitowymi przesunięciami tensorów, powodując awarię procesu lub załadowanie sąsiedniej pamięci procesu jako wag modelu.
- CVE-2026-116467Średnie
W ggml-org llama.cpp do wersji 0.7.0 wykryto lukę w nieznanej funkcjonalności pliku src/llama-sampler.cpp komponentu Mirostat Sampler. Manipulacja prowadzi do osiągalnego asercji (reachable assertion), a atak można przeprowadzić zdalnie. Projekt został poinformowany o problemie przez pull request, ale jeszcze nie zareagował.
Oryginalny opis (angielski, źródło NVD)
A vulnerability was found in ggml-org llama.cpp bec4772f6. The impacted element is the function deserialize_tensor of the file ggml/src/ggml-rpc/ggml-rpc.cpp of the component ggml-RPC Server. Performing a manipulation of the argument op/op_params results in deserialization. The attack may be initiated remotely. This vulnerability is distinct from CVE-2026-34159 (GHSA-j8rj-fmpv-wcxw, PR #20908), which only added a buffer==nullptr rejection in create_node() and does not validate op or op_params. The reported GitHub issue was closed automatically due to inactivity.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

