CVE-2026-43631
WysokieCVSS 8.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 36 - wyżej niż 36% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Nieuwierzytelniony atakujący może wykonać dowolny kod na serwerze, co może prowadzić do całkowitego przejęcia systemu, kradzieży danych lub dalszych ataków w sieci.
Rekomendacja
Zaktualizuj llama.cpp do wersji nowszej niż b9060, która zawiera poprawkę. Jeśli to możliwe, wyłącz funkcję `--sleep-idle-seconds` lub ogranicz dostęp do endpointów.
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 b7492 through the latest b9060 contains a use-after-free vulnerability in the vocab pointer of llama-server when the --sleep-idle-seconds feature is enabled, allowing unauthenticated remote attackers to execute arbitrary code. Attackers can trigger the vulnerability by sending requests to affected endpoints while the server transitions to sleep mode, causing concurrent worker threads to dereference a freed vocab pointer that can be reclaimed with attacker-controlled data to achieve remote code execution.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

