2019-12-02 18:28:28 +00:00
|
|
|
# Copyright 2019 The Chromium OS Authors. All rights reserved.
|
|
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
|
|
# found in the LICENSE file.
|
|
|
|
|
|
|
|
# Rules from common_device.policy with some rules removed because they block certain flags needed
|
|
|
|
# for gpu.
|
|
|
|
brk: 1
|
|
|
|
clone: arg0 & CLONE_THREAD
|
|
|
|
close: 1
|
|
|
|
dup3: 1
|
|
|
|
dup: 1
|
|
|
|
epoll_create1: 1
|
|
|
|
epoll_ctl: 1
|
seccomp: update/cleanup aarch64 rules
The build-time seccomp compiler for aarch64 complains that it doesn't
recognize open, epoll_wait, recv, mmap2, dup2, poll, mkdir, or stat.
I tried to propose a change to upstream minijail to make it aware of
these syscalls, but the calls are in various forms of deprecation
so upstream is doubting the sanity of the policy files.
I applied the following mapping: open->openat, epoll_wait->epoll_pwait,
recv->recvfrom, mmap2->mmap, dup2->dup3, poll->ppoll, mkdir->mkdirat,
and stat->statx. In many cases the new syscall was already present so I
just deleted the old one.
BUG=None
TEST=Ran compile_seccomp_policy.py with an unmodified minijail until
it stopped complaining. I don't have an arm device for runtime testing.
Wrote an app to emulate the execution of the first 400 syscall #s though
the bpf filter and verified that the list that matches the filter is the
same as the policy file.
Change-Id: I599aa549a1712b898eb6b73492872a9676e7215d
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2036218
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
2020-02-04 01:26:44 +00:00
|
|
|
epoll_pwait: 1
|
2019-12-02 18:28:28 +00:00
|
|
|
eventfd2: 1
|
|
|
|
exit: 1
|
|
|
|
exit_group: 1
|
|
|
|
futex: 1
|
|
|
|
getpid: 1
|
|
|
|
gettimeofday: 1
|
|
|
|
kill: 1
|
|
|
|
madvise: arg2 == MADV_DONTNEED || arg2 == MADV_DONTDUMP || arg2 == MADV_REMOVE
|
|
|
|
mremap: 1
|
|
|
|
munmap: 1
|
|
|
|
nanosleep: 1
|
|
|
|
pipe2: 1
|
|
|
|
ppoll: 1
|
2020-06-24 04:01:28 +00:00
|
|
|
prctl: arg0 == PR_SET_NAME || arg0 == PR_GET_NAME
|
2019-12-02 18:28:28 +00:00
|
|
|
read: 1
|
|
|
|
readv: 1
|
|
|
|
recvfrom: 1
|
|
|
|
recvmsg: 1
|
|
|
|
restart_syscall: 1
|
|
|
|
rt_sigaction: 1
|
|
|
|
rt_sigprocmask: 1
|
|
|
|
rt_sigreturn: 1
|
|
|
|
sched_getaffinity: 1
|
|
|
|
sendmsg: 1
|
|
|
|
sendto: 1
|
|
|
|
set_robust_list: 1
|
|
|
|
sigaltstack: 1
|
|
|
|
write: 1
|
|
|
|
writev: 1
|
|
|
|
|
2020-12-03 19:37:33 +00:00
|
|
|
# Required for perfetto tracing
|
|
|
|
getsockopt: 1
|
|
|
|
shutdown: 1
|
|
|
|
|
2019-12-02 18:28:28 +00:00
|
|
|
## Rules specific to gpu
|
|
|
|
connect: 1
|
|
|
|
getrandom: 1
|
|
|
|
socket: arg0 == 1 && arg1 == 0x80001 && arg2 == 0
|
|
|
|
lseek: 1
|
|
|
|
ftruncate: 1
|
|
|
|
statx: 1
|
|
|
|
fstat: 1
|
seccomp: update/cleanup aarch64 rules
The build-time seccomp compiler for aarch64 complains that it doesn't
recognize open, epoll_wait, recv, mmap2, dup2, poll, mkdir, or stat.
I tried to propose a change to upstream minijail to make it aware of
these syscalls, but the calls are in various forms of deprecation
so upstream is doubting the sanity of the policy files.
I applied the following mapping: open->openat, epoll_wait->epoll_pwait,
recv->recvfrom, mmap2->mmap, dup2->dup3, poll->ppoll, mkdir->mkdirat,
and stat->statx. In many cases the new syscall was already present so I
just deleted the old one.
BUG=None
TEST=Ran compile_seccomp_policy.py with an unmodified minijail until
it stopped complaining. I don't have an arm device for runtime testing.
Wrote an app to emulate the execution of the first 400 syscall #s though
the bpf filter and verified that the list that matches the filter is the
same as the policy file.
Change-Id: I599aa549a1712b898eb6b73492872a9676e7215d
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2036218
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
2020-02-04 01:26:44 +00:00
|
|
|
newfstatat: 1
|
2019-12-02 18:28:28 +00:00
|
|
|
getdents64: 1
|
2020-04-21 09:45:22 +00:00
|
|
|
sysinfo: 1
|
2019-12-02 18:28:28 +00:00
|
|
|
|
|
|
|
# 0x6400 == DRM_IOCTL_BASE, 0x8000 = KBASE_IOCTL_TYPE (mali)
|
|
|
|
ioctl: arg1 & 0x6400 || arg1 & 0x8000
|
|
|
|
|
2020-02-01 01:29:45 +00:00
|
|
|
## mmap/mprotect differ from the common_device.policy
|
2019-12-02 18:28:28 +00:00
|
|
|
mmap: arg2 == PROT_READ|PROT_WRITE || arg2 == PROT_NONE || arg2 == PROT_READ|PROT_EXEC || arg2 == PROT_WRITE || arg2 == PROT_READ
|
|
|
|
mprotect: arg2 == PROT_READ|PROT_WRITE || arg2 == PROT_NONE || arg2 == PROT_READ
|
|
|
|
openat: 1
|
|
|
|
|
|
|
|
## Rules specific to pvr
|
|
|
|
geteuid: 1
|
|
|
|
getuid: 1
|
|
|
|
readlinkat: 1
|
|
|
|
gettid: 1
|
|
|
|
fcntl: 1
|
|
|
|
tgkill: 1
|
|
|
|
clock_gettime: 1
|