[Linux]seccomp沙盒机制
程序员文章站
2022-04-18 10:59:12
...
Seccomp机制简介
seccomp是一种内核中的安全机制,正常情况下,程序可以使用所有的syscall,这是不安全的,比如劫持程序流后通过execve的syscall来getshell.通过seccomp我们可以在程序中禁用掉某些syscall,这样就算劫持了程序流也只能调用部分的syscall了.
2、 使用seccomp
#include <stdio.h>
#include <unisted.h>
#include <seccomp.h>
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,
PR_SET_NO_NEW_PRIVS=38
使用工具
seccomp(github上)可以识别沙盒的规则,还可以自己写规则