All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manuel Bouyer <bouyer@antioche.eu.org>
To: Ian Jackson <iwj@xenproject.org>
Cc: "Roger Pau Monné" <roger.pau@citrix.com>,
	"George Dunlap" <george.dunlap@citrix.com>,
	xen-devel@lists.xenproject.org, "Wei Liu" <wl@xen.org>,
	"Anthony PERARD" <anthony.perard@citrix.com>
Subject: Re: [PATCH] libs/light: make it build without setresuid()
Date: Wed, 20 Jan 2021 17:56:15 +0100	[thread overview]
Message-ID: <20210120165615.GB5035@antioche.eu.org> (raw)
In-Reply-To: <24584.19725.745755.464840@mariner.uk.xensource.com>

On Wed, Jan 20, 2021 at 03:32:29PM +0000, Ian Jackson wrote:
> Manuel Bouyer writes ("Re: [PATCH] libs/light: make it build without setresuid()"):
> > On Wed, Jan 20, 2021 at 02:52:06PM +0000, Ian Jackson wrote:
> > > I don't think setuid is safe - at least, if we are trying to restrict
> > > the dm.  Since I think after the libxl child is forked, and has called
> > 
> > What is the dm in this case ? qemu ? On NetBSD qemu runs as root AFAIK,
> > so there isn't much to protect.
> 
> Yes, the dm is qemu.  If qemu restriction is not supported, that makes
> a big difference.  The complex situation here is to do with trying to
> kill a possibly hostile qemu.

Hum, I'll have to check this (how to check, BTW ?).
I assumed qemu was running as root but it may not be completely true.
Especially as I notice, now that I'm re-reading the patch, that
we're doing a kill to -1. If we were doing so as root, user processes
would be killed.

