CVE-2026-43622
WysokieCVSS 7.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 5 - wyżej niż 5% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ryzyko obejmuje awarie procesu, które mogą prowadzić do niedostępności aplikacji, oraz potencjalne wykonanie dowolnego kodu, co może umożliwić atakującemu przejęcie kontroli nad systemem. Podatność może być wykorzystana zdalnie, jeśli aplikacja przetwarza dane wejściowe od użytkownika.
Rekomendacja
Zaleca się aktualizację llama.cpp do wersji nowszej niż b7445, która zawiera poprawkę. Należy również unikać przetwarzania niezaufanych danych wejściowych w aplikacjach korzystających z tego wrappera JNI.
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-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.
Oryginalny opis (angielski, źródło NVD)
llama.cpp builds b1886 through b7445 contain a double free vulnerability in the LLaMA-Android JNI wrapper where new_1batch() allocates memory using malloc() while free_1batch() deallocates it using the C++ delete operator, causing heap metadata corruption. Attackers can trigger this memory management mismatch to cause denial of service through process crashes or potentially achieve arbitrary code execution depending on allocator state.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

