On 08.03.21 15:50, Miklos Szeredi wrote:
On Mon, Mar 8, 2021 at 2:39 PM Max Reitz <[email protected]> wrote:

Admittedly I’m not yet at the point where I feel comfortable doing
changes to the kernel at all, so if you have the time, I’d appreciate
it.  (If you don’t really have the time, I could try my hand first and
then we’d see.)

I'd hate to context switch away from the fuse leases to the kernel
crypto, so it would have to wait some time...

But I've attached an incomplete patch that just missing the crypto
bits and testing.

Would you mind having a go at it?

Thanks, I’ll look into the crypto stuff and have a go. (Sorry for the delay...)

I’d still prefer a service process instead of putting this in the kernel, but let’s see how complicated it would be. I suppose one problem with putting it into a service process is that doing so wouldn’t help with containers: If containers don’t allow CAP_DAC_READ_SEARCH, we I suppose it’ll be difficult to give it even to such a service process.

One thing that also needs to be solved is how to specify a persistent key. I suppose the idea in your patch is to generate a random key for every new process, but we would need a persistent key. With a service process, it could be configured by the user to use a specific key, or perhaps it has kind of small database and virtiofsd selects its persistent key by a hash of it or some other ID that it has received from the service process.

I don’t know how you’d go making the kernel store persistent keys, though.

Max

So AFAIU you want to put this in the kernel so we can get rid of needing
the capability, because when you can only open handles that were
previously generated for you, there wouldn’t be a security problem, right?

Something like that.

But what about cases where a file is made inaccessible to some process
between generating the handle and later opening it?  E.g. in
/path/to/file, the “to” directory is changed to go-x (and the current
user is not the owner), so opening /path/to/file wouldn’t be possible by
path anymore.  Sure, if the FD remained open, you could still open the
file anyway; but I consider it different in semantics.  (E.g. you could
check that there are no processes that have “file” open anymore, and so
you could assume that it’s now inaccessible.)

That could be a concern, yes.   Requiring CAP_DAC_READ_SEARCH in the
current user namespace, as my template patch does, might mitigate
those worries somewhat.

Thanks,
Miklos


_______________________________________________
Virtio-fs mailing list
[email protected]
https://listman.redhat.com/mailman/listinfo/virtio-fs

Reply via email to