]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
apparmor: force audit on unconfined exec if info is set by find_attach
authorRyan Lee <ryan.lee@canonical.com>
Fri, 2 May 2025 00:55:43 +0000 (17:55 -0700)
committerJohn Johansen <john.johansen@canonical.com>
Mon, 26 May 2025 03:15:01 +0000 (20:15 -0700)
find_attach may set info if something unusual happens during that process
(currently only used to signal conflicting attachments, but this could be
expanded in the future). This is information that should be propagated to
userspace via an audit message.

Signed-off-by: Ryan Lee <ryan.lee@canonical.com>
Signed-off-by: John Johansen <john.johansen@canonical.com>
security/apparmor/domain.c

index a7447d976a315f14069fa264b321c0b2fa554306..4263bb1ee4a8ee02a22fb4a1b34cc9291a2fbc25 100644 (file)
@@ -670,6 +670,22 @@ static struct aa_label *profile_transition(const struct cred *subj_cred,
        if (profile_unconfined(profile)) {
                new = find_attach(bprm, profile->ns,
                                  &profile->ns->base.profiles, name, &info);
+               /* info set -> something unusual that we should report
+                * Currently this is only conflicting attachments, but other
+                * infos added in the future should also be logged by default
+                * and only excluded on a case-by-case basis
+                */
+               if (info) {
+                       /* Because perms is never used again after this audit
+                        * we don't need to care about clobbering it
+                        */
+                       perms.audit |= MAY_EXEC;
+                       perms.allow |= MAY_EXEC;
+                       /* Don't cause error if auditing fails */
+                       (void) aa_audit_file(subj_cred, profile, &perms,
+                               OP_EXEC, MAY_EXEC, name, target, new, cond->uid,
+                               info, error);
+               }
                if (new) {
                        AA_DEBUG(DEBUG_DOMAIN, "unconfined attached to new label");
                        return new;