On 04/04/2019 08:22 AM, Andrey Ignatov wrote:
> v2->v3:
> - sanity check max value for variable offset.
> 
> v1->v2:
> - rely on meta = NULL to reject var_off stack access to uninit buffer.
> 
> This patch set is a follow-up for discussion [1].
> 
> It fixes variable offset stack access handling for raw and unprivileged
> mode, rejecting both of them, and sanity checks max variable offset value.
> 
> Patch 1 handles raw (uninitialized) mode.
> Patch 2 adds test for raw mode.
> Patch 3 handles unprivileged mode.
> Patch 4 adds test for unprivileged mode.
> Patch 5 adds sanity check for max value of variable offset.
> Patch 6 adds test for variable offset max value checking.
> Patch 7 is a minor fix in verbose log.
> 
> Unprivileged mode is an interesting case since one (and only?) way to come
> up with variable offset is to use pointer arithmetics. Though pointer
> arithmetics is already prohibited for unprivileged mode. I'm not sure if
> it's enough though and it seems like a good idea to still reject variable
> offset for unpriv in check_stack_boundary(). Please see patches 3 and 4 for
> more details on this.
> 
> [1] https://marc.info/?l=linux-netdev&m=155419526427742&w=2
> 
> 
> Andrey Ignatov (7):
>   bpf: Reject indirect var_off stack access in raw mode
>   selftests/bpf: Test indirect var_off stack access in raw mode
>   bpf: Reject indirect var_off stack access in unpriv mode
>   selftests/bpf: Test indirect var_off stack access in unpriv mode
>   bpf: Sanity check max value for var_off stack access
>   selftests/bpf: Test unbounded var_off stack access
>   bpf: Add missed newline in verifier verbose log
> 
>  kernel/bpf/verifier.c                         |  45 ++++++-
>  .../testing/selftests/bpf/verifier/var_off.c  | 111 +++++++++++++++++-
>  2 files changed, 150 insertions(+), 6 deletions(-)
> 

Applied, thanks!

Reply via email to