All of lore.kernel.org
 help / color / mirror / Atom feed
From: Casey Schaufler <casey@schaufler-ca.com>
To: Christian Brauner <christian@brauner.io>,
	Paul Moore <paul@paul-moore.com>,
	James Morris <jmorris@namei.org>,
	Linux Security Module list 
	<linux-security-module@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	syzbot <syzbot+d1e3b1d92d25abf97943@syzkaller.appspotmail.com>,
	David Howells <dhowells@redhat.com>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>
Cc: Casey Schaufler <casey@schaufler-ca.com>
Subject: [PATCH] LSM: general protection fault in legacy_parse_param
Date: Mon, 11 Oct 2021 15:40:22 -0700	[thread overview]
Message-ID: <018a9bb4-accb-c19a-5b0a-fde22f4bc822@schaufler-ca.com> (raw)
In-Reply-To: 018a9bb4-accb-c19a-5b0a-fde22f4bc822.ref@schaufler-ca.com

The usual LSM hook "bail on fail" scheme doesn't work for cases where
a security module may return an error code indicating that it does not
recognize an input.  In this particular case Smack sees a mount option
that it recognizes, and returns 0. A call to a BPF hook follows, which
returns -ENOPARAM, which confuses the caller because Smack has processed
its data.

Reported-by: syzbot+d1e3b1d92d25abf97943@syzkaller.appspotmail.com
Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
---
 security/security.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/security/security.c b/security/security.c
index 09533cbb7221..3cf0faaf1c5b 100644
--- a/security/security.c
+++ b/security/security.c
@@ -885,7 +885,19 @@ int security_fs_context_dup(struct fs_context *fc, struct fs_context *src_fc)
 
 int security_fs_context_parse_param(struct fs_context *fc, struct fs_parameter *param)
 {
-	return call_int_hook(fs_context_parse_param, -ENOPARAM, fc, param);
+	struct security_hook_list *hp;
+	int trc;
+	int rc = -ENOPARAM;
+
+	hlist_for_each_entry(hp, &security_hook_heads.fs_context_parse_param,
+			     list) {
+		trc = hp->hook.fs_context_parse_param(fc, param);
+		if (trc == 0)
+			rc = 0;
+		else if (trc != -ENOPARAM)
+			return trc;
+	}
+	return rc;
 }
 
 int security_sb_alloc(struct super_block *sb)



       reply	other threads:[~2021-10-11 22:40 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <018a9bb4-accb-c19a-5b0a-fde22f4bc822.ref@schaufler-ca.com>
2021-10-11 22:40 ` Casey Schaufler [this message]
2021-10-12 10:32   ` [PATCH] LSM: general protection fault in legacy_parse_param Christian Brauner
2021-10-12 14:27     ` Casey Schaufler
2022-01-25 22:18       ` Paul Moore
2022-01-25 23:30         ` Casey Schaufler
2022-01-25 23:36           ` Paul Moore
2022-01-26  7:24         ` Christian Brauner
2022-01-26 22:37           ` Paul Moore
2022-01-27 16:51         ` [PATCH v2] " Casey Schaufler
2022-01-27 17:33           ` James Morris
2022-01-28  1:44             ` Paul Moore
2022-01-28  2:33               ` Casey Schaufler
2022-01-28  8:59           ` Christian Brauner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=018a9bb4-accb-c19a-5b0a-fde22f4bc822@schaufler-ca.com \
    --to=casey@schaufler-ca.com \
    --cc=christian@brauner.io \
    --cc=dhowells@redhat.com \
    --cc=jmorris@namei.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=paul@paul-moore.com \
    --cc=syzbot+d1e3b1d92d25abf97943@syzkaller.appspotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.