bpf: Protect probed address based on kptr_restrict setting
authorYafang Shao <laoar.shao@gmail.com>
Sun, 9 Jul 2023 02:56:24 +0000 (02:56 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 12 Jul 2023 03:07:51 +0000 (20:07 -0700)
The probed address can be accessed by userspace through querying the task
file descriptor (fd). However, it is crucial to adhere to the kptr_restrict
setting and refrain from exposing the address if it is not permitted.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20230709025630.3735-5-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
kernel/trace/trace_kprobe.c

index 1b3fa7b854aa7c5384a2037ca8fe8cb19f61de9b..249eb14d0f7aba79884a94c6a8d669aff6b6cc80 100644 (file)
@@ -1551,7 +1551,10 @@ int bpf_get_kprobe_info(const struct perf_event *event, u32 *fd_type,
        } else {
                *symbol = NULL;
                *probe_offset = 0;
-               *probe_addr = (unsigned long)tk->rp.kp.addr;
+               if (kallsyms_show_value(current_cred()))
+                       *probe_addr = (unsigned long)tk->rp.kp.addr;
+               else
+                       *probe_addr = 0;
        }
        return 0;
 }