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)
committerStephane Desneux <stephane.desneux@open.eurogiciel.org>
Tue, 25 Nov 2014 09:08:30 +0000 (10:08 +0100)
commitf9ddb212e091949c27b5461015e817455f40a1fc
tree0c8d1e3201aebb689e08a3521f6ef2bc0e82fb1e
parent78cb905ed59e8b3c7c37c0ab562549aa105502d6
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.

Change-Id: I14d6de0c11ce190e53788a0b4fc096471506c736
Signed-off-by: Lukasz Pawelczyk <l.pawelczyk@partner.samsung.com>
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
security/smack/smack_lsm.c