mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
bpf: Fix tcx/netkit detach permissions when prog fd isn't given
This commit fixes a security issue where BPF_PROG_DETACH on tcx or
netkit devices could be executed by any user when no program fd was
provided, bypassing permission checks. The fix adds a capability
check for CAP_NET_ADMIN or CAP_SYS_ADMIN in this case.
Fixes: e420bed025 ("bpf: Add fd-based tcx multi-prog infra with link support")
Signed-off-by: Guillaume Gonnet <ggonnet.linux@gmail.com>
Link: https://lore.kernel.org/r/20260127160200.10395-1-ggonnet.linux@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
35538dba51
commit
ae23bc81dd
@@ -1363,11 +1363,6 @@ free_map_tab:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool bpf_net_capable(void)
|
||||
{
|
||||
return capable(CAP_NET_ADMIN) || capable(CAP_SYS_ADMIN);
|
||||
}
|
||||
|
||||
#define BPF_MAP_CREATE_LAST_FIELD excl_prog_hash_size
|
||||
/* called via syscall */
|
||||
static int map_create(union bpf_attr *attr, bpfptr_t uattr)
|
||||
@@ -4579,6 +4574,8 @@ static int bpf_prog_detach(const union bpf_attr *attr)
|
||||
prog = bpf_prog_get_type(attr->attach_bpf_fd, ptype);
|
||||
if (IS_ERR(prog))
|
||||
return PTR_ERR(prog);
|
||||
} else if (!bpf_mprog_detach_empty(ptype)) {
|
||||
return -EPERM;
|
||||
}
|
||||
} else if (is_cgroup_prog_type(ptype, 0, false)) {
|
||||
if (attr->attach_flags || attr->relative_fd)
|
||||
|
||||
Reference in New Issue
Block a user