Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 1 | Why an applet can't be NOFORK or NOEXEC? |
| 2 | |
| 3 | Why can't be NOFORK: |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 4 | interactive: may wait for user input, ^C has to work |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 5 | spawner: "tool PROG ARGS" which changes program state and execs - must fork |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 6 | changes state: e.g. environment, signal handlers |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 7 | leaks: does not free allocated memory or opened fds |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 8 | alloc+xfunc: xmalloc, then xfunc - leaks memory if xfunc dies |
| 9 | open+xfunc: opens fd, then calls xfunc - fd is leaked if xfunc dies |
Denys Vlasenko | 90ad4ba | 2017-08-08 00:42:15 +0200 | [diff] [blame] | 10 | talks to network/serial/etc: it's not known how long the delay can be, |
| 11 | it's reasonable to expect it might be many seconds |
| 12 | (even if usually it is not), so ^C has to work |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 13 | runner: sometimes may run for long(ish) time, and/or works with network: |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 14 | ^C has to work (cat BIGFILE, chmod -R, ftpget, nc) |
| 15 | |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 16 | "runners" can become eligible after shell is taught ^C to interrupt NOFORKs, |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 17 | need to be inspected that they do not fall into alloc+xfunc, open+xfunc, |
| 18 | leak categories. |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 19 | |
| 20 | Why can't be NOEXEC: |
| 21 | suid: runs under different uid - must fork+exec |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 22 | if it's important that /proc/PID/cmdline and comm are correct. |
| 23 | ("pkill sh" killing itself before it kills real "sh" is no fun) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 24 | |
| 25 | Why shouldn't be NOFORK/NOEXEC: |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 26 | rare: not started often enough to bother optimizing (example: poweroff) |
| 27 | daemon: runs indefinitely; these are also always fit "rare" category |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 28 | longterm: often runs for a long time (many seconds), execing makes |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 29 | memory footprint smaller |
Denys Vlasenko | 7f9d62d | 2017-08-04 16:01:39 +0200 | [diff] [blame] | 30 | complex: no immediately obvious reason why NOFORK wouldn't work, |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 31 | but does some non-obvoius operations (example: fuser, lsof, losetup); |
| 32 | detailed audit often turns out that it's a leaker |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 33 | hardware: performs unusual hardware ops which may take long, |
| 34 | or even hang due to hardware or firmware bugs |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 35 | |
| 36 | Interesting example of "interactive" applet which is nevertheless can be |
| 37 | (and is) NOEXEC is "rm". Yes, "rm -i" is interactive - but it's not that typical |
| 38 | for users to keep it waiting for many minutes, whereas running "rm" in shell |
| 39 | is very typical, and speeding up this common use via NOEXEC is useful. |
| 40 | IOW: rm is "interactive", but not "longterm". |
| 41 | |
Denys Vlasenko | 3bc2317 | 2017-08-09 19:51:17 +0200 | [diff] [blame] | 42 | Interesting example of an applet which can be NOFORK but if not, |
| 43 | then should not be NOEXEC, is "usleep". As NOFORK, it amount to simply |
| 44 | nanosleep()ing in the calling program (usually shell). No memory wasted. |
| 45 | But if ran as NOEXEC, it would create a potentially long-term process, |
| 46 | which would be taking more memory because it did not exec |
| 47 | and did not free much of the copied memory of the parent |
| 48 | (COW helps with this only as long as parent doesn't modify its memory). |
| 49 | |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 50 | |
| 51 | [ - NOFORK |
| 52 | [[ - NOFORK |
| 53 | acpid - daemon |
Denys Vlasenko | 7b8372b | 2017-08-07 00:28:15 +0200 | [diff] [blame] | 54 | add-shell - noexec. leaks: open+xfunc |
| 55 | addgroup - noexec. leaks |
| 56 | adduser - noexec. leaks |
Denys Vlasenko | ed7d118 | 2017-08-06 20:00:21 +0200 | [diff] [blame] | 57 | adjtimex - NOFORK |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 58 | ar - runner |
| 59 | arch - NOFORK |
Denys Vlasenko | 90ad4ba | 2017-08-08 00:42:15 +0200 | [diff] [blame] | 60 | arp - talks to network: arp -n queries DNS |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 61 | arping - longterm |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 62 | ash - interactive, longterm |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 63 | awk - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 64 | base64 - runner |
| 65 | basename - NOFORK |
Denys Vlasenko | 035e715 | 2017-08-06 20:39:27 +0200 | [diff] [blame] | 66 | beep - longterm: beep -r 999999999 |
Denys Vlasenko | 277081e | 2017-08-06 20:20:47 +0200 | [diff] [blame] | 67 | blkdiscard - noexec. leaks: open+xioctl |
Denys Vlasenko | bf18239 | 2017-08-06 20:16:28 +0200 | [diff] [blame] | 68 | blkid - noexec |
Denys Vlasenko | 9f59849 | 2017-08-05 01:29:12 +0200 | [diff] [blame] | 69 | blockdev - noexec. leaks fd |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 70 | bootchartd - daemon |
Denys Vlasenko | 86e07f6 | 2017-08-06 20:14:02 +0200 | [diff] [blame] | 71 | brctl - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 72 | bunzip2 - runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 73 | bzcat - runner |
| 74 | bzip2 - runner |
Denys Vlasenko | cbdc37c | 2018-01-14 14:32:11 +0100 | [diff] [blame] | 75 | cal - noexec. can be runner: cal -n9999 |
Denys Vlasenko | 90ad4ba | 2017-08-08 00:42:15 +0200 | [diff] [blame] | 76 | cat - runner: cat HUGEFILE |
| 77 | chat - longterm (when used as intended - talking to modem over stdin/out) |
Denys Vlasenko | 99125c0 | 2017-08-05 20:38:04 +0200 | [diff] [blame] | 78 | chattr - noexec. runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 79 | chgrp - noexec. runner |
| 80 | chmod - noexec. runner |
| 81 | chown - noexec. runner |
Denys Vlasenko | 90ad4ba | 2017-08-08 00:42:15 +0200 | [diff] [blame] | 82 | chpasswd - longterm? (list of "user:password"s from stdin) |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 83 | chpst - noexec. spawner |
| 84 | chroot - noexec. spawner |
| 85 | chrt - noexec. spawner |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 86 | chvt - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 87 | cksum - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 88 | clear - NOFORK |
| 89 | cmp - runner |
| 90 | comm - runner |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 91 | conspy - interactive, longterm |
Denys Vlasenko | 88663e4 | 2018-01-14 14:41:52 +0100 | [diff] [blame] | 92 | cp - noexec. sometimes runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 93 | cpio - runner |
| 94 | crond - daemon |
Denys Vlasenko | 2262746 | 2017-08-06 17:14:09 +0200 | [diff] [blame] | 95 | crontab - longterm (runs $EDITOR), leaks: open+xasprintf |
Denys Vlasenko | feb79e8 | 2017-08-05 02:08:23 +0200 | [diff] [blame] | 96 | cryptpw - noexec. changes state: with --password-fd=N, moves N to stdin |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 97 | cttyhack - noexec. spawner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 98 | cut - noexec. runner |
| 99 | date - noexec. nofork candidate(needs to stop messing up env, free xasprintf result, not use xfuncs after xasprintf) |
Denys Vlasenko | dbbc3f2 | 2017-08-07 23:30:22 +0200 | [diff] [blame] | 100 | dc - longterm (eats stdin if no params) |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 101 | dd - noexec. runner |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 102 | deallocvt - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | 7b8372b | 2017-08-07 00:28:15 +0200 | [diff] [blame] | 103 | delgroup - noexec. leaks |
| 104 | deluser - noexec. leaks |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 105 | depmod - longterm(ish) |
Denys Vlasenko | fc9efcb | 2017-08-07 22:19:17 +0200 | [diff] [blame] | 106 | devmem - hardware (access to device memory may hang) |
| 107 | df - noexec. leaks: nested allocs |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 108 | dhcprelay - daemon |
| 109 | diff - runner |
| 110 | dirname - NOFORK |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 111 | dmesg - runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 112 | dnsd - daemon |
Denys Vlasenko | 90ad4ba | 2017-08-08 00:42:15 +0200 | [diff] [blame] | 113 | dnsdomainname - noexec. talks to network (may query DNS) |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 114 | dos2unix - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 115 | dpkg - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 116 | du - runner |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 117 | dumpkmap - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | dbbc3f2 | 2017-08-07 23:30:22 +0200 | [diff] [blame] | 118 | dumpleases - noexec. leaks: open+xread |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 119 | echo - NOFORK |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 120 | ed - interactive, longterm |
| 121 | egrep - longterm runner ("CMD | egrep ..." may run indefinitely, better to exec to conserve memory) |
Denys Vlasenko | af5d008 | 2017-08-07 23:23:18 +0200 | [diff] [blame] | 122 | eject - hardware, leaks: open+ioctl_or_perror_and_die, changes state (moves fds) |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 123 | env - noexec. spawner, changes state (env) |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 124 | envdir - noexec. spawner |
| 125 | envuidgid - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 126 | expand - runner |
Denys Vlasenko | af5d008 | 2017-08-07 23:23:18 +0200 | [diff] [blame] | 127 | expr - noexec. leaks: nested allocs |
Denys Vlasenko | dbbc3f2 | 2017-08-07 23:30:22 +0200 | [diff] [blame] | 128 | factor - longterm (eats stdin if no params) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 129 | fakeidentd - daemon |
| 130 | false - NOFORK |
Denys Vlasenko | 354b104 | 2017-08-07 22:21:54 +0200 | [diff] [blame] | 131 | fatattr - noexec. leaks: open+xioctl, complex |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 132 | fbset - hardware, leaks: open+xfunc |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 133 | fbsplash - runner, longterm |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 134 | fdflush - hardware, leaks: open+ioctl_or_perror_and_die |
Denys Vlasenko | 8858a98 | 2017-08-08 01:21:49 +0200 | [diff] [blame] | 135 | fdformat - hardware, longterm |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 136 | fdisk - interactive, longterm |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 137 | fgconsole - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 138 | fgrep - longterm runner ("CMD | fgrep ..." may run indefinitely, better to exec to conserve memory) |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 139 | find - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 140 | findfs - suid |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 141 | flash_eraseall - hardware |
| 142 | flash_lock - hardware |
| 143 | flash_unlock - hardware |
| 144 | flashcp - hardware |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 145 | flock - spawner, changes state (file locks), let's play safe and not be noexec |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 146 | fold - noexec. runner |
Denys Vlasenko | 318c811 | 2017-10-05 14:06:49 +0200 | [diff] [blame] | 147 | free - NOFORK |
Denys Vlasenko | ec98e3a | 2017-08-07 23:17:14 +0200 | [diff] [blame] | 148 | freeramdisk - noexec. leaks: open+ioctl_or_perror_and_die |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 149 | fsck - interactive, longterm |
Denys Vlasenko | 6514785 | 2017-08-04 19:16:01 +0200 | [diff] [blame] | 150 | fsck.minix - needs ^C |
Denys Vlasenko | 9f59849 | 2017-08-05 01:29:12 +0200 | [diff] [blame] | 151 | fsfreeze - noexec. leaks: open+xioctl |
| 152 | fstrim - noexec. leaks: open+xioctl, find_block_device -> readdir+xstrdup |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 153 | fsync - NOFORK |
| 154 | ftpd - daemon |
| 155 | ftpget - runner |
| 156 | ftpput - runner |
| 157 | fuser - complex |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 158 | getopt - noexec. leaks: many allocs |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 159 | getty - interactive, longterm |
| 160 | grep - longterm runner ("CMD | grep ..." may run indefinitely, better to exec to conserve memory) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 161 | groups - noexec |
| 162 | gunzip - runner |
| 163 | gzip - runner |
| 164 | halt - rare |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 165 | hd - noexec. runner |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 166 | hdparm - hardware |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 167 | head - noexec. runner |
| 168 | hexdump - noexec. runner |
Denys Vlasenko | c3e60e1 | 2017-09-18 14:34:15 +0200 | [diff] [blame] | 169 | hexedit - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 170 | hostid - NOFORK |
Denys Vlasenko | 90ad4ba | 2017-08-08 00:42:15 +0200 | [diff] [blame] | 171 | hostname - noexec. talks to network (hostname -d may query DNS) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 172 | httpd - daemon |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 173 | hush - interactive, longterm |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 174 | hwclock - hardware (xioctl(RTC_RD_TIME)) |
| 175 | i2cdetect - hardware |
| 176 | i2cdump - hardware |
| 177 | i2cget - hardware |
| 178 | i2cset - hardware |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 179 | id - noexec |
Denys Vlasenko | ae84418 | 2017-08-07 23:14:49 +0200 | [diff] [blame] | 180 | ifconfig - hardware? (mem_start NN io_addr NN irq NN), leaks: xsocket+ioctl_or_perror_and_die |
| 181 | ifenslave - noexec. leaks: xsocket+bb_perror_msg_and_die |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 182 | ifplugd - daemon |
| 183 | inetd - daemon |
| 184 | init - daemon |
| 185 | inotifyd - daemon |
Denys Vlasenko | 3346b4a | 2017-08-04 02:56:39 +0200 | [diff] [blame] | 186 | insmod - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 187 | install - runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 188 | ionice - noexec. spawner |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 189 | iostat - longterm: "iostat 1" runs indefinitely |
Denys Vlasenko | b63afea | 2017-09-18 15:45:13 +0200 | [diff] [blame] | 190 | ip - noexec |
| 191 | ipaddr - noexec |
Denys Vlasenko | 90ad4ba | 2017-08-08 00:42:15 +0200 | [diff] [blame] | 192 | ipcalc - noexec. ipcalc -h talks to network |
Denys Vlasenko | 3bc2317 | 2017-08-09 19:51:17 +0200 | [diff] [blame] | 193 | ipcrm - noexec |
| 194 | ipcs - noexec |
Denys Vlasenko | b63afea | 2017-09-18 15:45:13 +0200 | [diff] [blame] | 195 | iplink - noexec |
| 196 | ipneigh - noexec |
| 197 | iproute - noexec |
| 198 | iprule - noexec |
| 199 | iptunnel - noexec |
Denys Vlasenko | 9a58cc0 | 2017-08-06 12:28:00 +0200 | [diff] [blame] | 200 | kbd_mode - noexec. leaks: xopen_nonblocking+xioctl |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 201 | kill - NOFORK |
| 202 | killall - NOFORK |
| 203 | killall5 - NOFORK |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 204 | klogd - daemon |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 205 | last - runner (I've got 1300 lines of output when tried it) |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 206 | less - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 207 | link - NOFORK |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 208 | linux32 - noexec. spawner |
| 209 | linux64 - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 210 | linuxrc - daemon |
| 211 | ln - noexec |
Denys Vlasenko | 1b280e4 | 2017-08-06 19:05:45 +0200 | [diff] [blame] | 212 | loadfont - noexec. leaks: config_open+bb_error_msg_and_die("map format") |
Denys Vlasenko | ff53bee | 2017-08-05 02:02:31 +0200 | [diff] [blame] | 213 | loadkmap - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 214 | logger - runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 215 | login - suid, interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 216 | logname - NOFORK |
Denys Vlasenko | ae84418 | 2017-08-07 23:14:49 +0200 | [diff] [blame] | 217 | losetup - noexec. complex |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 218 | lpd - daemon |
| 219 | lpq - runner |
| 220 | lpr - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 221 | ls - noexec. runner |
Denys Vlasenko | 99125c0 | 2017-08-05 20:38:04 +0200 | [diff] [blame] | 222 | lsattr - noexec. runner |
Denys Vlasenko | 3346b4a | 2017-08-04 02:56:39 +0200 | [diff] [blame] | 223 | lsmod - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 224 | lsof - complex |
Denys Vlasenko | 3239ab8 | 2017-08-05 23:28:19 +0200 | [diff] [blame] | 225 | lspci - noexec. too rare to bother for nofork |
| 226 | lsscsi - noexec. too rare to bother for nofork |
| 227 | lsusb - noexec. too rare to bother for nofork |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 228 | lzcat - runner |
| 229 | lzma - runner |
| 230 | lzop - runner |
| 231 | lzopcat - runner |
Denys Vlasenko | 9536ef7 | 2017-08-06 21:47:07 +0200 | [diff] [blame] | 232 | makedevs - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 233 | makemime - runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 234 | man - spawner, interactive, longterm |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 235 | md5sum - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 236 | mdev - daemon |
Denys Vlasenko | 6514785 | 2017-08-04 19:16:01 +0200 | [diff] [blame] | 237 | mesg - NOFORK |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 238 | microcom - interactive, longterm |
Denys Vlasenko | c3e60e1 | 2017-09-18 14:34:15 +0200 | [diff] [blame] | 239 | minips - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 240 | mkdir - NOFORK |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 241 | mkdosfs - needs ^C |
| 242 | mke2fs - needs ^C |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 243 | mkfifo - noexec |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 244 | mkfs.ext2 - needs ^C |
| 245 | mkfs.minix - needs ^C |
| 246 | mkfs.vfat - needs ^C |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 247 | mknod - noexec |
Denys Vlasenko | feb79e8 | 2017-08-05 02:08:23 +0200 | [diff] [blame] | 248 | mkpasswd - noexec. changes state: with --password-fd=N, moves N to stdin |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 249 | mkswap - needs ^C |
Denys Vlasenko | 6bec24c | 2017-08-04 17:39:05 +0200 | [diff] [blame] | 250 | mktemp - noexec. leaks: xstrdup+concat_path_file |
Denys Vlasenko | 3346b4a | 2017-08-04 02:56:39 +0200 | [diff] [blame] | 251 | modinfo - noexec |
| 252 | modprobe - noexec |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 253 | more - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 254 | mount - suid |
Denys Vlasenko | 9f59849 | 2017-08-05 01:29:12 +0200 | [diff] [blame] | 255 | mountpoint - noexec. leaks: option -n "print dev name": find_block_device -> readdir+xstrdup |
Denys Vlasenko | a759b22 | 2017-08-06 14:15:24 +0200 | [diff] [blame] | 256 | mpstat - longterm: "mpstat 1" runs indefinitely |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 257 | mt - hardware |
Denys Vlasenko | 88663e4 | 2018-01-14 14:41:52 +0100 | [diff] [blame] | 258 | mv - noexec. sometimes runner |
Denys Vlasenko | a759b22 | 2017-08-06 14:15:24 +0200 | [diff] [blame] | 259 | nameif - noexec. openlog(), leaks: config_open2+ioctl_or_perror_and_die |
Denys Vlasenko | bfc66d4 | 2017-08-06 21:53:39 +0200 | [diff] [blame] | 260 | nbd-client - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 261 | nc - runner |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 262 | netstat - longterm with -c (continuous listing) |
Denys Vlasenko | 692eeb8 | 2017-08-04 20:07:19 +0200 | [diff] [blame] | 263 | nice - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 264 | nl - runner |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 265 | nmeter - longterm |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 266 | nohup - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 267 | nproc - NOFORK |
| 268 | ntpd - daemon |
Denys Vlasenko | c3e60e1 | 2017-09-18 14:34:15 +0200 | [diff] [blame] | 269 | nuke - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 270 | od - runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 271 | openvt - longterm: spawns a child and waits for it |
Denys Vlasenko | 9c49d6e | 2017-08-05 01:46:39 +0200 | [diff] [blame] | 272 | partprobe - noexec. leaks: open+ioctl_or_perror_and_die(BLKRRPART) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 273 | passwd - suid |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 274 | paste - noexec. runner |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 275 | patch - needs ^C |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 276 | pgrep - must fork+exec to get correct /proc/PID/cmdline and comm field |
| 277 | pidof - must fork+exec to get correct /proc/PID/cmdline and comm field |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 278 | ping - suid, longterm |
| 279 | ping6 - suid, longterm |
Denys Vlasenko | 6514785 | 2017-08-04 19:16:01 +0200 | [diff] [blame] | 280 | pipe_progress - longterm |
Denys Vlasenko | fdb9235 | 2017-08-05 01:51:12 +0200 | [diff] [blame] | 281 | pivot_root - NOFORK |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 282 | pkill - must fork+exec to get correct /proc/PID/cmdline and comm field |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 283 | pmap - noexec candidate, leaks: open+xstrdup |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 284 | popmaildir - runner |
| 285 | poweroff - rare |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 286 | powertop - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 287 | printenv - NOFORK |
| 288 | printf - NOFORK |
Denys Vlasenko | 9a6f62f | 2017-08-10 14:15:52 +0200 | [diff] [blame] | 289 | ps - noexec |
| 290 | pscan - talks to network |
Denys Vlasenko | 00c1811 | 2017-08-05 22:25:00 +0200 | [diff] [blame] | 291 | pstree - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 292 | pwd - NOFORK |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 293 | pwdx - NOFORK |
Denys Vlasenko | a894a4b | 2017-08-06 19:08:46 +0200 | [diff] [blame] | 294 | raidautorun - noexec. very simple. leaks: open+xioctl |
Denys Vlasenko | 90ad4ba | 2017-08-08 00:42:15 +0200 | [diff] [blame] | 295 | rdate - talks to network |
| 296 | rdev - noexec. leaks: find_block_device -> readdir+xstrdup |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 297 | readlink - NOFORK |
Denys Vlasenko | 9536ef7 | 2017-08-06 21:47:07 +0200 | [diff] [blame] | 298 | readprofile - reads /boot/System.map and /proc/profile, better to free more memory by execing? |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 299 | realpath - NOFORK |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 300 | reboot - rare |
| 301 | reformime - runner |
Denys Vlasenko | 7b8372b | 2017-08-07 00:28:15 +0200 | [diff] [blame] | 302 | remove-shell - noexec. leaks: open+xfunc |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 303 | renice - noexec. nofork candidate(uses getpwnam, is that ok?) |
Denys Vlasenko | 692eeb8 | 2017-08-04 20:07:19 +0200 | [diff] [blame] | 304 | reset - noexec. spawner (execs "stty") |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 305 | resize - noexec. changes state (signal handlers) |
Denys Vlasenko | c3e60e1 | 2017-09-18 14:34:15 +0200 | [diff] [blame] | 306 | resume - noexec |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 307 | rev - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 308 | rm - noexec. rm -i interactive |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 309 | rmdir - NOFORK |
Denys Vlasenko | 3346b4a | 2017-08-04 02:56:39 +0200 | [diff] [blame] | 310 | rmmod - noexec |
Denys Vlasenko | 90ad4ba | 2017-08-08 00:42:15 +0200 | [diff] [blame] | 311 | route - talks to network (may query DNS to convert IPs to names) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 312 | rpm - runner |
| 313 | rpm2cpio - runner |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 314 | rtcwake - longterm: puts system to sleep, optimizing this for speed is pointless |
Denys Vlasenko | c3e60e1 | 2017-09-18 14:34:15 +0200 | [diff] [blame] | 315 | run-init - spawner, rare, changes state (oh yes), execing may be important to free binary's inode |
Denys Vlasenko | a894a4b | 2017-08-06 19:08:46 +0200 | [diff] [blame] | 316 | run-parts - longterm |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 317 | runlevel - noexec. can be nofork if "endutxent()" is called unconditionally, but too rare to bother? |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 318 | runsv - daemon |
| 319 | runsvdir - daemon |
| 320 | rx - runner |
Denys Vlasenko | dd55d5d | 2017-08-07 01:53:17 +0200 | [diff] [blame] | 321 | script - longterm: pumps script output from slave pty |
| 322 | scriptreplay - longterm: plays back "script" saved output, sleeping as necessary. |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 323 | sed - runner |
| 324 | sendmail - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 325 | seq - noexec. runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 326 | setarch - noexec. spawner |
Denys Vlasenko | 5cb907f | 2017-08-06 18:56:25 +0200 | [diff] [blame] | 327 | setconsole - noexec |
Denys Vlasenko | c3e60e1 | 2017-09-18 14:34:15 +0200 | [diff] [blame] | 328 | setfattr - noexec |
Denys Vlasenko | 1b280e4 | 2017-08-06 19:05:45 +0200 | [diff] [blame] | 329 | setfont - noexec. leaks a lot of stuff |
Denys Vlasenko | b83db4d | 2017-08-06 18:29:25 +0200 | [diff] [blame] | 330 | setkeycodes - noexec |
Denys Vlasenko | 341ce0a | 2017-08-06 18:17:58 +0200 | [diff] [blame] | 331 | setlogcons - noexec |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 332 | setpriv - spawner, changes state, let's play safe and not be noexec |
Denys Vlasenko | 97b738d | 2017-08-06 18:06:46 +0200 | [diff] [blame] | 333 | setserial - noexec |
Denys Vlasenko | 2262746 | 2017-08-06 17:14:09 +0200 | [diff] [blame] | 334 | setsid - spawner, uses fork_or_rexec() [not audited to work in noexec], let's play safe and not be noexec |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 335 | setuidgid - noexec. spawner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 336 | sha1sum - noexec. runner |
| 337 | sha256sum - noexec. runner |
| 338 | sha3sum - noexec. runner |
| 339 | sha512sum - noexec. runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 340 | showkey - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 341 | shred - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 342 | shuf - noexec. runner |
Denys Vlasenko | 2262746 | 2017-08-06 17:14:09 +0200 | [diff] [blame] | 343 | slattach - longterm (may sleep forever), uses bb_common_bufsiz1 |
Denys Vlasenko | 3bc2317 | 2017-08-09 19:51:17 +0200 | [diff] [blame] | 344 | sleep - longterm. Could be nofork, if not the problem of "killall sleep" not killing it. |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 345 | smemcap - runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 346 | softlimit - noexec. spawner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 347 | sort - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 348 | split - runner |
Denys Vlasenko | 947b239 | 2017-08-04 18:36:55 +0200 | [diff] [blame] | 349 | ssl_client - longterm |
Denys Vlasenko | 184c738 | 2017-08-06 20:55:56 +0200 | [diff] [blame] | 350 | start-stop-daemon - not noexec: uses bb_common_bufsiz1 |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 351 | stat - noexec. nofork candidate(needs fewer allocs) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 352 | strings - runner |
Denys Vlasenko | 692eeb8 | 2017-08-04 20:07:19 +0200 | [diff] [blame] | 353 | stty - noexec. nofork candidate: has no allocs or opens except xmove_fd(xopen("-F DEVICE"),STDIN). tcsetattr(STDIN) is not a problem: it would work the same across processes sharing this fd |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 354 | su - suid, spawner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 355 | sulogin - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 356 | sum - runner |
Denys Vlasenko | a453ca5 | 2017-08-05 01:42:08 +0200 | [diff] [blame] | 357 | sv - noexec. needs ^C (uses usleep(420000)) |
| 358 | svc - noexec. needs ^C (uses usleep(420000)) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 359 | svlogd - daemon |
Denys Vlasenko | 248a67f | 2017-08-07 18:18:09 +0200 | [diff] [blame] | 360 | swapoff - longterm: may cause memory pressure, execing is beneficial |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 361 | swapon - rare |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 362 | switch_root - spawner, rare, changes state (oh yes), execing may be important to free binary's inode |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 363 | sync - NOFORK |
Denys Vlasenko | caf26b3 | 2017-08-05 18:23:10 +0200 | [diff] [blame] | 364 | sysctl - noexec. leaks: xstrdup+xmalloc_read |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 365 | syslogd - daemon |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 366 | tac - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 367 | tail - runner |
| 368 | tar - runner |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 369 | taskset - noexec. spawner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 370 | tcpsvd - daemon |
| 371 | tee - runner |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 372 | telnet - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 373 | telnetd - daemon |
| 374 | test - NOFORK |
| 375 | tftp - runner |
| 376 | tftpd - daemon |
Denys Vlasenko | 5c527dc | 2017-08-04 19:55:01 +0200 | [diff] [blame] | 377 | time - spawner, longterm, changes state (signals) |
| 378 | timeout - spawner, longterm, changes state (signals) |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 379 | top - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 380 | touch - NOFORK |
| 381 | tr - runner |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 382 | traceroute - suid, longterm |
| 383 | traceroute6 - suid, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 384 | true - NOFORK |
| 385 | truncate - NOFORK |
| 386 | tty - NOFORK |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 387 | ttysize - NOFORK |
Denys Vlasenko | 9a58cc0 | 2017-08-06 12:28:00 +0200 | [diff] [blame] | 388 | tunctl - noexec |
Denys Vlasenko | 99125c0 | 2017-08-05 20:38:04 +0200 | [diff] [blame] | 389 | tune2fs - noexec. leaks: open+xfunc |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 390 | ubiattach - hardware |
| 391 | ubidetach - hardware |
| 392 | ubimkvol - hardware |
| 393 | ubirename - hardware |
| 394 | ubirmvol - hardware |
| 395 | ubirsvol - hardware |
| 396 | ubiupdatevol - hardware |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 397 | udhcpc - daemon |
| 398 | udhcpd - daemon |
| 399 | udpsvd - daemon |
| 400 | uevent - daemon |
Denys Vlasenko | 83a6c8d | 2017-08-05 23:21:02 +0200 | [diff] [blame] | 401 | umount - noexec. leaks: nested xmalloc |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 402 | uname - NOFORK |
| 403 | uncompress - runner |
| 404 | unexpand - runner |
| 405 | uniq - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 406 | unix2dos - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 407 | unlink - NOFORK |
| 408 | unlzma - runner |
| 409 | unlzop - runner |
| 410 | unxz - runner |
| 411 | unzip - runner |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 412 | uptime - noexec. nofork candidate(is getutxent ok?) |
| 413 | users - noexec. nofork candidate(is getutxent ok?) |
Denys Vlasenko | 3bc2317 | 2017-08-09 19:51:17 +0200 | [diff] [blame] | 414 | usleep - NOFORK. But what about "killall usleep"? |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 415 | uudecode - runner |
| 416 | uuencode - runner |
Denys Vlasenko | a4d4ab0 | 2017-08-09 18:52:19 +0200 | [diff] [blame] | 417 | vconfig - noexec. leaks: xsocket+ioctl_or_perror_and_die |
Denys Vlasenko | 74c05f5 | 2017-08-04 17:36:16 +0200 | [diff] [blame] | 418 | vi - interactive, longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 419 | vlock - suid |
Denys Vlasenko | ae84418 | 2017-08-07 23:14:49 +0200 | [diff] [blame] | 420 | volname - hardware (reads CDROM, this can take long-ish if need to spin up) |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 421 | w - noexec. nofork candidate(is getutxent ok?) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 422 | wall - suid |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 423 | watch - longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 424 | watchdog - daemon |
| 425 | wc - runner |
Denys Vlasenko | 83d7785 | 2017-08-04 17:59:46 +0200 | [diff] [blame] | 426 | wget - longterm |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 427 | which - NOFORK |
Denys Vlasenko | 1a1203f | 2017-08-07 16:47:34 +0200 | [diff] [blame] | 428 | who - noexec. nofork candidate(is getutxent ok?) |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 429 | whoami - NOFORK |
Denys Vlasenko | 8858a98 | 2017-08-08 01:21:49 +0200 | [diff] [blame] | 430 | whois - talks to network |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 431 | xargs - noexec. spawner |
| 432 | xxd - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 433 | xz - runner |
| 434 | xzcat - runner |
Denys Vlasenko | 39194f0 | 2017-08-03 19:00:01 +0200 | [diff] [blame] | 435 | yes - noexec. runner |
Denys Vlasenko | 819b47a | 2017-08-03 03:29:32 +0200 | [diff] [blame] | 436 | zcat - runner |
| 437 | zcip - daemon |