Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| capsicum [2017/06/10 02:48] – Don't ask... BrianKidney | 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) - Done, | * auditdistd(8) - Done, | ||
| * auditreduce(8) (To be merged with new %%OpenBSM%% release) | * auditreduce(8) (To be merged with new %%OpenBSM%% release) | ||
| - | * bspatch(1) - Done, | ||
| * basename(1) (r308432), | * basename(1) (r308432), | ||
| + | * brandelf(1) (r340572), | ||
| + | * bspatch(1) - Done, | ||
| * bhyve(8) [[https:// | * bhyve(8) [[https:// | ||
| * cmp(1) [[https:// | * cmp(1) [[https:// | ||
| Line 38: | Line 40: | ||
| * getopt(1) (r308432), | * getopt(1) (r308432), | ||
| * hastd(8) - Done, hastctl(8), | * hastd(8) - Done, hastctl(8), | ||
| + | * head(1) r340376, | ||
| * hexdump(1) [[https:// | * hexdump(1) [[https:// | ||
| * indent(1) [[https:// | * indent(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) - Done, | + | * ping(8)/ping6(8) - Done, |
| * printenv(1) (r308432), | * printenv(1) (r308432), | ||
| * procstat(1) - Done, | * procstat(1) - Done, | ||
| + | * rtsol(8), rtsold(8) (r342788) | ||
| * rwho(1) - Done, | * rwho(1) - Done, | ||
| * rwhod(8) - Done, | * rwhod(8) - Done, | ||
| + | * savecore(8) (r342699) | ||
| * sleep(1) (r308432), | * sleep(1) (r308432), | ||
| * soelim(1) [[https:// | * soelim(1) [[https:// | ||
| Line 65: | Line 70: | ||
| * units(1) - Done, | * units(1) - Done, | ||
| * uniq(1) - Done, | * 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/ | ||