diff options
-rw-r--r-- | changes/bug16106 | 6 | ||||
-rw-r--r-- | src/common/sandbox.c | 8 |
2 files changed, 6 insertions, 8 deletions
diff --git a/changes/bug16106 b/changes/bug16106 deleted file mode 100644 index 9142a37e34..0000000000 --- a/changes/bug16106 +++ /dev/null @@ -1,6 +0,0 @@ - o Minor bugfixes (linux seccomp2 sandbox): - - Cause a wider variety of unpermitted open() calls to fail with the - EACCES error when the sandbox is running. This won't enable any - previously non-working functionality, but it should turn several cases - from crashes into sandbox warnings. Fixes bug 16106; bugfix on - 0.2.5.1-alpha. diff --git a/src/common/sandbox.c b/src/common/sandbox.c index 043b8bf14f..37f582048c 100644 --- a/src/common/sandbox.c +++ b/src/common/sandbox.c @@ -481,14 +481,18 @@ sb_open(scmp_filter_ctx ctx, sandbox_cfg_t *filter) } } - rc = seccomp_rule_add_0(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(open)); + rc = seccomp_rule_add_1(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(open), + SCMP_CMP_MASKED(1, O_CLOEXEC|O_NONBLOCK|O_NOCTTY|O_NOFOLLOW, + O_RDONLY)); if (rc != 0) { log_err(LD_BUG,"(Sandbox) failed to add open syscall, received libseccomp " "error %d", rc); return rc; } - rc = seccomp_rule_add_0(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(openat)); + rc = seccomp_rule_add_1(ctx, SCMP_ACT_ERRNO(EACCES), SCMP_SYS(openat), + SCMP_CMP_MASKED(2, O_CLOEXEC|O_NONBLOCK|O_NOCTTY|O_NOFOLLOW, + O_RDONLY)); if (rc != 0) { log_err(LD_BUG,"(Sandbox) failed to add openat syscall, received " "libseccomp error %d", rc); |