Slide 6
Slide 6 text
Overview
6
Userspace
Kernel
Container Manager
1. Issue a system call
e.g., socket(), mount()
Container
4. The container wants to run the system call
ioctl(fd, SECCOMP_IOCTL_NOTIF_RECV, req)
5. Read the system call arguments from
/proc/$pid/mem
6. Validate the system call
if OK, go to 7a-1. If NG, go to 7b
7a. Perform the system call on behalf of the process
(Optional) Prepare for addfd to return fd to the process
ioctl(fd, SECCOMP_IOCTL_NOTIF_ADDFD, addfd)
7b. Reject the system call
8a. Set the return value to 0 (success)
(Optional) Return fd from the manager
8b. Set the return value to error code (failure)
ioctl(fd, SECCOMP_IOCTL_NOTIF_SEND, req)
Process
2. Execute filter
3. Return “notify”
cBPF Program
Seccomp
9a. Return 0 (success)
(Optional) Get fd created by the manager
9b. Return error code (failure)
⚫ Install seccomp filter when the process is started.
⚫ After the process is started, handle syscalls like below
Note. From “Rust-based, Secure and Lightweight Container Runtime
for Embedded Systems" by Manabu Sugimoto, 2021, Cloud Native
Rust Day, p. 25 (Presentation Slide), https://sched.co/iLkx