Сборки llama.cpp с b1886 по b7445 содержат уязвимость состояния гонки, связанную с использованием после освобождения, в оболочке JNI LLaMA-Android, где Bench_1model() и free_1context() не имеют синхронизации, что позволяет потоку A работать с освобожденной памятью, в то время как поток B одновременно освобождает llama_context. Злоумышленники могут воспользоваться этим, выполнив распыление кучи с контролируемыми злоумышленником данными, содержащими поддельную виртуальную таблицу, чтобы перехватить указатель виртуальной таблицы по смещению +0x30, в результате чего llama_batch_allocr::clear() разыменует произвольную память и достигнет удаленного выполнения кода.
Показать оригинальное описание (EN)
llama.cpp builds b1886 through b7445 contain a race condition use-after-free vulnerability in the LLaMA-Android JNI wrapper where bench_1model() and free_1context() lack synchronization, allowing Thread A to operate on freed memory while Thread B concurrently frees the llama_context. Attackers can exploit this by performing heap spray with attacker-controlled data containing a fake vtable to hijack the vtable pointer at offset +0x30, causing llama_batch_allocr::clear() to dereference arbitrary memory and achieve remote code execution.
Характеристики атаки
Последствия
Строка CVSS v4.0