@@ -26,8 +26,6 @@ const std::uint32_t UPPER_NR_LIMIT = 0x3FFFFFFF;
26
26
27
27
// Offset to the nr field in struct seccomp_data
28
28
const std::uint32_t SECCOMP_DATA_NR_OFFSET = 0x00 ;
29
- // Offset to the arch field in struct seccomp_data
30
- const std::uint32_t SECCOMP_DATA_ARCH_OFFSET = 0x04 ;
31
29
32
30
// Copied from seccomp.h
33
31
// seccomp.h cannot be included as it was added in Linux kernel 3.17
@@ -44,37 +42,36 @@ const std::uint32_t SECCOMP_DATA_ARCH_OFFSET = 0x04;
44
42
#endif
45
43
46
44
const struct sock_filter FILTER[] = {
47
- // Load architecture from 'seccomp_data' buffer into accumulator
48
- BPF_STMT (BPF_LD | BPF_W | BPF_ABS, SECCOMP_DATA_ARCH_OFFSET),
49
- // Jump to disallow if architecture is not X86_64
50
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, AUDIT_ARCH_X86_64, 0 , 5 ),
51
45
// Load the system call number into accumulator
52
46
BPF_STMT (BPF_LD | BPF_W | BPF_ABS, SECCOMP_DATA_NR_OFFSET),
53
47
// Only applies to X86_64 arch. Jump to disallow for calls using the x32 ABI
54
- BPF_JUMP (BPF_JMP | BPF_JGT | BPF_K, UPPER_NR_LIMIT, 36 , 0 ),
48
+ BPF_JUMP (BPF_JMP | BPF_JGT | BPF_K, UPPER_NR_LIMIT, 39 , 0 ),
55
49
// If any sys call filters are added or removed then the jump
56
50
// destination for each statement including the one above must
57
51
// be updated accordingly
58
52
59
53
// Allowed sys calls, jump to return allow on match
60
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_read, 36 , 0 ),
61
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_write, 35 , 0 ),
62
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_writev, 34 , 0 ),
63
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_lseek, 33 , 0 ),
64
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_lstat, 32 , 0 ),
65
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_clock_gettime, 31 , 0 ),
66
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_readlink, 30 , 0 ),
67
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_stat, 29 , 0 ),
68
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_fstat, 28 , 0 ),
69
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_open, 27 , 0 ),
70
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_close, 26 , 0 ),
71
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_connect, 25 , 0 ),
72
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_clone, 24 , 0 ),
73
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_statfs, 23 , 0 ),
74
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_dup2, 22 , 0 ),
75
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_mkdir, 21 , 0 ), // for forecast temp storage
76
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_rmdir, 20 , 0 ), // for forecast temp storage
77
- BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_getdents, 19 , 0 ), // for forecast temp storage
54
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_read, 39 , 0 ),
55
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_write, 38 , 0 ),
56
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_writev, 37 , 0 ),
57
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_lseek, 36 , 0 ),
58
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_lstat, 35 , 0 ),
59
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_clock_gettime, 34 , 0 ),
60
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_gettimeofday, 33 , 0 ),
61
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_readlink, 32 , 0 ),
62
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_stat, 31 , 0 ),
63
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_fstat, 30 , 0 ),
64
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_open, 29 , 0 ),
65
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_close, 28 , 0 ),
66
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_connect, 27 , 0 ),
67
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_clone, 26 , 0 ),
68
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_statfs, 25 , 0 ),
69
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_dup2, 24 , 0 ),
70
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_mkdir, 23 , 0 ), // for forecast temp storage
71
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_rmdir, 22 , 0 ), // for forecast temp storage
72
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_unlinkat, 21 , 0 ), // for forecast temp storage
73
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_getdents, 20 , 0 ), // for forecast temp storage
74
+ BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_getdents64, 19 , 0 ), // for forecast temp storage
78
75
BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_openat, 18 , 0 ), // for forecast temp storage
79
76
BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_tgkill, 17 , 0 ), // for the crash handler
80
77
BPF_JUMP (BPF_JMP | BPF_JEQ | BPF_K, __NR_rt_sigaction, 16 , 0 ), // for the crash handler
0 commit comments