> 
> > > setuid, it might be traceable (by NetBSD's equivalent of ptrace) by
> > > the dm.  The dm could puppet it into pretending it had succeeded, but
> > > then hang around until the domid is reused.
> > 
> > I don't understand. We're talking about a simple kill(2) syscall here.
> 
> If we're not trying to restrict qemu's privilege at all, then I think
> the setuid is fine.
> There are then only two remaining concerns I have
> with this patch:
> 
> Firstly, we try to avoid #ifdefs like this.  It tends to make the code
> rather tangled, especially over time.  Instead we prefer to move the
> non-portable code into its own file, eg *_linux.c.
> 
> Secondly, I think we should check that dm_restrict is not enabled.
> I think an assert would do since I think we believe this is already
> prevented elsewhere ?
> 
> (One option for making this work would be to simply disable the
> killing by uid on NetBSD.  But I don't think that's a good answer
> because killing by uid after eg setuid is more reliable even if it is
> not 100% bulletproof.  So switching to setuid or maybe setreuid is the
> right answer.)

This would have to be checked, but I don't think a non-root process
can ptrace a process whose saved-user-id is root.

Actually I think I could mimic the setresuid() with setreuid() and seteuid().

> 
> > OK so if I understand properly, you say Xen should not be used on NetBSD ?
> 
> I'm sorry to have offended and discouraged you.  That was not my
> intention.  My apologies for sending an off-putting message.  For the
> avoidance of any doubt, definitely don't think that.  We should make
> this work properly.
> 
> Would you be willing to look into the two points I mention above and
> send a revised version of the patch ?  If you find the refactoring
> awkward I or Roger can help.

Actually I don't see how I could split this in a different file, without
lot of duplicate code (even in just kill_device_model_uid_child(),
we're talking of about 7 lines of code out of 75). So some guidance here
would be welcome.

-- 
Manuel Bouyer <bouyer@antioche.eu.org>
     NetBSD: 26 ans d'experience feront toujours la difference
--


  reply	other threads:[~2021-01-20 16:56 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-12 18:12 [PATCH] Fix error: array subscript has type 'char' Manuel Bouyer
2021-01-12 18:12 ` [PATCH] NetBSD: Fix lock directory path Manuel Bouyer
2021-01-15 15:09   ` Roger Pau Monné
2021-01-15 15:13     ` Manuel Bouyer
2021-01-15 15:30       ` Andrew Cooper
2021-01-12 18:12 ` [PATCH] NetBSD hotplug: Introduce locking functions Manuel Bouyer
2021-01-27 15:57   ` Ian Jackson
2021-01-27 19:29     ` Manuel Bouyer
2021-01-28 14:05       ` Ian Jackson
2021-01-12 18:12 ` [PATCH] NetBSD hotplug: fix block unconfigure on destroy Manuel Bouyer
2021-01-15 15:27   ` Roger Pau Monné
2021-01-26 16:47     ` Manuel Bouyer
2021-01-27  9:40       ` Roger Pau Monné
2021-01-27  9:47         ` Manuel Bouyer
2021-01-12 18:12 ` [PATCH] NetBSD hotplug: handle case where vifname is not present Manuel Bouyer
2021-01-15 16:06   ` Roger Pau Monné
2021-01-26 16:49     ` Manuel Bouyer
2021-01-12 18:12 ` [PATCH] NetBSD: remove xenbackendd Manuel Bouyer
2021-01-15 15:31   ` Roger Pau Monné
2021-01-18 18:31     ` Andrew Cooper
2021-01-18 18:41       ` Manuel Bouyer
2021-01-12 18:12 ` [PATCH] NetBSD: use system-provided headers Manuel Bouyer
2021-01-15 16:01   ` Roger Pau Monné
2021-01-12 18:12 ` [PATCH] gdbsx: use right path for privcmd Manuel Bouyer
2021-01-18 18:03   ` Roger Pau Monné
2021-01-18 18:45     ` Andrew Cooper
2021-01-18 19:05       ` Manuel Bouyer
2021-01-12 18:12 ` [PATCH] libs/call: fix build on NetBSD Manuel Bouyer
2021-01-18 18:00   ` Roger Pau Monné
2021-01-12 18:12 ` [PATCH] libs/evtchn: " Manuel Bouyer
2021-01-18 18:01   ` Roger Pau Monné
2021-01-12 18:12 ` [PATCH] libs/foreignmemory: Implement " Manuel Bouyer
2021-01-18 17:49   ` Roger Pau Monné
2021-01-12 18:12 ` [PATCH] libs/gnttab: implement " Manuel Bouyer
2021-01-18 17:54   ` Roger Pau Monné
2021-01-26 17:05     ` Manuel Bouyer
2021-01-27  9:31       ` Roger Pau Monné
2021-01-12 18:12 ` [PATCH] libs/light: Switch NetBSD to QEMU_XEN Manuel Bouyer
2021-01-18 17:28   ` Roger Pau Monné
2021-01-12 18:12 ` [PATCH] libs/light: fix tv_sec printf format Manuel Bouyer
2021-01-18 18:19   ` Roger Pau Monné
2021-01-12 18:12 ` [PATCH] libs/light: fix uuid on NetBSD Manuel Bouyer
2021-01-15 17:27   ` Roger Pau Monné
2021-01-12 18:12 ` [PATCH] libs/light: make it build without setresuid() Manuel Bouyer
2021-01-18 18:16   ` Roger Pau Monné
2021-01-20 14:52     ` Ian Jackson
2021-01-20 15:13       ` Manuel Bouyer
2021-01-20 15:32         ` Ian Jackson
2021-01-20 16:56           ` Manuel Bouyer [this message]
2021-01-20 17:10             ` Ian Jackson
2021-01-20 17:20               ` Manuel Bouyer
2021-01-20 17:29                 ` Ian Jackson
2021-01-27 16:03                   ` Ian Jackson
2021-01-27 19:34                     ` Manuel Bouyer
2021-01-28 11:39                       ` Ian Jackson
2021-01-30 11:57                         ` Manuel Bouyer
2021-01-12 18:12 ` [PATCH] libs/light: pass some infos to qemu Manuel Bouyer
2021-01-16 10:16   ` Roger Pau Monné
2021-01-16 11:25     ` Manuel Bouyer
2021-01-18  8:36       ` Roger Pau Monné
2021-01-18  8:52         ` Manuel Bouyer
2021-01-18  9:07           ` Roger Pau Monné
2021-01-18  9:24             ` Manuel Bouyer
2021-01-26 22:42         ` Manuel Bouyer
2021-01-27  9:06           ` Roger Pau Monné
2021-01-27  9:49             ` Manuel Bouyer
2021-01-12 18:12 ` [PATCH] libs/store: make build without PTHREAD_STACK_MIN Manuel Bouyer
2021-01-18 18:18   ` Roger Pau Monné
2021-01-18 18:56   ` Andrew Cooper
2021-01-18 19:05     ` Manuel Bouyer
2021-01-12 18:12 ` [PATCH] ocaml/libs/eventchn: drop unneeded evtchn.h Manuel Bouyer
2021-01-13  9:22   ` Christian Lindig
2021-01-13  9:40     ` Manuel Bouyer
2021-01-12 18:12 ` [PATCH] xenpaging.c: include errno.h Manuel Bouyer
2021-01-15 16:08   ` Roger Pau Monné
2021-01-12 18:12 ` [PATCH] xenpmd.c: use dynamic allocation Manuel Bouyer
2021-01-27 15:57   ` Ian Jackson
2021-01-12 18:12 ` [PATCH] xenstat_netbsd: remove usused code Manuel Bouyer
2021-01-18 18:06   ` Roger Pau Monné
2021-01-14 10:53 ` [PATCH] Fix error: array subscript has type 'char' Jan Beulich
2021-01-14 12:29   ` Manuel Bouyer
2021-01-14 13:25     ` Jan Beulich
2021-01-14 14:16       ` Manuel Bouyer
2021-01-26 17:44         ` Manuel Bouyer
2021-01-26 17:59           ` Ian Jackson
2021-01-27  8:31             ` Jan Beulich
2021-01-27  8:37               ` Jan Beulich
2021-01-27 13:53                 ` [PATCH] Fix error: array subscript has type 'char' [and 1 more messages] Ian Jackson
2021-01-27 14:33                   ` Jan Beulich
2021-01-27 16:21                     ` Ian Jackson
2021-01-27 16:32                       ` Jan Beulich
2021-01-27 16:52                         ` George Dunlap
2021-01-27 17:00                           ` Jan Beulich
2021-01-27 17:00                           ` Ian Jackson
2021-01-18 19:08 ` NetBSD patches Andrew Cooper
2021-01-18 19:11   ` Manuel Bouyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210120165615.GB5035@antioche.eu.org \
    --to=bouyer@antioche.eu.org \
    --cc=anthony.perard@citrix.com \
    --cc=george.dunlap@citrix.com \
    --cc=iwj@xenproject.org \
    --cc=roger.pau@citrix.com \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.