Podatności llama.cpp
30 znanych podatności CVE w llama.cpp, przetłumaczonych i ocenionych.
- 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ł.
- CVE-2026-116096Średnie
W ggml-org llama.cpp funkcja list_pockettts_state_slots w pliku tools/mtmd/models/pockettts-gen.cpp (komponent Pocket-TTS) pozwala na out-of-bounds write poprzez manipulację argumentem mmproj. Atak wymaga lokalnego dostępu, a exploit jest publicznie dostępny. Aktualizacja do wersji b11796 rozwiązuje problem.
- CVE-2026-86317Średnie
W ggml-org llama.cpp do wersji 0.4.0 wykryto podatność w funkcji rpc_server::deserialize_tensor w pliku ggml/src/ggml-rpc/ggml-rpc.cpp, w komponencie RPC Server. Manipulacja argumentem ne prowadzi do osiągalnego asercji. Atak może być przeprowadzony zdalnie. Zgłoszone zgłoszenie GitHub zostało automatycznie zamknięte z powodu braku aktywności.
- CVE-2026-52132Wysokie
llama.cpp do commita 97f06e9, gdy uruchomiony z flagą --reranking, pozwala zdalnym atakującym na spowodowanie odmowy usługi (std::bad_alloc i HTTP 500) poprzez ujemną wartość top_n w żądaniu POST do /rerank.
- CVE-2026-52131Wysokie
llama.cpp b5693 i wcześniejsze ma osiągalną asercję przez funkcję gguf_reader::read.
- CVE-2026-52130Wysokie
llama.cpp w wersji b5693 i wcześniejszych jest podatny na niekontrolowaną rekurencję w pliku common/json-schema-to-grammar.cpp, co prowadzi do odmowy usługi.
- CVE-2026-78148Średnie
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ę.
- 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-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
Wersje llama.cpp od b4882 przed b8487 zawierają podatność out-of-bounds read w ścieżce przywracania stanu pamięci rekurencyjnej, która pozwala atakującym z prawem zapisu do katalogu zapisu slotów czytać pamięć poza końcem przydzielonej tablicy cells. Atakujący może spreparować złośliwy plik slotu z nadmierną wartością seq_id, aby wywołać odczyt poza granicami i ujawnić dane sterty, w tym wartości wskaźników, do logów serwera, co osłabia ochronę ASLR i ułatwia 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.
- CVE-2026-43627Wysokie
Podatność przepełnienia liczby całkowitej w funkcji llama_batch_init() w llama.cpp (wersje b1283 do b9058). Niesprawdzone mnożenia w wywołaniach malloc() mogą zawinąć się powyżej INT32_MAX podczas obliczania rozmiarów alokacji.
- CVE-2026-43622Wysokie
llama.cpp w wersjach b1886 do b7445 zawiera podwójne zwolnienie pamięci w wrapperze JNI LLaMA-Android, gdzie funkcja new_1batch() alokuje pamięć za pomocą malloc(), a free_1batch() dealokuje ją za pomocą operatora delete w C++. Ta niezgodność zarządzania pamięcią powoduje uszkodzenie metadanych sterty. Atakujący mogą wywołać tę niezgodność, aby spowodować odmowę usługi przez awarie procesu lub potencjalnie osiągnąć wykonanie dowolnego kodu w zależności od stanu alokatora.
- CVE-2026-18581Niskie
W projekcie ggml-org llama.cpp (commit e15efe0) wykryto podatność w parserze szablonów Jinja Minja (plik parser.cpp). Manipulacja wejściem {{9|9|{ może prowadzić do osiągalnego asercji (assertion failure). Atak wymaga dostępu lokalnego.
- CVE-2026-17501Średnie
W projekcie ggml-org llama.cpp (commit e15efe0) wykryto błąd w funkcji transform pliku common/json-schema-to-grammar.cpp, powodujący niekontrolowaną rekurencję podczas konwersji JSON-Schema na GBNF. Atak może być przeprowadzony zdalnie.
- CVE-2026-17500Średnie
W projekcie ggml-org llama.cpp (commity d006858/e15efe0) wykryto podatność w funkcji _visit_pattern pliku common/json-schema-to-grammar.cpp, która prowadzi do dereferencji wskaźnika null.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

