Skip to content

Commit

Permalink
tests: add functional tests for seccomp
Browse files Browse the repository at this point in the history
Test KILL and ERRNO actions.

Signed-off-by: Mauricio Vásquez <mauricio@kinvolk.io>
  • Loading branch information
mauriciovasquezbernal committed Feb 4, 2021
1 parent 089c9d4 commit 0a202ef
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions tests/integration/seccomp.bats
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,71 @@ function teardown() {
runc run test_busybox
[ "$status" -eq 0 ]
}

# TODO:
# - Test other actions like SCMP_ACT_TRAP, SCMP_ACT_TRACE, SCMP_ACT_LOG.
# - Test args (index, value, valueTwo, etc).

@test "runc run [seccomp] (SCMP_ACT_ERRNO default)" {
update_config '.process.args = ["/bin/sh", "-c", "mkdir /dev/shm/foo"] |
.process.noNewPrivileges = false |
.linux.seccomp = {
"defaultAction":"SCMP_ACT_ALLOW",
"architectures":["SCMP_ARCH_X86","SCMP_ARCH_X32"],
"syscalls":[{"names":["mkdir"], "action":"SCMP_ACT_ERRNO"}]
}'

runc run test_busybox
[ "$status" -ne 0 ]
[[ "$output" == *"Operation not permitted"* ]]
}

@test "runc run [seccomp] (SCMP_ACT_ERRNO explicit errno)" {
update_config '.process.args = ["/bin/sh", "-c", "mkdir /dev/shm/foo"] |
.process.noNewPrivileges = false |
.linux.seccomp = {
"defaultAction":"SCMP_ACT_ALLOW",
"architectures":["SCMP_ARCH_X86","SCMP_ARCH_X32"],
"syscalls":[{"names":["mkdir"], "action":"SCMP_ACT_ERRNO", "errnoRet": 100}]
}'

runc run test_busybox
[ "$status" -ne 0 ]
[[ "$output" == *"Network is down"* ]]
}

@test "runc run [seccomp] (SCMP_ACT_KILL)" {
update_config '.process.args = ["/bin/sh", "-c", "mkdir /dev/shm/foo"] |
.process.noNewPrivileges = false |
.linux.seccomp = {
"defaultAction":"SCMP_ACT_ALLOW",
"architectures":["SCMP_ARCH_X86","SCMP_ARCH_X32"],
"syscalls":[{"names":["mkdir"], "action":"SCMP_ACT_KILL"}]
}'

runc run test_busybox
[ "$status" -ne 0 ]
}

# check that a startContainer hook is run with the seccomp filters applied
@test "runc run [seccomp] (startContainer hook)" {
update_config '.process.args = ["/bin/true"] |
.linux.seccomp = {
"defaultAction":"SCMP_ACT_ALLOW",
"architectures":["SCMP_ARCH_X86","SCMP_ARCH_X32"],
"syscalls":[{"names":["mkdir"], "action":"SCMP_ACT_KILL"}]
} |
.hooks = {
"startContainer": [
{
"path": "/bin/sh",
"args": ["sh", "-c", "mkdir /dev/shm/foo"]
}
]
}'

runc run test_busybox
[ "$status" -ne 0 ]
[[ "$output" == *"error running hook"* ]]
[[ "$output" == *"bad system call"* ]]
}

0 comments on commit 0a202ef

Please sign in to comment.