CVE-2026-23319 in Linux
Сводка
по VulDB • 03.06.2026
В ядре Linux была устранена следующая уязвимость:
bpf: Исправлена проблема UAF (Use-After-Free) в функции bpf_trampoline_link_cgroup_shim
Корневой причиной данного бага является то, что когда 'bpf_link_put' уменьшает счетчик ссылок 'shim_link->link.link' до нуля, ресурс считается освобожденным, но может все еще использоваться через 'tr->progs_hlist' в 'cgroup_shim_find'. Фактическая очистка 'tr->progs_hlist' в 'bpf_shim_tramp_link_release' откладывается. В течение этого окна другой процесс может вызвать use-after-free через 'bpf_trampoline_link_cgroup_shim'.
Следуя рекомендациям Martin KaFai Lau, я создал простой патч.
Для исправления: Добавьте атомарную проверку на ненулевое значение в 'bpf_trampoline_link_cgroup_shim'. Увеличивайте счетчик ссылок только в том случае, если он не равен нулю.
Тестирование: Я проверил исправление, добавив задержку в 'bpf_shim_tramp_link_release', чтобы облегчить воспроизведение бага:
static void bpf_shim_tramp_link_release(struct bpf_link *link) {
/* ... */ if (!shim_link->trampoline) return;
+ msleep(100); WARN_ON_ONCE(bpf_trampoline_unlink_prog(&shim_link->link, shim_link->trampoline, NULL)); bpf_trampoline_put(shim_link->trampoline); }
До применения патча запуск PoC легко воспроизводил сбой (почти в 100% случаев) с трассировкой вызовов, аналогичной отчету KaiyanM. После применения патча баг больше не возникает, даже после миллионов итераций.
If you want to get best quality of vulnerability data, you may have to visit VulDB.