openharmony 鸿蒙 seccomp-symbol

2026-08-25 浏览 (1)

Seccomp-Provided System Call List

Overview

Secure Computing Mode (seccomp) is a lightweight system call filtering mechanism provided by the Linux kernel. Since its introduction in Linux 2.6.12, seccomp has evolved from a simplified form that supports only the strict mode to a mainstream form that is centered on Berkeley Packet Filter (seccomp-BPF).

OpenHarmony uses the seccomp-BPF mode, which allows you to customize system call filtering rules using BPF. This mode precisely restricts the range of system calls that can be invoked by processes, reducing the risks posed by malicious code exploiting kernel vulnerabilities and improving the security isolation of processes, containers, and applications.

This topic focuses on the system call lists provided by seccomp for different device types in the OpenHarmony environment. It aims to help you:

  1. Quickly understand the differences in system call control under seccomp for different devices.

  2. Select appropriate APIs based on service scenarios to avoid function exceptions caused by system call restrictions.

Introduction to the Seccomp Mechanism

  • Basic mechanism

    Seccomp policies exist in the form of policy files. During compilation and building, a policy file is parsed to generate a source file that contains the BPF instruction policies, and then the source file is compiled into a dynamic policy library. During the startup of a user-space process, seccomp system calls are invoked to load the BPF instruction policies into the kernel.

  • Basic features

    • A child process inherits the seccomp policies of its parent process.
    • After a seccomp policy is loaded to the kernel during process running, the policy is stored in the memory as a singly linked list and cannot be modified.
    • Seccomp policies can be set for a process for multiple times. When a process executes a system call, the kernel traverses the policies specified for the nodes in the singly linked list and compares the policies to obtain the policy with the highest priority.

Determining Whether a Process Is Terminated Due to the Seccomp Mechanism

Check the process fault logs. If the error cause is signal:SIGSYS and the stack top is in the ld-musl-{architecture}.so.1 library, the process termination may be caused by the seccomp mechanism.

cat /data/log/faultlog/faultlogger/cppcrash-xxxx

Incorrect example:

Process name:com.example.myapplication
Reason:Signal:SIGSYS(UNKNOWN)
Fault thread Info:
Tid:13893, Name:e.myapplication
#00 pc 000a5d30 /system/lib/ld-musl-arm.so.1(sethostname+16)(584c9d0a0e9000497bb0d66799a9526a)
#01 pc 00002f68 /data/storage/el1/bundle/libs/arm/libentry.so(test()+64)

Seccomp Symbols

