Subject: CVE-2024-26591: bpf: Fix re-attachment branch in bpf_tracing_prog_attach

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

bpf: Fix re-attachment branch in bpf_tracing_prog_attach

The following case can cause a crash due to missing attach_btf:

1) load rawtp program
2) load fentry program with rawtp as target_fd
3) create tracing link for fentry program with target_fd = 0
4) repeat 3

In the end we have:

- prog->aux->dst_trampoline == NULL
- tgt_prog == NULL (because we did not provide target_fd to link_create)
- prog->aux->attach_btf == NULL (the program was loaded with attach_prog_fd=X)
- the program was loaded for tgt_prog but we have no way to find out which one

    BUG: kernel NULL pointer dereference, address: 0000000000000058
    Call Trace:
     <TASK>
     ? __die+0x20/0x70
     ? page_fault_oops+0x15b/0x430
     ? fixup_exception+0x22/0x330
     ? exc_page_fault+0x6f/0x170
     ? asm_exc_page_fault+0x22/0x30
     ? bpf_tracing_prog_attach+0x279/0x560
     ? btf_obj_id+0x5/0x10
     bpf_tracing_prog_attach+0x439/0x560
     __sys_bpf+0x1cf4/0x2de0
     __x64_sys_bpf+0x1c/0x30
     do_syscall_64+0x41/0xf0
     entry_SYSCALL_64_after_hwframe+0x6e/0x76

Return -EINVAL in this situation.

The Linux kernel CVE team has assigned CVE-2024-26591 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 5.13 with commit f3a95075549e and fixed in 5.15.148 with commit a7b98aa10f89
	Issue introduced in 5.13 with commit f3a95075549e and fixed in 6.1.75 with commit 6cc9c0af0aa0
	Issue introduced in 5.13 with commit f3a95075549e and fixed in 6.6.14 with commit 8c8bcd45e9b1
	Issue introduced in 5.13 with commit f3a95075549e and fixed in 6.7.2 with commit 50ae82f080cf
	Issue introduced in 5.13 with commit f3a95075549e and fixed in 6.8 with commit 715d82ba636c

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2024-26591
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	kernel/bpf/syscall.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/a7b98aa10f895e2569403896f2d19b73b6c95653
	https://git.kernel.org/stable/c/6cc9c0af0aa06f781fa515a1734b1a4239dfd2c0
	https://git.kernel.org/stable/c/8c8bcd45e9b10eef12321f08d2e5be33d615509c
	https://git.kernel.org/stable/c/50ae82f080cf87e84828f066c31723b781d68f5b
	https://git.kernel.org/stable/c/715d82ba636cb3629a6e18a33bb9dbe53f9936ee