AppArmor: Fix masking of capabilities in complain mode
AppArmor is masking the capabilities returned by capget against the capabilities mask in the profile. This is wrong, in complain mode the profile has effectively all capabilities, as the profile restrictions are not being enforced, merely tested against to determine if an access is known by the profile. This can result in the wrong behavior of security conscience applications like sshd which examine their capability set, and change their behavior accordingly. In this case because of the masked capability set being returned sshd fails due to DAC checks, even when the profile is in complain mode. Kernels affected: 2.6.36 - 3.0. Signed-off-by: John Johansen <john.johansen@canonical.com>
This commit is contained in:
parent
04fdc099f9
commit
25e75dff51
1 changed files with 1 additions and 1 deletions
|
@ -127,7 +127,7 @@ static int apparmor_capget(struct task_struct *target, kernel_cap_t *effective,
|
||||||
*inheritable = cred->cap_inheritable;
|
*inheritable = cred->cap_inheritable;
|
||||||
*permitted = cred->cap_permitted;
|
*permitted = cred->cap_permitted;
|
||||||
|
|
||||||
if (!unconfined(profile)) {
|
if (!unconfined(profile) && !COMPLAIN_MODE(profile)) {
|
||||||
*effective = cap_intersect(*effective, profile->caps.allow);
|
*effective = cap_intersect(*effective, profile->caps.allow);
|
||||||
*permitted = cap_intersect(*permitted, profile->caps.allow);
|
*permitted = cap_intersect(*permitted, profile->caps.allow);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue