Remi Locherer([email protected]) on 2018.10.27 23:25:58 +0200:
> On Fri, Oct 26, 2018 at 10:19:01AM -0600, Theo de Raadt wrote:
> > Remi Locherer <[email protected]> wrote:
> >
> > > On Fri, Oct 26, 2018 at 06:01:40PM +0200, Florian Obser wrote:
> > > > This breaks usage of the "include" keyword. Something that all the
> > > > parse.y daemons support.
> > > >
> > >
> > > Oh, of course!
> > >
> > > I guess this is similar to unveil files based on a list of command line
> > > args.
> >
> > correct.
> >
> > Now that unveil is used in the tree, there are 3 types of programs
> >
> > 1) they use unveil
> > 2) they use pledge, heading close towards "stdio" without a "*path"
> > 3) they access arbitrary files based upon argv
> >
> > this is (3), except not argv, it nested inside the config file
> >
> > Well there are maybe 20 programs beyond that which aren't converted yet,
> > but things are looking pretty good.
> >
>
> Since ospfd is not suppose to write or execute files we could make the
> file system read only (with the exception of the control socket).
>
> (Once we can add pledge to ospfd's parent proc this will probably not make
> sense anymore.)
I first wanted to say that this makes it impossible to change the socket...
until i realized that ospfd does not have that option in ospfd.conf (only
on the command line).
Which means i'm fine with this. ok benno@
> cvs diff: Diffing .
> Index: ospfd.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/ospfd/ospfd.c,v
> retrieving revision 1.100
> diff -u -p -r1.100 ospfd.c
> --- ospfd.c 29 Aug 2018 08:43:17 -0000 1.100
> +++ ospfd.c 27 Oct 2018 07:28:58 -0000
> @@ -278,6 +278,13 @@ main(int argc, char *argv[])
> fatalx("control socket setup failed");
> main_imsg_compose_ospfe_fd(IMSG_CONTROLFD, 0, control_fd);
>
> + if (unveil("/", "r") == -1)
> + fatal("unveil");
> + if (unveil(ospfd_conf->csock, "c") == -1)
> + fatal("unveil");
> + if (unveil(NULL, NULL) == -1)
> + fatal("unveil");
> +
> if (kr_init(!(ospfd_conf->flags & OSPFD_FLAG_NO_FIB_UPDATE),
> ospfd_conf->rdomain, ospfd_conf->redist_label_or_prefix) == -1)
> fatalx("kr_init failed");
>