bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf v5 0/2] Fix bpf_probe_read_user_str() overcopying
@ 2020-11-11 22:45 Daniel Xu
  2020-11-11 22:45 ` [PATCH bpf v5 1/2] lib/strncpy_from_user.c: Don't overcopy bytes after NUL terminator Daniel Xu
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Daniel Xu @ 2020-11-11 22:45 UTC (permalink / raw)
  To: bpf, linux-kernel, ast, daniel, songliubraving, andrii.nakryiko
  Cc: Daniel Xu, kernel-team

6ae08ae3dea2 ("bpf: Add probe_read_{user, kernel} and probe_read_{user,
kernel}_str helpers") introduced a subtle bug where
bpf_probe_read_user_str() would potentially copy a few extra bytes after
the NUL terminator.

This issue is particularly nefarious when strings are used as map keys,
as seemingly identical strings can occupy multiple entries in a map.

This patchset fixes the issue and introduces a selftest to prevent
future regressions.

v4 -> v5:
* don't read potentially uninitialized memory

v3 -> v4:
* directly pass userspace pointer to prog
* test more strings of different length

v2 -> v3:
* set pid filter before attaching prog in selftest
* use long instead of int as bpf_probe_read_user_str() retval
* style changes

v1 -> v2:
* add Fixes: tag
* add selftest

Daniel Xu (2):
  lib/strncpy_from_user.c: Don't overcopy bytes after NUL terminator
  selftest/bpf: Test bpf_probe_read_user_str() strips trailing bytes
    after NUL

 lib/strncpy_from_user.c                       |  9 ++-
 .../bpf/prog_tests/probe_read_user_str.c      | 71 +++++++++++++++++++
 .../bpf/progs/test_probe_read_user_str.c      | 25 +++++++
 3 files changed, 100 insertions(+), 5 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/prog_tests/probe_read_user_str.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_probe_read_user_str.c

-- 
2.29.2


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2020-11-13 21:14 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-11 22:45 [PATCH bpf v5 0/2] Fix bpf_probe_read_user_str() overcopying Daniel Xu
2020-11-11 22:45 ` [PATCH bpf v5 1/2] lib/strncpy_from_user.c: Don't overcopy bytes after NUL terminator Daniel Xu
2020-11-11 23:20   ` Andrii Nakryiko
2020-11-13 17:03   ` Alexei Starovoitov
2020-11-13 18:08     ` Linus Torvalds
2020-11-13 19:17       ` Alexei Starovoitov
2020-11-13 19:29         ` Linus Torvalds
2020-11-13 19:46         ` Linus Torvalds
2020-11-13 20:10         ` Linus Torvalds
2020-11-13 20:57           ` Alexei Starovoitov
2020-11-13 21:14             ` Linus Torvalds
2020-11-11 22:45 ` [PATCH bpf v5 2/2] selftest/bpf: Test bpf_probe_read_user_str() strips trailing bytes after NUL Daniel Xu
2020-11-11 23:22 ` [PATCH bpf v5 0/2] Fix bpf_probe_read_user_str() overcopying Andrii Nakryiko
2020-11-12 19:10   ` Daniel Xu
2020-11-12 19:24     ` Andrii Nakryiko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).