Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Apr 2023 16:49:21 +0200
From:      Steffen Nurpmeso <steffen@sdaoden.eu>
To:        freebsd-hackers@freebsd.org
Subject:   capsicum(4): .. and SIGTRAP causing syscall really is in siginfo_t.si_errno?
Message-ID:  <20230412144921.8plun%steffen@sdaoden.eu>

next in thread | raw e-mail | index | archive | help
Hello.

I am trying to capsicumize a simple daemon (for learning purposes
as that runs only in the second line behind postfix), and i have
a hard time as that thing is not designed for that (for said
reasons).  And want to say OpenBSD pledge/unveil was very easy,
Linux seccomp required design split with dedicated syslog logger
process as C libraries are a block box etc etc.  (That is needed
for FreeBSD, too, and it keeps the casper out.  One would really
think "just pack it in a ip netns + unshare + capsh or whatever
container, or a jail, and do not do anything regarding such
restrictions in a daemon, my code blow is about 30 percent by
now.)

Anyhow.  Regardless of 13.1-i386 or 12.2-amd64 (despite
no_new_privs) i only see

  capsicum(4) violation (syscall 93, 4, 5, 0); please report this bug

for

  sip->si_errno, sip->si_code, sip->si_signo, sip->si_status);

Mind you (anything but si_errno a sign of despair), i also saw

  capsicum(4) violation (syscall 94, 4, 5, 0); please report this bug

I only ever saw 93 (and the never-existed-it-seems 94), regardless
of whatever syscall was missing still (read(2), the false unlink(2),
fsync(2), .. and what not).  If only realpath(3->2!) would be
accessible, i should have placed the configuration file evaluation
in its own process, that would make reloading much easier.  But
that is my problem, sigh.  Not insult desired, just interested

  $ git show origin/main:sbin | grep /\$ | wc -l
  84
  $ git grep -lE caph?_enter origin/main -- sbin|wc -l
  8

  $ git show origin/main:usr.sbin | grep /\$ | wc -l
  224
  $ git grep -lE caph?_enter origin/main -- usr.sbin|wc -l
  10

  $ git show origin/main:bin | grep /\$ | wc -l
  41
  $ git grep -lE caph?_enter origin/main -- bin|wc -l
  5

  $ git show origin/main:usr.bin | grep /\$ | wc -l
  275
  $ git grep -lE caph?_enter origin/main -- usr.bin|wc -l
  42

to see how hard to put it onto existing code.  Luckily i test with
that simple thing, so a possibly happening different one can be
designed a bit more conforming from scratch.  But hey, i read

    This takes the usual shortcut of only sandboxing the last input file.
    It's a first cut and this program will be easy to adapt to sandbox all
    files in the future

from a December 2016 commit message, and i like the word "easy".
Ciao,

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20230412144921.8plun%steffen>