CECCOMP(1) Ceccomp Manual CECCOMP(1) (NAME) ceccomp - (SYNOPSIS) usage: ceccomp [FILE] [-q|--quiet] [-f|--format FMT] [-a|--arch ARCH] [-p|--pid PID] [-s|--seize] [-o|--output FILE] [-c|--color WHEN] ... (CONCEPT) BPF (syscall) seccomp prctl . execve : 1: 20 00 00 00 00 00 00 00 $A = $syscall_nr 2: 15 00 00 01 3b 00 00 00 if ($A != execve) goto 4 3: 06 00 00 00 00 00 00 00 return KILL 4: 06 00 00 00 00 00 ff 7f return ALLOW ceccomp lineno statement . (Important) TEXT BPF RAW BPF . (DESCRIPTION) ceccomp C seccomp-tools . (breaking changes) . asm - (asm - ASSEMBLE) ceccomp asm [-c WHEN] [-a ARCH] [-f FMT] [TEXT] ( ) TEXT RAW. C TEXT . WHEN . auto ceccomp <> . auto never always. auto . ARCH libseccomp . ( x86_64 59 "execve" ). uname . x86_64 . (Note) . (Endianness) . (ARCH) ( CODE K) . FMT ceccomp bpf . hexfmt hexline raw . << (EXAMPLES)>> . hexline . TEXT TEXT . (stdin) . - stdin . (Important) . ! << (TEXT GRAMMAR REFERENCE)>> . << (EXAMPLES)>> . +--------------------------+-----------------------------+ | (Command) | | | | (Difference) | +--------------------------+-----------------------------+ |seccomp-tools asm | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TEXT | | | | | | | | | | | | | +--------------------------+-----------------------------+ |ceccomp asm | | | | | | | disasm | | | asm | | | | | | | | | | | | | | | | | | | | | | | | | | | stdin | | | | | | | +--------------------------+-----------------------------+ disasm - (disasm - DISASSEMBLE) ceccomp disasm [-c WHEN] [-a ARCH] [RAW] ( ) RAW TEXT. trace . WHEN < (asm - ASSEMBLE)>> . disasm TEXT . ARCH libseccomp . RAW ( x86_64 syscall_nr 0x3b execve ). x86_64 . RAW BPF. stdin . - stdin . . (Note) . (Endianness) . (ARCH) ( CODE K) . (Note) ceccomp . ( ) . seccomp-tools ceccomp . +--------------------------+-----------------------------+ | (Command) | | | | (Difference) | +--------------------------+-----------------------------+ |seccomp-tools disasm | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------+-----------------------------+ |ceccomp disasm | ceccomp | | | | | | | | | | | | | | | | | | stdin | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +--------------------------+-----------------------------+ emu - (emu - EMULATE) ceccomp emu [-c WHEN] [-a ARCH] [-q] TEXT SYSCALL_NAME/SYSCALL_NR [ARGS[0] ARGS[1] ... ARGS[5] PC] syscall(SYSCALL_NR, ARGS[0], ARGS[1], ..., ARGS[5]) PC TEXT . . . WHEN < (asm - ASSEMBLE)>> . emu TEXT . SYSCALL_NAME/SYSCALL_NR SYSCALL_NAME ( execve) SYSCALL_NR ARCH SYSCALL_NR ( 59) . bpf . . ARGS[0-5] and PC . x86_64 rdi rsi rdx r10 r8 r9 rip . . ARCH < (asm - ASSEMBLE)>> . TEXT TEXT . ceccomp . (stdin) - . -q, --quiet . return KILL KILL . +--------------------------+-----------------------------+ | (Command) | | | | (Difference) | +--------------------------+-----------------------------+ |seccomp-tools emu | RAW | | | | | | | | | | | | | +--------------------------+-----------------------------+ |ceccomp emu | TEXT | | | | | | | | | | | | | | | | | | | | | stdin | | | | | | | | | PC | | | | +--------------------------+-----------------------------+ trace - (trace - TRACE FILTER IN RUNTIME) ceccomp trace [-c WHEN] [-q] [-o FILE] PROGRAM [program-args] [-c WHEN] [-q] -p PID [-s] PROGRAM seccomp PID PID seccomp TEXT . . bpf seccomp . WHEN < (asm - ASSEMBLE)>> . trace TEXT . FILE PROGRAM (stderr) . ceccomp stdin stdout PROGRAM ceccomp PROGRAM stderr . TEXT FILE . - stdout . PROGRAM program-args exec PROGRAM program-args. PID (PID) . PID PROGRAM pid . -s trace pid seccomp PID ptrace(PTRACE_SECCOMP_GET_FILTER) . -s, --seize TRACE PID . trace pid PID (attach) trace prog seccomp . . . -q, --quiet [INFO] (forking) seccomp . . . (Note) PID CAP_SYS_ADMIN ( -s) CAP_SYS_PTRACE ceccomp sudo . (Note) . (fork) INFO . ceccomp trace -q PROG 2>/dev/null . (Note) . dump (alias) trace seccomp-tools . +--------------------------+--------------------------------+ | (Command) | (Difference) | +--------------------------+--------------------------------+ |seccomp-tools dump | | | | | | | | | | | | | | | | | | | | | | | | | | | | PROGRAM | | | LIMIT | | | | | | | | | | | | (kill) | | | | | | PROGRAM | | | sh -c | | | | | | | +--------------------------+--------------------------------+ |ceccomp trace | | |ceccomp dump | | | | | | | | | | | | | | | | PROGRAM | | | kill | | | PROGRAM | | | | | | | | | | | | ./ | | | | | | fork | | | | | | | | | | | | | | | | | | | | | | | | | | | seccomp | | | pid | +--------------------------+--------------------------------+ probe - (probe - TEST COMMON SYSCALLS INSTANTLY) ceccomp probe [-c WHEN] [-o FILE] [-q] PROGRAM [program-args] PROGRAM program-args (FIRST) seccomp (kill) . seccomp . < (trace - TRACE FILTER IN RUNTIME)>> . execve open . . << (EXAMPLES)>> . open -> ALLOW read -> ALLOW write -> ALLOW execve -> KILL execveat -> KILL mmap -> ALLOW mprotect -> ALLOW openat -> ALLOW sendfile -> ALLOW ptrace -> ERRNO(1) fork -> ALLOW (Note) seccomp-tools . (TEXT GRAMMAR REFERENCE) (Important) . (lexer) . # (comment) . line label TEXT . TEXT -EBNF : . EBNF . BPF . (Comment and Label) ceccomp disasm asm . #Label CODE JT JF K #--------------------------------- L0001: 0x06 0x00 0x00 0x7fff0000 return ALLOW #--------------------------------- # asm . . (Label) : L0001. - (_) . goto disasm . if ($A == 0) goto somewhere somewhere . . CODE JT JF K disasm asm asm K . (Note) ceccomp disasm seccomp-tools disasm . seccomp-tools ceccomp . line CODE JT JF K ================================= 0000: 0x06 0x00 0x00 0x7fff0000 return ALLOW (Assignment) A seccomp X seccomp . $A = $arch $A = $syscall_nr A low_ high_ . $A = $low_pc $A = $high_pc $A = $low_args[0] $A = $high_args[0] ... $A = $low_args[5] $A = $high_args[5] sizeof(struct seccomp_data) A X . $A = $scmp_data_len $X = $scmp_data_len . A X . A X "0x" "0b" . $X = $mem[0] $A = $mem[0xf] $A = $mem[15] # both hex and dec index are OK $A = 0 $X = 0x3b $A = 0b1111 $A = 0333 X A . X A . $A = $X $X = $A $mem[3] = $X $mem[0x4] = $A (Arithmetic Operations) A . $A += 30 $A -= 4 $A *= 9 $A /= 1 $A &= 7 $A >>= 6 X . $A &= $X $A |= $X $A ^= $X $A <<= $X A . $A = -$A ... (Jump Downwards If ...) : goto L3 : if ($A == execve) goto L3 if ($A != 1234) goto L4 if ($A & $X) goto L5 if !($A & 7) goto L6 if ($A <= $X) goto L7 ... ...: if ($A > $X) goto L3, else goto L4 if ($A >= 4567) goto L5, else goto L6 . 0x3b execve . . ( ) . x86_64 aarch64 : if ($A == aarch64.read) goto 5 -a aarch64 aarch64 aarch64. . (Return Code) A: return $A (). TRACE TRAP ERRNO () action(0) . return 0x13371337 return KILL return KILL_PROCESS return TRAP(123) return ERRNO(0) return TRACE return TRACE(3) return LOG return NOTIFY (Short Example) TEXT execve execveat amd64 : $A = $syscall_nr if ($A == execve) goto forbid if ($A == execveat) goto forbid return ALLOW forbid: return KILL (RESTRICTIONS) asm Ceccomp TEXT : 1. '\0' () TEXT . 2. . 3. TEXT . 4. TEXT (4 MiB) . asm disasm ( BPF ) . ceccomp asm: ANSI TEXT \x1b[31m . (EXAMPLES) (manpage) HTML . (REPO) . (Pull Request) (Issue) ! (C) - GPLv3 . (AUTHORS) dbgbgtf RocketDev ceccomp 4.2.2 2026-06-15 CECCOMP(1)