Re: [PATCH bpf-next v4 2/2] bpftool: Fix UAF in get_delegate_value
From: Andrii Nakryiko
Date: Fri Sep 19 2025 - 18:38:10 EST
On Thu, Sep 18, 2025 at 8:48 PM Tao Chen <chen.dylane@xxxxxxxxx> wrote:
>
> The return value ret pointer is pointing opts_copy, but opts_copy
> gets freed in get_delegate_value before return, fix this by free
> the mntent->mnt_opts strdup memory after show delegate value.
>
> Fixes: 2d812311c2b2 ("bpftool: Add bpf_token show")
> Signed-off-by: Tao Chen <chen.dylane@xxxxxxxxx>
> ---
> tools/bpf/bpftool/token.c | 90 ++++++++++++++++-----------------------
> 1 file changed, 37 insertions(+), 53 deletions(-)
>
> diff --git a/tools/bpf/bpftool/token.c b/tools/bpf/bpftool/token.c
> index 82b829e44c8..2bbec4c98f2 100644
> --- a/tools/bpf/bpftool/token.c
> +++ b/tools/bpf/bpftool/token.c
> @@ -20,6 +20,16 @@
>
> #define MOUNTS_FILE "/proc/mounts"
>
> +struct {
this should have been static, fixed up when applying
> + const char *header;
> + const char *key;
> +} sets[] = {
> + {"allowed_cmds", "delegate_cmds"},
> + {"allowed_maps", "delegate_maps"},
> + {"allowed_progs", "delegate_progs"},
> + {"allowed_attachs", "delegate_attachs"},
> +};
> +
> static bool has_delegate_options(const char *mnt_ops)
> {
> return strstr(mnt_ops, "delegate_cmds") ||
[...]