개요

seccomp (secure computing mode의 약자)는 리눅스 커널에서 애플리케이션 샌드박싱 메커니즘을 제공하는 컴퓨터 보안 기능이다. seccomp은 프로세스가 exit(), sigreturn(), 그리고 이미 열린 파일 디스크립터에 대한 read(), write() 를 제외한 어떠한 시스템 호출도 일으킬 수 없는 안전한 상태로 일방향 변환을 할 수 있게 한다. 만약 다른 시스템 호출을 시도한다면, 커널이 SIGKILL로 프로세스를 종료시킨다. 이러한 의미에서 이것은 시스템의 자원을 가상화하는 것이 아니라 프로세스를 고립시키는 것이라고 할 수 있다. 설정은 prctl함수를 통해 바이너리 내부에 적용시킬 수 있으며 PR_SET_SECCOMP상수를 전달함으로써 seccomp를 실행시킬 수 있다. 특히 여기서 SECCOMP_SET_MODE_FILTER를 통해서 Berkeley Packet Filter를 통해서 어떤 시스템콜을 허용하고 어떤 시스템콜을 deny할지를 필터링 하여 결정할 수 도 있다.

int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);
prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT);

참고

  1. https://velog.io/@woounnan/LINUX-Seccomp