#seccomp #linux #syscalls #instructions #tiny #libseccomp #x86-64

seccomp-tiny

无需libseccomp依赖的Linux seccomp库

2个版本

0.1.1 2020年10月5日
0.1.0 2020年10月5日

#794 in Unix APIs

每月下载 21 次
用于 bandsocks-sand

Apache-2.0 OR MIT

16KB
189 行代码

小型Seccomp

有时你需要一个不包含整个动态库的系统调用过滤器。或者 std。或者分配器。随便!只要在缓冲区中扔一些指令,我们就能做到。

它只是不使用libseccomp的基本seccomp功能。到目前为止只在x86_64上测试/工作。

目前需要nightly rust,因为sc系统调用crate使用了内联汇编。

包含的示例不使用Rust标准库、分配器或任何libc。目前以发布模式编译为36 kB。


lib.rs:

小型Seccomp

有时你需要一个不包含整个动态库的系统调用过滤器。或者 std。或者分配器。随便!只要在缓冲区中扔一些指令,我们就能做到。

此crate不包含任何类型的优化器或编译器用于构建BPF过滤器,但它有一些基本语法,可以以大部分无痛的方式手动构建它们,无需任何分配。

如果您喜欢,可以使用此crate的较低级别的组件,但最容易开始的方式是将指令或指令块添加到seccomp_tiny::ProgramBuffer,然后调用其方法seccomp_tiny::ProgramBuffer::activate()来永久应用过滤器并在失败时panic。

use std;
use seccomp_tiny::{ProgramBuffer, bpf, abi};
let mut p = ProgramBuffer::new();
p.inst( bpf::ret( abi::SECCOMP_RET_ALLOW ) );
p.activate()

依赖项

~240KB