[Linux]seccomp沙盒机制

Seccomp机制简介

seccomp是一种内核中的安全机制,正常情况下,程序可以使用所有的syscall,这是不安全的,比如劫持程序流后通过execve的syscall来getshell.通过seccomp我们可以在程序中禁用掉某些syscall,这样就算劫持了程序流也只能调用部分的syscall了.

2、 使用seccomp

#include 
#include 
#include 

int main(void){

         scmp_filter_ctx ctx;

         ctx = seccomp_init(SCMP_ACT_ALLOW);

         seccomp_rule_add(ctx, SCMP_ACT_KILL, SCMP_SYS(execve), 0);

         seccomp_load(ctx);

         char * filename = "/bin/sh";

         char * argv[] = {"/bin/sh",NULL};

         char * envp[] = {NULL};

         write(1,"i will give you a shell\n",24);

         syscall(59,filename,argv,envp);//execve

         return 0;
}

今天做题遇到的沙盒机制

通过prctl(PR_SET_SECCOMP, 2, …)设置沙盒,禁用一些syscall,
[Linux]seccomp沙盒机制_第1张图片
PR_SET_NO_NEW_PRIVS=38
[Linux]seccomp沙盒机制_第2张图片

使用工具

seccomp(github上)可以识别沙盒的规则,还可以自己写规则
[Linux]seccomp沙盒机制_第3张图片

你可能感兴趣的:(Linux的一些知识)