Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| capsicum [2017/03/09 19:18] – Capsicumisation of praudit/auditreduce to be merged with new OpenBSM in due course RobertWatson | capsicum [2022/11/07 17:12] (current) – ping6 and ping are now the same binary, and both use casper AlanSomers | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Capsicum technologies ====== | ====== Capsicum technologies ====== | ||
| Capsicum consists of various technologies: | Capsicum consists of various technologies: | ||
| - | * Capability mode, see capsicum(4) and cap_enter(2) for more info. | + | * Capability mode, see [[https:// |
| - | * Capability rights for descriptors, | + | * Capability rights for descriptors, |
| - | * Casper daemon, casper services | + | * Casper daemon, casper services, see [[https:// |
| - | * Name-value pair library - libnv, which is a general purpose name-value pair library, see libnv(3) for more info. | + | * Name-value pair library - libnv, which is a general purpose name-value pair library, see [[https:// |
| ====== More information, | ====== More information, | ||
| Line 15: | Line 15: | ||
| * [[http:// | * [[http:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| ====== Existing examples to follow ====== | ====== Existing examples to follow ====== | ||
| - | * auditdistd(8), | + | * auditdistd(8) |
| * auditreduce(8) (To be merged with new %%OpenBSM%% release) | * auditreduce(8) (To be merged with new %%OpenBSM%% release) | ||
| - | * bspatch(1), | ||
| * basename(1) (r308432), | * basename(1) (r308432), | ||
| + | * brandelf(1) (r340572), | ||
| + | * bspatch(1) - Done, | ||
| * bhyve(8) [[https:// | * bhyve(8) [[https:// | ||
| * cmp(1) [[https:// | * cmp(1) [[https:// | ||
| - | * ctld(8), | + | * ctld(8) |
| * col(1) (r282342), | * col(1) (r282342), | ||
| * dc(1) (r308432), | * dc(1) (r308432), | ||
| * dd(1) [[https:// | * dd(1) [[https:// | ||
| - | * decryptcore(8), | + | * decryptcore(8) |
| - | * dhclient(8), | + | * dhclient(8) |
| * dirname(1)(r308432), | * dirname(1)(r308432), | ||
| * dma-mbox-create [[https:// | * dma-mbox-create [[https:// | ||
| - | * dumpon(8), | + | * dumpon(8) |
| * echo(1) (r308432), | * echo(1) (r308432), | ||
| - | * elfdump(1), | + | * elfdump(1) |
| * factor(6) [[https:// | * factor(6) [[https:// | ||
| * fold(1) (r308432), | * fold(1) (r308432), | ||
| * getopt(1) (r308432), | * getopt(1) (r308432), | ||
| - | * hastd(8), hastctl(8), | + | * hastd(8) |
| + | * head(1) r340376, | ||
| * hexdump(1) [[https:// | * hexdump(1) [[https:// | ||
| * indent(1) [[https:// | * indent(1) [[https:// | ||
| - | * iscsid(8), | + | * iscsid(8) |
| * jot(1) [[https:// | * jot(1) [[https:// | ||
| * last(1) [[https:// | * last(1) [[https:// | ||
| * locate(1) (r308432), | * locate(1) (r308432), | ||
| * logname(1) (r308432), | * logname(1) (r308432), | ||
| - | * kdump(1), | + | * kdump(1) |
| * ktrdump(8) [[https:// | * ktrdump(8) [[https:// | ||
| * md5(1) [[https:// | * md5(1) [[https:// | ||
| Line 52: | Line 55: | ||
| * praudit(8) (To be merged with new %%OpenBSM%% release) | * praudit(8) (To be merged with new %%OpenBSM%% release) | ||
| * primes(6) [[https:// | * primes(6) [[https:// | ||
| - | * ping(8), | + | * ping(8)/ping6(8) - Done, |
| * printenv(1) (r308432), | * printenv(1) (r308432), | ||
| - | * procstat(1), | + | * procstat(1) |
| - | * rwho(1), | + | * rtsol(8), rtsold(8) (r342788) |
| - | * rwhod(8), | + | * rwho(1) |
| + | * rwhod(8) | ||
| + | * savecore(8) (r342699) | ||
| * sleep(1) (r308432), | * sleep(1) (r308432), | ||
| * soelim(1) [[https:// | * soelim(1) [[https:// | ||
| - | * tcpdump(8), | + | * tcpdump(8) |
| * tee(1) [[https:// | * tee(1) [[https:// | ||
| * tr(1) [[https:// | * tr(1) [[https:// | ||
| * traceroute(8) [[https:// | * traceroute(8) [[https:// | ||
| - | * units(1), | + | * units(1) |
| - | * uniq(1), | + | * uniq(1) - Done, |
| + | * wc(1) (r340374), | ||
| * write(1) [[https:// | * write(1) [[https:// | ||
| * yes(1) (r308432). | * yes(1) (r308432). | ||
| Line 70: | Line 76: | ||
| ====== Candidate programs ====== | ====== Candidate programs ====== | ||
| (should be relatively easy to sandbox using Capsicum) | (should be relatively easy to sandbox using Capsicum) | ||
| - | * b64decode(1) [[https:// | ||
| - | * b64encode(1), | ||
| - | * brandelf(1) [[https:// | ||
| - | * compress(1) (CEM: Seems difficult. | ||
| * crontab(1) (CEM: Also seems difficult. | * crontab(1) (CEM: Also seems difficult. | ||
| * elf2aout(1) [[https:// | * elf2aout(1) [[https:// | ||
| - | * file(1) [[https:// | ||
| * finger(1) (CEM: Another difficult one. Lots of surprising filesystem interaction hidden between libc calls; network interaction; | * finger(1) (CEM: Another difficult one. Lots of surprising filesystem interaction hidden between libc calls; network interaction; | ||
| - | * head(1) [[https:// | ||
| - | * jail(8), | ||
| - | * jexec(8), | ||
| * jls(8), | * jls(8), | ||
| - | * patch(1), | + | * true(1), |
| + | * xargs(1), | ||
| + | * dma(8). | ||
| + | |||
| + | ===== Multiple file arguments ===== | ||
| + | |||
| + | Some of those are more tricky, as they take multiple files as arguments and we don't want to open all of them at once before entering the sandbox. | ||
| + | The best way to support this class of utilities is to provide a casperd service which can help iterate through all the files. | ||
| + | * b64decode(1) [[https:// | ||
| + | * b64encode(1) [[https:// | ||
| + | * compress(1) (CEM: Seems difficult. | ||
| + | * file(1) [[https:// | ||
| + | * patch(1) | ||
| * praudit(8) [[https:// | * praudit(8) [[https:// | ||
| * sort(1), | * sort(1), | ||
| Line 89: | Line 99: | ||
| * unzip(1), | * unzip(1), | ||
| * uudecode(1) [[https:// | * uudecode(1) [[https:// | ||
| - | * uuencode(1), | + | * uuencode(1) |
| - | * wc(1), | + | * xstr(1). |
| - | * xargs(1), | + | |
| - | * xstr(1), | + | |
| - | * dma(8). | + | |
| - | + | ||
| - | Some of those are more tricky, as they take multiple files as arguments and we don't want to open all of them at once before entering the sandbox. | + | |
| - | The best way to support this class of utilities is to provide a casperd service which can help iterate through all the files. | + | |
| ===== setuid / setgid binaries ===== | ===== setuid / setgid binaries ===== | ||
| Line 118: | Line 122: | ||
| * sbin/ | * sbin/ | ||
| * sbin/ | * sbin/ | ||
| - | * sbin/ping6 | ||
| * usr.sbin/ | * usr.sbin/ | ||
| * usr.sbin/ | * usr.sbin/ | ||