带有pysandbox的受限功能(RF)

时间:2015-03-19 11:22:38

标签: python ubuntu gcc sandbox pysandbox

我的问题与herehere完全相同。

我还使用simple2.py来沙箱化此程序生成的可执行文件test1.c

 #include<stdio.h>
 int main(){
     puts("Hello World");
     return 0;
 }

我使用以下命令构建可执行文件:

  

gcc -static test1.c

之后如果我这样做:

  

ldd a.out

我收到了输出:

  

不是动态可执行文件

但是,运行sample2.py的结果仍然是

  

结果:RF
  cpu:0ms
  记忆:952kB

我究竟做错了什么?

2 个答案:

答案 0 :(得分:1)

我改变了这个:

subCategory

为此:

x86_64=set([0,1,5,8,9,10,11,12,16,25,63,158,219,231])
在sample2.py中

,它可以工作。

答案 1 :(得分:1)

RF结果代码很可能是由于文件操作的意外系统调用(即SYS_open(),SYS_close(),SYS_stat(),...)。当(1)目标程序实际执行文件操作时,以及(或)(2)它是动态链接的并且需要在运行时加载.so库时,会发生这种情况。由于目标程序不调用文件操作,因此属于后一种情况。

然后,要解决射频结果,

statically link the target program to avoid dependencies on shared libraries; or,
extend the policy rules in the wrapper script to handle relevant SYSCALL / SYSRET events;

对于静态链接系统调用,我们使用ex 0,1,2的系统调用代码 3 SYS_READ 1-sys_exit 等等 浏览链接了解更多详情 系统调用列表的链接代码: http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html

我改变了这个:

= x86_64的集合([0,1,5,8,9,10,11,12,16,21,25,63,89,158,219,231])

为此:

= x86_64的集合([0,1,2,3,4,5,8,9,10,11,12,16,21,25,63,89,158,219,231,])

在sample2.py中

,它可以工作。

我的github存储库链接中提供了修改后的sample2.py: https://github.com/palashmaran/libsandbox.git