В ядре Linux устранена следующая уязвимость: netfilter: ctnetlink: исправить use-after-free в ctnetlink_dump_exp_ct() ctnetlink_dump_exp_ct…
В ядре Linux устранена следующая уязвимость: netfilter: ctnetlink: исправить use-after-free в ctnetlink_dump_exp_ct() ctnetlink_dump_exp_ct() хранит указатель контента в cb->данных для netlink сбросить обратный вызов ctnetlink_exp_ct_dump_table(), но отбрасывает Справка для отслеживания сразу после netlink_dump_start(). Когда dump охватывает несколько раундов, второй recvmsg() запускает свалку callback, который ссылается на теперь свободный контрак через nfct_help(ct), что приводит к использованию-после-бесплатно на ct->ext. Ошибка заключается в том, что netlink_dump_control не имеет .start или .done обратные звонки для управления справки в ответ на свалки. Другие дамные функции в одном файле (например, ctnetlink_get_conntrack) должным образом использовать для этой цели .start/.done обратные вызовы. Исправьте это, добавив .start и .dene callbacks, которые удерживают и выпускают conntrack ссылка на время сброса, и перемещение nfct_help() вызов после проверки раннего возврата cb->args[0] на свалке обратный звонок, чтобы избежать уважения ct->ext без необходимости. BUG: KASAN: slab-use-after-free в ctnetlink_exp_ct_dump_table+0x4f/0x2e0 Прочитайте размер 8 по адресу dr ff88810597ebf0 задание ctnetlink_poc/133 CPU: 1 UID: 0 PID: 133 Комплект: ctnetlink_poc Не испорчен 7.0.0-rc2+ #3 PREEMPTLAZY Трейс по вызову: <TASK> ctnetlink_exp_ct_dump_dump_table+0x4f/0x2e0 netlink_dump+0x333/0x880 netlink_recvmsg+0x3e2/0x4b0 ? aa_sk_perm+0x184/0x450 sock_recvmsg+0xde/0xf0 Выделено заданием 133: kmem_cache_alloc_noprof+0x134/0x440 __nf_conntrack_alloc+0xa8/0x2b0 ctnetlink_create_conntrack+0xa1/0x900 ctnetlink_new_conntrack+0x3cf/0x7d0 nfnetlink_rcv_msg+0x48e/0x510 netlink_rcv_skb+0xc9/0x1f0 nfnetlink_rcv+0xdb/0x220 netlink_unicast+0x3ec/0x590 netlink_sendmsg+0x397/0x690 __sys_sendmsg+0xf4/0x180 Освободилось с заданием 0: slab_free_after_rcu_debug+0xad/0x1e0 rcu_core+0x5c3/0x9c0
Продукт повторно использует или ссылается на память после её освобождения. В какой-то момент эта память может быть выделена повторно и сохранена в другом указателе, тогда как исходный указатель на освобождённую память используется вновь. Поскольку теперь по этому адресу может храниться посторонний объект, исходное использование указателя может привести к повреждению памяти или иным непреднамеренным последствиям. Если новая структура данных содержит указатель на функцию, то при исполнении может быть вызван код, контролируемый злоумышленником.
https://cwe.mitre.org/data/definitions/416.html →Открыть в коллекции CWE →| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux_kernel | * | Отслеживается |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-std | Отслеживается | |
| kernel-doc-std | Отслеживается | |
| kernel-doc-un | Отслеживается | |
| kernel-doc-un | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.18 | Отслеживается |