用于insights组件的bubblewrap沙盒。
insights-sandbox的Python项目详细描述
洞察沙盒
运行规则时只能访问必需的二进制文件和存档工作 目录。在
战略
- 使用bubblewrap (bwrap)创建沙盒。
- 只启用所需的linux名称空间(请参阅
man namespaces
以了解更多信息)。在
- 只启用所需的linux名称空间(请参阅
- 通过命名管道使用zeromq与沙盒通信。
- zmq隐藏底层缓冲区详细信息(
man 7 pipe
对于fifo)。在
- zmq隐藏底层缓冲区详细信息(
建筑
Client <-> runner adapter proxy <-> named pipes <-> [controller <-> runner adapter <-> runner]
Client
创建命名管道和使用bwrap
来
调用insights_sandbox.consumer
。在
客户机创建一个RunnerAdapterProxy
,并用zmq
对其进行配置
用于通过管道发送和接收消息的函数。代理人是
用于通过Controller
和RunnerAdapter
设置{
安装
^{pr2}$测试存档
./driver.py -p examples.rules <archive>
示例代码
#!/usr/bin/env python3"""This script is only for testing the sandbox."""importargparsefrominsightsimportdr,parse_pluginsfrominsights_sandbox.clientimportClientdefparse_args():p=argparse.ArgumentParser()p.add_argument("--plugins","-p",help="plugins to load",default="")p.add_argument("archive",help="pass an archive to analyze.")returnp.parse_args()defmain():args=parse_args()broker=dr.Broker()packages=parse_plugins(args.plugins)withClient(packages=packages)asclient:doc=client.process(args.archive,broker=broker)print(doc["results"].decode("utf-8"))if__name__=="__main__":main()
- 项目
标签: