• Daniel Borkmann's avatar
    bpf: don't let ldimm64 leak map addresses on unprivileged · 0d0e5769
    Daniel Borkmann authored
    The patch fixes two things at once:
    
    1) It checks the env->allow_ptr_leaks and only prints the map address to
       the log if we have the privileges to do so, otherwise it just dumps 0
       as we would when kptr_restrict is enabled on %pK. Given the latter is
       off by default and not every distro sets it, I don't want to rely on
       this, hence the 0 by default for unprivileged.
    
    2) Printing of ldimm64 in the verifier log is currently broken in that
       we don't print the full immediate, but only the 32 bit part of the
       first insn part for ldimm64. Thus, fix this up as well; it's okay to
       access, since we verified all ldimm64 earlier already (including just
       constants) through replace_map_fd_with_map_ptr().
    
    Fixes: 1be7f75d ("bpf: enable non-root eBPF programs")
    Fixes: cbd35700 ("bpf: verifier (add ability to receive verification log)")
    Reported-by: default avatarJann Horn <jannh@google.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0d0e5769
verifier.c 102 KB