Am 2014-01-06 16:05, schrieb Martin Peres:
As I said before, I think trusting applications is taking the problem
the wrong way.

What we want is that a screenshot can only happen when the *user* wants it.
This is why I think it is the desktop shell's job to launch the
screenshot app when
required by the user. In this case, even if the user can select the application that can perform a screen shot and even if a malicious application changes
the default setting, it won't be able to perform screenshots silently.
This is what
we want.

It's just not flexible enough. What if you want to autostart a screen-reader?

By allowing some programs (and not the action), you expose yourself to
letting the
application record the screen without the user knowing and this is not
acceptable.

You would only allow certain functionality to trusted programs. If the program
does something unexpected or malicious you should not trust the program.
You would also know which program uses which functionality so you could inform
the user about it.

My proposal is that it should require a physical key pressing to be
able to get ONE
screenshot means we also require a secure input method and can attest the origin of the key stroke but what else can be do? Of course, you should also allow key strokes from the on-screen keyboard, but this application should be launched
by the compositor and should be trusted anyway. I should talk to Peter
Hutterer about
input security/origin.

Like I said, I think it's too inflexible.

Martin, I would rather not use cgroups for that because it isn't
stable yet and I'm sure
we can find a solution that doesn't depend on it.

I do agree on this one but I'm not even sure how cgroups would be useful.


The problem we have is relatively simple. We want a protocol to be restricted to
certain clients. Which means:
1. The program of the client must not be manipulated by ptrace, LD_PRELOAD etc. 2. The communication must be separate from other clients to prevent snooping
3. The compositor must decide if a client may use the protocol or not

The only way I know to achieve 1. is by starting the program by another trusted
application. The compositor is one of them.

Making the communication separate works by passing a new socket to the program and the only way I know of is by passing it to the program when starting it.

To decide if a client may use a protocol we could outsource the whole decision to polkit and just pass enough information so it can make a good decision.

All in all I think the best and most simple way to do it is by starting the
program by the compositor, passing a new socket, then let the client ask
for permission to use a protocol and pass the request to polkit.

The permission would be per-connection so if a program started by the
compositor starts another program with a client it would have the same
permission as the parent.

That also means that we need a protocol to tell the compositor to start a program with a new socket and a protocol to ask the compositor for permission.

Polkit should be flexible enough to allow a protocol based on how a program was started. You could configure polkit that if the compositor started a program because of a key-binding it has permission to use a protocol and stuff like that.
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to