On Mon, 2016-01-18 at 14:15 +0100, Miroslav Lichvar wrote:
> On Mon, Jan 18, 2016 at 11:02:44AM +0100, Nikos Mavrogiannopoulos
> wrote:
> > As Florian suggested it makes more sense to compartmentalize chrony
> > so
> > that only a small controlled part of it needs to run with seccomp.
> > My
> > recommendation, if you want to use libraries in the filtered code,
> > make
> > their authors aware of that, so that they document any changes in
> > the
> > used system calls, and if possible ask them to document the
> > existing
> > system calls used (e.g., similarly to:
> > http://www.gnutls.org/manual/html_node/Running-in-a-sandbox.html )
> 
> chronyd doesn't use libc for much more than that. There is memory
> allocation, reading/writing system clock, reading/writing/moving
> files, creating/connecting/binding sockets, receiving/sending
> packets, and select(). Name resolving is now out of the filter. The
> only other library that's currently used after the seccomp filter is
> loaded is freebl3 from NSS.
> 
> I guess some of that could be moved to the helper process. If only
> the most dangerous code (whatever that is) should run with seccomp,
> I'm not sure if there is a layer where a clean small cut could be
> made. I suspect the interface between the two processes would be huge
> and it would bloat the code significantly.

If you have complex structures to be transfered you may want to rely on
something automated to serialize/deserialize requests. That will
increase the code, but reduce the complexity. I've used protocol
buffers over unix sockets for that exact reason and I'm pretty happy
with it.

regards,
Nikos
--
devel mailing list
devel@lists.fedoraproject.org
http://lists.fedoraproject.org/admin/lists/devel@lists.fedoraproject.org

Reply via email to