Description
In the Linux kernel, the following vulnerability has been resolved: bpf,fork: wipe ->bpf_storage before bailouts that access it Currently, copy_process() can bail out to free_task() before p->bpf_storage has been initialized, with this call graph (shown here for the !CONFIG_MEMCG case): copy_process dup_task_struct arch_dup_task_struct [copies the entire task_struct, including ->bpf_storage member] [RLIMIT_NPROC check fails] delayed_free_task free_task bpf_task_storage_free rcu_dereference(task->bpf_storage) bpf_local_storage_destroy In this case, the nascent task's ->bpf_storage member that bpf_local_storage_destroy() operates on is a plain copy of the parent's ->bpf_storage pointer, not a real initialized pointer. This leads to badness (kernel hangs, UAF). This is reachable as long as the process calling fork() has been inserted into a task storage map.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
a10787e6d58c24b51e91c19c6d16c5da89fcaa4b to < 7df67a4799067a59e6a2d53f8059a6be6e73e678affecteda10787e6d58c24b51e91c19c6d16c5da89fcaa4b to < aff686efd38728e06daf12417a0d7ed454ce4cffaffecteda10787e6d58c24b51e91c19c6d16c5da89fcaa4b to < c3fd6f28c7ce1142a3b23dbb840eaa4777de1d74affecteda10787e6d58c24b51e91c19c6d16c5da89fcaa4b to < 9cff220ddb65b022cc668bb652200742476e744caffecteda10787e6d58c24b51e91c19c6d16c5da89fcaa4b to < c4f626ddf2350652ad2f79daf1f10847f3f6eabdaffecteda10787e6d58c24b51e91c19c6d16c5da89fcaa4b to < 43f0005f81b8ce3be962d653cde8db9022f1e9b0affecteda10787e6d58c24b51e91c19c6d16c5da89fcaa4b to < 9b51a6155d14389876916726430da30eabb1d4edaffected
Linux Linux
Default version status: affected
5.13affected0 to < 5.13unaffected5.15.217 to ≤ 5.15.*unaffected6.1.184 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/7df67a4799067a59e6a2d53f8059a6be6e73e678 ↗
- https://git.kernel.org/stable/c/aff686efd38728e06daf12417a0d7ed454ce4cff ↗
- https://git.kernel.org/stable/c/c3fd6f28c7ce1142a3b23dbb840eaa4777de1d74 ↗
- https://git.kernel.org/stable/c/9cff220ddb65b022cc668bb652200742476e744c ↗
- https://git.kernel.org/stable/c/c4f626ddf2350652ad2f79daf1f10847f3f6eabd ↗
- https://git.kernel.org/stable/c/43f0005f81b8ce3be962d653cde8db9022f1e9b0 ↗
- https://git.kernel.org/stable/c/9b51a6155d14389876916726430da30eabb1d4ed ↗