问题标签 [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 投票
0 回答
45 浏览

docker - 非特权 Docker 容器中的 SECCOMP_MODE_STRICT

运行正常的非特权 Docker 容器时,似乎无法应用 SECCOMP_MODE_STRICT,返回EINVAL. SECCOMP_MODE_FILTER正常工作,并使用--privileged--security-opt 'seccomp=unconfined'允许MODE_STRICT工作。之前有人问过这个问题(Is it possible to use SECCOMP_SET_MODE_STRICT inside an unprivileged docker container?)但没有给出真正的答案。

我看到了一种解决方法,而不是使用 BPF 过滤器来执行相同的功能,但我更愿意使用标志/功能来允许这样做。

0 投票
0 回答
124 浏览

python - 我可以在 Amazon Lambda 上使用 seccomp

我正在尝试使用 Amazon Lambda 来托管一个编程学习平台,我必须在其中执行简单的不受信任的 Python 代码。

我最近以一种简单的方式隔离用户代码的尝试是用于seccomp禁用除从文件读取和写入stdout/之外stderr的任何内容,代码如下所示:

这在本地运行良好,但在 Amazon Lambda 上,它没有找到该seccomp库。

我尝试将libseccomp.2我的 Debian 稳定机器包含在 Amazon Lambda 函数中,并且代码一直运行到f.load(),但随后失败

seccomp_load返回是否EPERM意味着我根本无法在 Amazon Lambda 上使用 seccomp,或者我做错了什么。

0 投票
0 回答
40 浏览

docker - 捕获 Docker 容器的 seccomp 违规

我想捕捉任何违反禁止系统调用的容器,以 seccomp 配置文件开始,执行。例如,我的配置文件将 chown 定义为被阻止,这在容器内也是被阻止的。现在,我想记录容器是否尝试执行此类系统调用。

我发现Sysdig可能会有所帮助,但似乎没有必要,因为 seccomp 应该能够启用某种日志记录。我只是不知道如何从主机中的容器记录被阻止的系统调用。

0 投票
1 回答
73 浏览

linux - 使用 seccomp 配置文件从 C 运行进程

我想运行一个应用了 seccomp 配置文件的进程(可以来自 C、终端等)。特别是,我希望不允许目标命令读取和写入任何文件,它可以打印到控制台。我的临时 C 大纲是这样的:

我遇到的问题是execl使用了一些在我的个人资料中被阻止的系统调用。如何确保 only 仅应用于[sample command with arguments]. 同样,这不必在 C 中。基本上,我想运行一些可执行文件,并应用于seccomp这些进程。我正在使用 Ubuntu 18.04。

0 投票
1 回答
122 浏览

python-3.x - 如何对 Python 程序进行安全加固?

限制/沙箱 Python 程序的最佳方法是什么?

如何将 Python 程序限制为只能访问一个网站并打印到stdout

pyseccomp用来限制程序可以进行的系统调用列表,但我在网上找到的文档很少,不得不将 32 个系统调用列入白名单以使程序工作(包括不受限制write()openat()限制为只读(但我不知道有一种方法可以将其限制为特定路径)。

seccomp用于此目的的正确工具吗?即它是最安全的,但有小开销的限制(例如,不能添加几秒钟、数百 MB 的 RAM,或者不能用 pip3 安装的库)。有没有更好的工具可以让 Python 只读取库,而不是其他文件?


我的程序用于pandas.read_html解析网站中的表格,然后我有一个功能可以在将数据re.match(...)打印到stdout. 它将始终在 Linux 上运行。

0 投票
1 回答
461 浏览

c - 使用 seccomp 过滤器获取“错误系统调用”

我刚刚开始学习 seccomp 过滤器,我正在使用libseccomp v2.4.4。我试图编写一个基本的白名单过滤器,它只允许写入名为的文件file1,但我在STDOUT. 这是我的代码:

此外,我在file1. 我只是一个初学者,对这里的很多事情都不确定,因为我是根据自己的理解而不是参考来编写代码的。似乎是什么问题?


编辑:我完全删除了过滤器并简单地执行了

跟踪这一点,我观察到 syscalls fstatclose正如@pchaigno 下面的答案中提到的那样,另外mmapmunmap正在被调用。所以我必须允许这些系统调用来实现预期的行为。

0 投票
1 回答
73 浏览

c - BPF:如何将跳转值设置为存储在累加器中的值?

我正在使用 seccomp BPF,需要将跳转语句(始终为条件跳转/跳转)的跳转值(jt/ jf/ k)设置为存储在累加器中的值。这可能吗?我有一种预感,它不是,因为 BPF 验证器在加载过滤器之前无法检查跳转值。如果没有,是否有任何解决方法?

我试着看这里,但我想不出任何办法。我对 BPF 的了解也相当初级,并且只在 seccomp 的范围内。你能帮助我吗?谢谢你的时间。

0 投票
0 回答
26 浏览

c - 有没有办法不将 seccomp 过滤器继承给子进程?

所以让我们假设我有一个这样的简单程序:

是否可以不继承对 execve 产生的进程的限制?(我们正在谈论配置,我不想在 execve 调用之前再调用任何与 seccomp 相关的东西)

0 投票
1 回答
25 浏览

sandbox - 如何可靠地观察可执行文件正在访问哪些路径?

在 Linux 或 macOS 中,有没有办法观察 x86-64 可执行文件试图访问哪些路径,以便:

  1. 我可以看到每个文件访问的路径,并且在我不知道的情况下,可执行文件无法直接或间接读取任何文件的内容。

  2. 可执行文件无法检测到它正在被观察,或者我可以检测到可执行文件正在尝试检测它是否被观察。

我知道有两种机制:seccomp 和 strace。Seccomp/BPF 在第 1 点失败,因为它看到指针参数,但它不能可靠地取消引用它们。Strace 在第 2 点失败,因为有一些琐碎的检查,它们本身是不可追踪的。

可执行文件将在容器或虚拟机中运行,但我仍然想知道他们在沙箱周围窥探了多少。


背景:我正在写的基本上是一个基于启发式的杀毒软件。我想根据我的规范检查第 3 方程序是否“表现良好”。我深知这是傻子的差事,是一种虚假的安全感,逃避这种检查的方法数不胜数。我的目标是抓住明显的尝试,并将剥削和逃避的标准提高至少一个等级,高于“对任何孩子来说都是微不足道的”。我知道正确的方法是首先不使用任意可执行代码,但这部分超出了我的控制范围,我只是想让糟糕的情况变得不那么糟糕。

0 投票
0 回答
2005 浏览

docker - 在 docker 中添加自定义 seccomp 配置文件

我正在尝试使用带有命令的自定义seccomp配置文件;docker run但是,我调用了以下错误-

这个问题的可能原因是什么?

请注意,我已修改默认seccomp配置文件以启用 Linux perf tool(我已关注此帖子)。