System CallSupported ArchitectureSupported DeviceRemarks
mbindallPC-
mmaparm64All platform devices-
mmapriscv64All platform devices-
mmap2armAll platform devices-
munmapallAll platform devices-
mremapallAll platform devices-
mprotectallAll platform devices-
msyncallAll platform devices-
mlockallAll platform devices-
munlockallAll platform devices-
mlockallallAll platform devices-
munlockallallAll platform devices-
mincoreallAll platform devices-
madviseallAll platform devices-
mlock2allAll platform devices-
membarrierallAll platform devices-
brkallAll platform devices-
remap_file_pagesarmAll platform devices-
forkarmAll platform devices-
vforkarmAll platform devices-
exitallAll platform devices-
exit_groupallAll platform devices-
waitidallAll platform devices-
wait4allAll platform devices-
set_tid_addressallAll platform devices-
setpgidallAll platform devices-
getpgidallAll platform devices-
getsidallAll platform devices-
setsidallAll platform devices-
getpidallAll platform devices-
getppidallAll platform devices-
gettidallAll platform devices-
unameallAll platform devices-
personalityallAll platform devices-
execveallAll platform devices-
execveatallAll platform devices-
cloneallAll platform devicesOnly calls that do not contain the following namespace flags are allowed:
CLONE_NEWNS,
CLONE_NEWPID,
CLONE_NEWNETCLONE_NEWCGROUP,
CLONE_NEWUTS,
CLONE_NEWIPC,
and CLONE_NEWUSER.
If the conditions are met, ALLOW is returned. Otherwise, TRAP is returned.
io_setupallAll platform devices-
io_destroyallAll platform devices-
io_submitallAll platform devices-
io_cancelallAll platform devices-
io_geteventsallAll platform devices-
openatallAll platform devices-
openarmAll platform devices-
closeallAll platform devices-
creatarmAll platform devices-
readallAll platform devices-
writeallAll platform devices-
readvallAll platform devices-
writevallAll platform devices-
pread64allAll platform devices-
pwrite64allAll platform devices-
preadvallAll platform devices-
pwritevallAll platform devices-
preadv2allAll platform devices-
pwritev2allAll platform devices-
lseekallAll platform devices-
_llseekarmAll platform devices-
truncateallAll platform devices-
ftruncatearm64All platform devices-
ftruncateriscv64All platform devices-
truncate64armAll platform devices-
ftruncate64armAll platform devices-
fallocateallAll platform devices-
fcntlallAll platform devices-
fcntl64armAll platform devices-
flockallAll platform devices-
mknodatallAll platform devices-
mkdiratallAll platform devices-
mkdirarmAll platform devices-
rmdirarmAll platform devices-
unlinkatallAll platform devices-
unlinkarmAll platform devices-
symlinkatallAll platform devices-
symlinkarmAll platform devices-
linkatallAll platform devices-
linkarmAll platform devices-
renameatarmAll platform devices-
renameatarm64All platform devices-
renamearmAll platform devices-
renameat2allAll platform devices-
chdirallAll platform devices-
fchdirallAll platform devices-
faccessatallAll platform devices-
accessarmAll platform devices-
faccessat2allAll platform devices-
getcwdallAll platform devices-
getdents64allAll platform devices-
getdentsarmAll platform devices-
readlinkatallAll platform devices-
readlinkarmAll platform devices-
newfstatatarm64All platform devices-
newfstatatriscv64All platform devices-
fstatat64armAll platform devices-
fstatarm64All platform devices-
fstatriscv64All platform devices-
stat64armAll platform devices-
lstat64armAll platform devices-
fstat64armAll platform devices-
statfsarm64All platform devices-
statfsriscv64All platform devices-
statfs64armAll platform devices-
fstatfsarm64All platform devices-
fstatfsriscv64All platform devices-
fstatfs64armAll platform devices-
syncallAll platform devices-
fsyncallAll platform devices-
fdatasyncallAll platform devices-
syncfsallAll platform devices-
sync_file_rangearm64All platform devices-
sync_file_rangeriscv64All platform devices-
sync_file_range2armAll platform devices-
utimensatallAll platform devices-
utimensat_time64armAll platform devices-
pipe2allAll platform devices-
pipearmAll platform devices-
dupallAll platform devices-
dup3allAll platform devices-
dup2armAll platform devices-
sendfileallAll platform devices-
sendfile64armAll platform devices-
copy_file_rangeallAll platform devices-
vmspliceallAll platform devices-
spliceallAll platform devices-
teeallAll platform devices-
readaheadallAll platform devices-
fadvise64arm64All platform devices-
fadvise64riscv64All platform devices-
fadvise64_64armAll platform devices-
quotactlallAll platform devices-
pivot_rootriscv64All platform devices-
statxallAll platform devices-
setxattrallAll platform devices-
lsetxattrallAll platform devices-
fsetxattrallAll platform devices-
getxattrallAll platform devices-
lgetxattrallAll platform devices-
fgetxattrallAll platform devices-
listxattrallAll platform devices-
llistxattrallAll platform devices-
flistxattrallAll platform devices-
removexattrallAll platform devices-
lremovexattrallAll platform devices-
fremovexattrallAll platform devices-
fchownatallAll platform devices-
fchownarm64All platform devices-
fchownriscv64All platform devices-
fchown32armAll platform devices-
lchown32armAll platform devices-
chown32armAll platform devices-
getuidallAll platform devices-
getuid32armAll platform devices-
geteuidarm64All platform devices-
geteuidriscv64All platform devices-
geteuid32armAll platform devices-
getgidarm64All platform devices-
getgidriscv64All platform devices-
getgid32armAll platform devices-
getegidarm64All platform devices-
getegidriscv64All platform devices-
getegid32armAll platform devices-
setresuidarm64All platform devices-
setresuidriscv64All platform devices-
setresuid32armAll platform devices-
getresuidarm64All platform devices-
getresuidriscv64All platform devices-
getresuid32armAll platform devices-
getresgidarm64All platform devices-
getresgidriscv64All platform devices-
getresgid32armAll platform devices-
getgroupsarm64All platform devices-
getgroupsriscv64All platform devices-
getgroups32armAll platform devices-
setpriorityallAll platform devices-
getpriorityallAll platform devices-
capgetallAll platform devices-
capsetallAll platform devices-
umaskallAll platform devices-
getrlimitarm64All platform devices-
getrlimitriscv64All platform devices-
ugetrlimitarmAll platform devices-
setrlimitallAll platform devices-
prlimit64allAll platform devices-
fchmodallAll platform devices-
fchmodatallAll platform devices-
chmodarmAll platform devices-
killallAll platform devices-
tkillallAll platform devices-
tgkillallAll platform devices-
sigaltstackallAll platform devices-
rt_sigsuspendallAll platform devices-
rt_sigactionallAll platform devices-
sigactionarmAll platform devices-
rt_sigprocmaskallAll platform devices-
rt_sigpendingallAll platform devices-
rt_sigtimedwaitallAll platform devices-
rt_sigtimedwait_time64armAll platform devices-
rt_sigqueueinfoallAll platform devices-
rt_sigreturnallAll platform devices-
sigreturnarmAll platform devices-
signalfd4allAll platform devices-
timerfd_createallAll platform devices-
timerfd_settimeallAll platform devices-
timerfd_gettimeallAll platform devices-
timerfd_gettime64armAll platform devices-
timerfd_settime64armAll platform devices-
timer_createallAll platform devices-
timer_gettimeallAll platform devices-
timer_gettime64armAll platform devices-
timer_getoverrunallAll platform devices-
timer_settimeallAll platform devices-
timer_settime64armAll platform devices-
timer_deleteallAll platform devices-
clock_gettimeallAll platform devices-
clock_gettime64armAll platform devices-
clock_settime64armAll platform devices-
clock_getresallAll platform devices-
clock_getres_time64armAll platform devices-
clock_nanosleepallAll platform devices-
clock_nanosleep_time64armAll platform devices-
clock_adjtime64armAll platform devices-
getitimerallAll platform devices-
setitimerallAll platform devices-
nanosleepallAll platform devices-
futexallAll platform devices-
futex_time64armAll platform devices-
rt_tgsigqueueinfoallAll platform devices-
semtimedop_time64armAll platform devices-
pidfd_send_signalallAll platform devices-
shmgetallPC-
socketallAll platform devices-
socketpairallAll platform devices-
bindallAll platform devices-
listenallAll platform devices-
acceptallAll platform devices-
accept4allAll platform devices-
connectallAll platform devices-
getsocknameallAll platform devices-
getpeernameallAll platform devices-
sendtoallAll platform devices-
recvfromallAll platform devices-
setsockoptallAll platform devices-
getsockoptallAll platform devices-
shutdownallAll platform devices-
sendmsgallAll platform devices-
recvmsgallAll platform devices-
recvmmsgallAll platform devices-
recvmmsg_time64armAll platform devices-
sendmmsgallAll platform devices-
sched_setparamallAll platform devices-
sched_setschedulerallAll platform devices-
sched_getschedulerallAll platform devices-
sched_getparamallAll platform devices-
sched_setaffinityallAll platform devices-
sched_getaffinityallAll platform devices-
sched_yieldallAll platform devices-
sched_get_priority_maxallAll platform devices-
sched_get_priority_minallAll platform devices-
sched_rr_get_intervalallAll platform devices-
sched_rr_get_interval_time64armAll platform devices-
sched_setattrallAll platform devices-
sched_getattrallAll platform devices-
ioprio_setarm64All platform devices-
ioprio_setriscv64All platform devices-
ioprio_getarm64All platform devices-
ioprio_getriscv64All platform devices-
perf_event_openallAll platform devices-
getcpuallAll platform devices-
getrusageallAll platform devices-
timesallAll platform devices-
process_vm_readvallAll platform devices-
process_vm_writevallAll platform devices-
process_madviseallAll platform devices-
ioctlallAll platform devices-
inotify_init1allAll platform devices-
inotify_initarmAll platform devices-
inotify_add_watchallAll platform devices-
inotify_rm_watchallAll platform devices-
eventfd2allAll platform devices-
eventfdarmAll platform devices-
epoll_create1allAll platform devices-
epoll_createarmAll platform devices-
epoll_ctlallAll platform devices-
epoll_pwaitallAll platform devices-
epoll_waitarmAll platform devices-
pselect6allAll platform devices-
pselect6_time64armAll platform devices-
_newselectarmAll platform devices-
ppollallAll platform devices-
ppoll_time64armAll platform devices-
pollarmAll platform devices-
ptraceallAll platform devices-
restart_syscallallAll platform devices-
prctlallAll platform devices-
seccompallAll platform devices-
getrandomallAll platform devices-
memfd_createallAll platform devices-
userfaultfdallAll platform devices-
gettimeofdayallAll platform devices-
sysinfoallAll platform devices-
pidfd_openallAll platform devices-
pidfd_getfdallAll platform devices-
set_robust_listallAll platform devices-
cacheflusharmAll platform devices-
set_tlsarmAll platform devices-

你可能感兴趣的鸿蒙文章

openharmony 鸿蒙 guidance-on-ndk-libc-interfaces-affected-by-permissions

openharmony 鸿蒙 capi-vulkan-ohbufferhandle

openharmony 鸿蒙 vulkan-overview

openharmony 鸿蒙 zlib

openharmony 鸿蒙 icu4c-symbol

openharmony 鸿蒙 musl

openharmony 鸿蒙 capi-vulkan-vkimportnativebufferinfoohos

openharmony 鸿蒙 opengl-symbol

openharmony 鸿蒙 opengl

openharmony 鸿蒙 vulkan

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/MjvNW5Mr