The problem with the Signal service implementation.
Norman Feske
norman.feske at ...1...
Fri Feb 10 12:10:47 CET 2012
Hi Ivan,
> We were investigating problem of sending big amount of data via network
> in Genode on Fiasco.OC. And we have found out some significant bug of
> the Genode Signal service implementation and we also could provide the
> simple stable solution. As know Packet_stream_rx and Packet_stream_tx
thank you for investigating this issue. This is indeed a problem on all
kernels that use kernel-protected capabilities. (i.e., Fiasco.OC and
NOVA) Actually, there exists an issue-tracker entry for it:
https://github.com/genodelabs/genode/issues/32
Admittedly, I had not realized the significance of this issue for the
packet-steam interface.
> context is redundant. Signal_session_component::submit uses
> Siganl_context_capability only for searching it in the context
> entrypoint (base/src/core/signal_session_component.cc). But the same
> effect could be achieved by searching signal context by a
> badge(local_name()) and then there would not be necessity of capability
> unmarshalling. The decision is quote simple to change the
> Signal_context_capability typedef from Capability<Signal_context> to
> simple int or long type (base/include/signla_session/signal_session.h)
> and then to fix all errors generated by compiler. So we think that this
> problem of Signal service is significant and has to be fixed as quick as
> possible. But of course we'll glad to hear any your remarks about the
> decision to use the capability is a sense of Signal_context.
Unfortunately, a real solution for the problem is not as simple as that.
You are right that the badge is used as a key for looking up the
signal-context within core. But by passing the badge as plain data
instead of a capability, the referred signal context could be forged by
the client. This way, a malicious client would be able to submit signals
to all signal receivers in the system. The use of capabilities prevents
that.
That said, I think that your fix is better as interim solution than the
current leak of capability selectors.
Thanks a lot for bringing up the issue and for the proposal for a fix.
Your work is much appreciated!
Norman
--
Dr.-Ing. Norman Feske
Genode Labs
http://www.genode-labs.com · http://genode.org
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
More information about the users
mailing list