ANDROID: bpf: validate bpf_func when BPF_JIT is enabled with CFI
authorSami Tolvanen <samitolvanen@google.com>
Wed, 4 Sep 2019 21:08:16 +0000 (14:08 -0700)
committerCosmin Tanislav <demonsingur@gmail.com>
Thu, 16 May 2024 07:58:22 +0000 (10:58 +0300)
commit979c6bcfffd94207be4516f5eb9e530a64d49feb
treeaff4dc1ecacd1c71e006845f590a552bd25c436a
parentc89a36c5ef2d5d5986362c40807cf2985bd5cdcf
ANDROID: bpf: validate bpf_func when BPF_JIT is enabled with CFI

With CONFIG_BPF_JIT, the kernel makes indirect calls to dynamically
generated code, which the compile-time Control-Flow Integrity (CFI)
checking cannot validate. This change adds basic sanity checking to
ensure we are jumping to a valid location, which narrows down the
attack surface on the stored pointer.

In addition, this change adds a weak arch_bpf_jit_check_func function,
which architectures that implement BPF JIT can override to perform
additional validation, such as verifying that the pointer points to
the correct memory region.

Bug: 140377409
Change-Id: I8ebac6637ab6bd9db44716b1c742add267298669
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
include/linux/filter.h
kernel/bpf/core.c
net/Kconfig