问题标签 [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.
seccomp - 如何将 seccomp 规则添加到特定进程?
我正在设计一个判断系统,它启动一个新进程,然后限制新进程的 cpu 时间和内存使用量。
为保证安全,有些系统调用不能与新进程一起使用,如fork、clone等。
我尝试使用 libseccomp 来限制系统调用,但是,我不知道如何为特定进程设置规则。如果我在判断进程中设置规则,加载规则后,判断进程也仅限于调用这些系统调用,那么我就不能fork和execv新进程。
docker - 限制 docker 容器内的系统调用
如何限制在 docker 容器内进行的任何系统调用。如果给定进程进行系统调用,它将被阻塞。或者如何将 seccomp 与 docker 一起使用。
c - 查找 seccomp 列入白名单的系统调用
所以我偶然发现了一个使用 seccomp 过滤掉一些系统调用的 C 程序。除了暴力破解之外,是否还有其他方法可以找出实际允许的系统调用。
提前致谢
c - seccomp 如何处理 ptrace 事件
我正在使用seccomp
过滤器来限制进程进行的系统调用。最多使用系统调用白名单来允许和禁止系统调用是可以理解的。我坚持由规则ptrace
产生的事件的概念。seccomp
例如,我可以禁止open
但我想ptrace
在系统调用时生成事件,open
以便我可以确定进程是否可以打开该文件。我的具体问题是如何捕获 seccomp 生成的 ptrace 事件?任何帮助或参考将是一个很大的祝福。
我以卑微的身份搜索了谷歌,但没有找到任何帮助和运行示例。
linux - 在线评委沙盒
我开发了一个 Linux 应用程序,它运行从用户(参赛者)收到的不受信任的代码。更具体地说,该应用程序是在线评委,类似于UVa OJ、SPOJ和Codeforces,但主要类似于BOCA Online Contest Administrator。我的 OJ 支持 C、C++、Java 和 Python。
目前,我的 OJ 非常不安全,因为在运行不受信任的代码时没有沙盒。所以我正在寻找最好的方法来做到这一点。该解决方案的主要要求是:用户(正在设置比赛,而不是参赛者)必须花费尽可能少的精力来设置我的应用程序。我认为,,,,,,,git clone repo
更改一些文件make
,sudo make install
将秘密测试用例放入
pjudge install <contest_dir>
其中已经太多了。cd <contest_dir>
.txt
problems/
pjudge start <port>
chroot(2)
首先,考虑使用/的解决方案,我宁愿让我的软件不安全,也不愿强迫用户设置根目录chroot(8)
。作为开发人员和用户,这个解决方案对我来说比我愿意为这个个人项目受苦更痛苦。
我还考虑了一个解决方案ptrace(2)
,如果它进行了禁止的系统调用,则终止该进程。我尝试了一些简单的代码来查看它是否有效,但对于某些系统调用,它似乎无法正常工作。另外,我想我必须过滤很多系统调用......而且我不知道 JVM/Python 运行时需要什么系统调用......我不确定这个解决方案是否可行。如果有人知道如何正确使用此解决方案,请帮助我!
而且我还发现seccomp(2)
。这使得进程只能调用read(2)
、write(2)
和。这个解决方案似乎很棒。在我的应用程序中实现它很容易,它应该完全按照我的需要工作......但仅适用于 C 和 C++。Java 和 Python 又是一个问题。考虑到我在源代码中使用了+ / (顺便说一下,这是在 C++ 中),我不知道这个解决方案如何适用于后两种语言。_exit(2)
sigreturn(2)
fork(2)
exec(2)
system(3)
任何帮助将非常感激。ptrace(2)
也许是使用/的一些正确/有效的方法seccomp(2)
,或者我缺少的其他一些解决方案。但是,请满足我唯一要求的东西!用户设置我的应用程序应该非常容易、简单和快速。
提前致谢!
ubuntu-14.04 - 如何更改openssh的seccomp过滤器中的规则
我已经用 OpenSSL 1.0.1f 安装了 OpenSSH_6.6p1。它工作正常。OpenSSH_6.6p1 中有一个sandbox-seccomp-filter
。如何更改过滤器中的规则,然后如何再次实现过滤器,以便 OpenSSH 可以过滤特定的系统调用。
tcp - docker restore 失败 - 当使用活动 TCP 连接设置检查点时 - criu
我正在使用cr-defunct checkpoint restore(基于 Ross Boucher 的反馈)从源代码构建 1.10.0-dev 以获取检查点/恢复功能。
当我检查一个没有任何活动 TCP 连接的容器,然后将其恢复到新创建的容器时,我没有任何问题。但是,如果存在活动的 TCP 连接,则还原将失败。失败可能是由于其他原因...我不确定。但在restore.log 中弹出TCP 失败。这是我导致这种情况发生的方式
启动一个 docker 容器(我使用 alpine-sshd)作为基础镜像
然后,我 ssh 进入容器。我已经设置了用户
因此,现在该容器的端口 22 上有一个活动的 TCP 连接,我可以通过进入容器并在容器内执行“netstat -na”来验证它
现在,我使用创建一个新容器(不启动它)
"docker ps -a" 显示两个容器 a1 和 a3
接下来,我使用 checkpoint 选项检查 a1 容器。--leave-running 标志没有影响,因为它没有在实际错误所在的还原中使用
然后我使用 /tmp/ABC 恢复
这会导致以下错误
restore.log 有以下值得注意的错误:
在日志文件的底部
现在,我不需要恢复网络——尽管拥有它会很有用。现在,我只想在具有活动网络连接的先前检查点映像上进行稳定恢复。
请注意,如果我在没有 ssh/TCP 连接的情况下执行整个序列,它会很好地工作。
任何帮助将不胜感激。如果需要,我可以提供完整的 restore.log 和其他文件。提前致谢
linux-kernel - 如何使用 BPF 过滤内核函数参数?
如何使用 Berkeley Packet Filter (BPF) 过滤内核中的函数参数?该函数应该是任何非内联函数,而不仅仅是系统调用。此外,最好可以取消引用函数参数中的指针以进行验证。
我搜索了互联网,但找不到任何用例。大部分资料只描述了如何使用 seccomp / seccomp-BPF。
似乎集成了 eBPF 和 kprobe/jprobe 来实现挂钩。但我在网上找不到一个很好的例子。
seccomp - Seccomp:为什么下面的程序会死锁?
我有一个简单的测试程序:
这在 Ubuntu 16.04 中没有打印任何内容就死锁了。通过阅读有关 seccomp 的文档,我不清楚为什么会发生这种情况。为什么会这样?SIGKILL 不会杀死整个过程吗?
concurrency - Rust 中的进程隔离
我想为协议实现一个服务器。出于安全原因,解析器应在其自己的线程中与程序的其余部分隔离,并且应仅打开双向通道以进行通信。
解析器线程应该失去任何修改其他线程内存的可能性,并失去执行系统调用的能力(使用 seccomp)。
有没有一种简单的方法可以为 Rust 中的解析器线程实现这种行为?