Re: [RFC][PATCH 0/8] Mount, FS, Block and Keyrings notifications [ver #2]
From: Andy Lutomirski <luto@kernel.org>
Date: 2019-06-04 21:06:16
Also in:
keyrings, linux-api, linux-block, linux-fsdevel, lkml
On Tue, Jun 4, 2019 at 1:31 PM Casey Schaufler [off-list ref] wrote:
n 6/4/2019 10:43 AM, Andy Lutomirski wrote:quoted
On Tue, Jun 4, 2019 at 9:35 AM David Howells [off-list ref] wrote:quoted
Hi Al, Here's a set of patches to add a general variable-length notification queue concept and to add sources of events for:I asked before and didn't see a response, so I'll ask again. Why are you paying any attention at all to the creds that generate an event? It seems like the resulting security model will be vary hard to understand and probably buggy. Can't you define a sensible model in which only the listener creds matter?We've spent the last 18 months reeling from the implications of what can happen when one process has the ability to snoop on another. Introducing yet another mechanism that is trivial to exploit is a very bad idea.
If you're talking about Spectre, etc, this is IMO entirely irrelevant. Among other things, setting these watches can and should require some degree of privilege.
I will try to explain the problem once again. If process A sends a signal (writes information) to process B the kernel checks that either process A has the same UID as process B or that process A has privilege to override that policy. Process B is passive in this access control decision, while process A is active.
Are you stating what you see to be a requirement?
Process A must have write access (defined by some policy) to process B's event buffer.
No, stop right here. Process B is monitoring some aspect of the system. Process A is doing something. Process B should need permission to monitor whatever it's monitoring, and process A should have permission to do whatever it's doing. I don't think it makes sense to try to ascribe an identity to the actor doing some action to decide to omit it from the watch -- this has all kinds of correctness issues. If you're writing a policy and you don't like letting process B spy on processes doing various things, then disallow that type of spying.
To implement such a policy requires A's credential,
You may not design a new mechanism that looks at the credential in a context where looking at a credential is invalid unless you have some very strong justification for why all of the known reasons that it's a bad idea don't apply to what you're doing. So, without a much stronger justification, NAK.