问题标签 [seccomp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3656 浏览

kubernetes - 无法创建 pod 沙箱:rpc 错误:code = Unknown desc = seccomp 在您的内核中未启用,无法使用配置文件运行

我在使用 kube 和 Cri-o 时遇到问题。实际上我正在部署一个 kube 集群,我只是不想部署仪表板。我安装了 CRIO 而不是 Docker(生产环境中的 RHEL8)。“describe pod”命令的输出日志为:

我试过这个: grep SECCOMP /boot/config-$(uname -r)

有了这些回报,我认为这是启用的......

在我安装 kube 的过程中,我在我的系统中发现了一个 seccomp.json 文件,我试图seccomp_profile在 CRI-O 的配置部分中设置绝对路径,但不是......这不是解决方案......

有没有人有想法...?

问候,

0 投票
1 回答
1221 浏览

docker - 使用默认 seccomp 配置文件时,Docker 无法构建映像

当我尝试构建 docker 映像时,出现以下错误

OCI 运行时创建失败:container_linux.go:346:启动容器进程导致“seccomp:提供配置但不支持 seccomp”:未知

我在跑docker build -t cprates/lws_base:latest -f Dockerfile.base .

Dockerfile 是一个基本的 dockerfile,没有什么特别之处

我怀疑这在系统更新后开始发生,但不确定。我可以不使用默认的 seccomp 配置文件来运行容器--security-opt seccomp=unconfined。但docker build不收旗--security-opt

我已经按照官网的说明重新安装了 docker-ce 。

我正在使用根据文档支持的 Fedora 30:

码头工人版本

码头工人信息

关于可能是什么问题的任何线索?

0 投票
1 回答
250 浏览

linux - 如何编写seccomp BPF程序过滤系统调用指令指针

是否可以编写一个 seccomp-BPF 程序来过滤系统调用指令指针?例如,要杀死不是从libc.

0 投票
0 回答
151 浏览

docker - 在不传递标志的情况下修改 ptrace

我正在使用 MPI 在某个平台上运行一些分布式培训。在培训期间,我看到了大量的印刷品,例如:

经过一番调查,我发现它是由默认的 docker Seccomp 引起的。如果我用--cap-add=SYS_PTRACE那些大量打印运行 docker 就会消失。

但是,我无法添加标志,docker run因为我无法控制 docker 图像的启动:它们是由平台启动的。那么,有没有办法修改ptraceDockerfile 或 docker 容器内的设置?

另一个发现是运行 MPIbtl_vader_single_copy_mechanism none会禁用这些打印,但性能会受到损害,所以这不是一个选项。

任何帮助将不胜感激!

0 投票
0 回答
70 浏览

docker - 我可以将 Google Container Optimized OS 用作安全的容器沙箱吗?

我有一个运行 Googles Container Optimized OS 的 VM,我想允许运行用户提供的代码 - 每个用户都有自己的容器。

这段代码可能是恶意的——我想将代码的范围限制在它自己的容器中。

https://cloud.google.com/container-optimized-os/docs/concepts/security

问题

A. 操作系统是否为容器添加了足够的保护以用作沙盒?该文档提到增加了安全性,但没有提及它在容器中包含恶意代码的有效性。

B. 可以使用 docker 卷来限制在容器中运行的代码的文件系统范围吗?我想使用 CLI 提供的 docker volume 为每个用户在磁盘上提供一个他们可以写入的文件夹,但我想阻止用户读取彼此的数据。

非常感谢任何帮助,谢谢。

0 投票
1 回答
165 浏览

linux - 为什么加载 seccomp 过滤器会影响允许和有效的能力集?

我最近正在使用 and 编写程序,libcap并且libseccomp在将它们一起使用时发现了一个问题。

在下面的最小可重现示例中,我首先将当前流程的能力设置为P(inheritable) = CAP_NET_RAWonly,其他能力集被清除。然后,我使用操作初始化一个 seccomp 过滤器SCMP_ACT_ALLOW(默认情况下允许所有系统调用),加载它并清理它。

最后,这个程序打印它当前的能力,并在执行capsh --print后执行以显示它的能力execve()

-lcap用and编译,-lseccomp在root用户(UID=EUID=0)下执行,得到:

它表明当前进程和执行的capsh所有进程都具有可继承集而不是空的。但是,如果我评论 line rc = seccomp_load(ctx);,情况会有所不同:

之前execve(),结果与上面相同。但在那之后,所有其他能力都回到了允许和有效的集合中。

我查找了capabilities(7),并在手册中找到了以下内容:

这就是我感到困惑的地方:可继承集不为空,根据简化规则,允许和有效集都不应为空。但是,“加载 seccomp 过滤器”似乎违反了这条规则。

0 投票
1 回答
253 浏览

go - 是否可以从 Go 进程应用 Linux 内核 SECCOMP 配置文件?

我正在尝试在内核 SECCOMP过滤器的支持下实现系统调用跟踪器,以通过过滤一些系统调用类型来减少开销。

我发现的所有实现都在 C 中,由于 Go 线程/go-routines 和fork().

示例代码(C):

经过一些研究,我发现为了fork()在 Go Lang 中执行类似的功能,我们可以使用syscall.ForkExecexec.Command,但两者似乎都仅限于可以通过参数syscall配置的一组 pre-exec 操作.SysProcAttr,虽然它提供对 PTRACE_TRACEME 调用的支持,但它不提供对 SECCOMP 所需的 prctl() 的任何支持。

有没有办法从 GoLang 生成的进程中启动一个“ptraceable”“seccomped”子进程?

0 投票
1 回答
141 浏览

python - 如何在 Python 中使用 seccomp 和 proc 文件系统识别进程?

我必须编写一个 Python3 程序来计算使用 seccomp 的虚拟机上的每个进程。它应该使用 proc 文件系统来识别这些进程,但我不知道该怎么做。一般来说,我会浏览这个文件系统中的每个文件夹,打开文件并搜索字符串“seccomp”。如果它发生,我会增加一个计数器。这只是理论上的,因为我不知道如何实现它。这是列出每个进程并将其添加到列表中的一次尝试,但它无法访问进程

0 投票
1 回答
457 浏览

linux - 在孩子中安装 seccomp 过滤器

我想知道是否可以在 Go 程序的子进程中安装 seccomp 过滤器。目前我正在生成子进程,如下所示:

这很好用,并SysProcAttr提供了一种在子进程中启用 Ptrace 的机制。但是,似乎不支持在孩子中安装 seccomp 过滤器。我知道https://github.com/elastic/go-seccomp-bpfhttps://github.com/seccomp/libseccomp-golang但这些库似乎只支持在当前进程(以及任何子进程)中安装 seccomp 过滤器从当前进程产生的)。我只想在子级中安装过滤器,而不是在父级中,因为我不希望父级也被沙箱化。

在 C 语言中,在子进程中安装 seccomp 过滤器的机制是分叉,在当前进程(从子进程中)安装过滤器,然后执行。但是,在 Go 中似乎不支持像这样分离 fork 和 exec。有什么办法可以解决这个问题,还是我需要使用 C 来正确执行此操作?

可以SysProcAttr扩展为允许 seccomp 过滤器,或者允许在 fork 之后和 exec 之前运行任意代码(在某些时候我假设它调用 fork 然后 exec)?我将如何实施呢?

0 投票
1 回答
58 浏览

c - 是否可以在 seccomp 过滤器中获取当前 PID?

通过 SECCOMP_RET_USER_NOTIF处理 seccomp 用户空间通知 ( https://www.kernel.org/doc/html/latest/userspace-api/seccomp_filter.html ) 时,我发现 PID 作为 seccomp_notif 结构的一部分对于某些过滤决策非常有用。在 ebpf 过滤器中,辅助函数(如 bpf_get_current_pid_tgid())可用于获取此类信息。但由于 seccomp 似乎只支持经典的 BPF,我想知道是否还有其他方法。据我所知,在 seccomp 过滤器内部只能访问 seccomp_data 结构。有没有办法直接获取 seccomp 过滤器中的 PID 等特定信息?