CVE-2024-35860 in Linux
Сводка
по VulDB • 03.08.2026
В ядре Linux устранена следующая уязвимость:
bpf: поддержка отложенного освобождения памяти для bpf_link после периода грейс-периода RCU (RCU grace period)
Ссылка BPF (bpf_link) для некоторых типов программ передается в виде «контекста», который может использоваться этими программами BPF для получения дополнительной информации. Например, для мульти-kprobes и мульти-uprobes ссылка используется для извлечения значений cookie BPF.
Из-за этой зависимости во время выполнения, когда счетчик ссылок (refcnt) bpf_link падает до нуля, все еще могут выполняться активные программы BPF, обращающиеся к данным ссылки.
Этот патч добавляет общую поддержку отложенного вызова функции освобождения памяти для bpf_link после завершения периода грейс-периода RCU (RCU GP), если это запрошено. Это достигается путем предоставления двух различных функций обратного вызова для освобождения: одной синхронной и одной отложенной. Если предоставлена функция отложенного освобождения, bpf_link_free() запланирует выполнение callback dealloc_deferred() после завершения периода грейс-периода RCU (RCU GP).
BPF использует два варианта реализации RCU: «классический» несонный вариант и RCU tasks trace. Последний используется при работе с сонными программами BPF. bpf_link_free() учитывает это, проверяя флаг sleepable базовой программы BPF, и либо проходит только через обычный период грейс-периода RCU для несонных программ, либо через периоды грейс-периодов RCU tasks trace *и* затем обычного RCU GP (учитывая оптимизацию rcu_trace_implies_rcu_gp()), если программа BPF является сонной.
Мы используем этот механизм для ссылок multi-kprobe и multi-uprobe, которые разыменовывают ссылку во время выполнения программы. Мы также превентивно переключаем ссылки raw_tp на использование функции обратного вызова отложенного освобождения памяти, поскольку предстоящие изменения в дереве bpf-next будут предоставлять данные ссылки raw_tp (в частности, значение cookie) программам BPF во время выполнения.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.