Podatność w bibliotece llama.cpp umożliwia nieuwierzytelnionemu atakującemu zdalne wykonanie kodu (RCE) poprzez wysłanie spreparowanych wiadomości do serwera RPC. Brak jakiejkolwiek walidacji granic podczas deserializacji tensora pozwala na odczyt i zapis dowolnych obszarów pamięci procesu.
▸ Pokaż oryginał (EN)
llama.cpp is an inference of several LLM models in C/C++. Prior to version b8492, the RPC backend's deserialize_tensor() skips all bounds validation when a tensor's buffer field is 0. An unauthenticated attacker can read and write arbitrary process memory via crafted GRAPH_COMPUTE messages. Combined with pointer leaks from ALLOC_BUFFER/BUFFER_GET_BASE, this gives full ASLR bypass and remote code execution. No authentication required, just TCP access to the RPC server port. This issue has been patched in version b8492.
Funkcja deserialize_tensor() w backendzie RPC pomija całkowicie weryfikację granic (bounds validation), gdy pole buffer tensora ma wartość 0. Atakujący może wysyłać spreparowane wiadomości GRAPH_COMPUTE, aby czytać i zapisywać dowolne obszary pamięci procesu. Dodatkowe wiadomości ALLOC_BUFFER oraz BUFFER_GET_BASE umożliwiają wyciek wskaźników, co pozwala na ominięcie mechanizmu ASLR. Do przeprowadzenia ataku wystarczy dostęp TCP do portu serwera RPC — uwierzytelnienie nie jest wymagane.
Atakujący bez żadnych uprawnień może uzyskać pełną kontrolę nad procesem, w tym wykonać dowolny kod zdalnie (RCE), a także odczytać lub zmodyfikować wrażliwe dane w pamięci procesu.
Należy zaktualizować llama.cpp do wersji b8492 lub nowszej, w której błąd został naprawiony. Jeśli aktualizacja nie jest możliwa natychmiast, należy zablokować dostęp do portu serwera RPC na poziomie firewall i ograniczyć go wyłącznie do zaufanych hostów.
llama.cpp (Ggml) we wszystkich wersjach poprzedzających b8492, gdy aktywny jest backend RPC i serwer RPC jest dostępny przez sieć.
Podatność została naprawiona w wersji b8492. Szczegóły dostępne w GitHub Security Advisory GHSA-j8rj-fmpv-wcxw oraz pull request #20908.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HGgml Llama.cpp
APPGgml< b8492
Powiązane podatności
Zapis pod dowolny adres pamięci w llama.cpp poprzez wskaźnik rpc_tensor
llama.cpp is an inference of several LLM models in C/C++. Prior to b7824, an integer overflow vulnerability in...
llama.cpp is an inference of several LLM models in C/C++. Prior to b8146, the gguf_init_from_file_impl() in gg...
llama.cpp is an inference of several LLM models in C/C++. In commits 55d4206c8 and prior, the n_discard parame...
llama.cpp is an inference of several LLM models in C/C++. Prior to version b5721, there is a signed vs. unsign...