欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[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,
[Linux]seccomp沙盒机制
PR_SET_NO_NEW_PRIVS=38
[Linux]seccomp沙盒机制

使用工具

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