В ядре Linux устранена следующая уязвимость:
net/sched: cls_flow: исправлено разыменование нулевого указателя в общих блоках
flow_change() вызывает tcf_block_q() и разыменовывает q->handle для получения
базовый класс по умолчанию. Общие блоки оставляют блок->q NULL, что приводит к NULL
deref, когда создается фильтр потока без полностью определенного базового класса
в общем блоке. Проверьте tcf_block_shared() перед доступом к блоку->q и верните -EINVAL
для общих блоков.
Это позволяет избежать нулевого разыменования, показанного ниже:
==================================================================
KASAN: null-ptr-deref в диапазоне [0x0000000000000038-0x000000000000003f]
RIP: 0010:flow_change (net/sched/cls_flow.c:508)
Отслеживание вызова:
tc_new_tfilter (net/sched/cls_api.c:2432)
rtnetlink_rcv_msg (net/core/rtnetlink.c:6980)
[...]
==================================================================
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_flow: fix NULL pointer dereference on shared blocks flow_change() calls tcf_block_q() and dereferences q->handle to derive a default baseclass. Shared blocks leave block->q NULL, causing a NULL deref when a flow filter without a fully qualified baseclass is created on a shared block. Check tcf_block_shared() before accessing block->q and return -EINVAL for shared blocks. This avoids the null-deref shown below: ======================================================================= KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f] RIP: 0010:flow_change (net/sched/cls_flow.c:508) Call Trace: tc_new_tfilter (net/sched/cls_api.c:2432) rtnetlink_rcv_msg (net/core/rtnetlink.c:6980) [...] =======================================================================