BACKPORT: Smack: unify all ptrace accesses in the smack
authorLukasz Pawelczyk <l.pawelczyk@partner.samsung.com>
Tue, 11 Mar 2014 16:07:05 +0000 (17:07 +0100)
committerRafal Krypa <r.krypa@samsung.com>
Thu, 30 Jun 2016 12:57:33 +0000 (14:57 +0200)
commit3435d69e71d33e6bd190ce043a88936cbbce7460
treeeda53e051563e4ae59e6c7451b07591d3127adfc
parent00e2a9e3d70e132ba96e941491543449c1170a55
BACKPORT: Smack: unify all ptrace accesses in the smack

The decision whether we can trace a process is made in the following
functions:
smack_ptrace_traceme()
smack_ptrace_access_check()
smack_bprm_set_creds() (in case the proces is traced)

This patch unifies all those decisions by introducing one function that
checks whether ptrace is allowed: smk_ptrace_rule_check().

This makes possible to actually trace with TRACEME where first the
TRACEME itself must be allowed and then exec() on a traced process.

Additional bugs fixed:
- The decision is made according to the mode parameter that is now correctly
  translated from PTRACE_MODE_* to MAY_* instead of being treated 1:1.
  PTRACE_MODE_READ requires MAY_READ.
  PTRACE_MODE_ATTACH requires MAY_READWRITE.
- Add a smack audit log in case of exec() refused by bprm_set_creds().
- Honor the PTRACE_MODE_NOAUDIT flag and don't put smack audit info
  in case this flag is set.

Signed-off-by: Lukasz Pawelczyk <l.pawelczyk@partner.samsung.com>
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
(cherry-picked from upstream 5663884caab166f87ab8c68ec7c62b1cce85a400)
security/smack/smack_lsm.c