seccomp 是个好东西

💡 原文中文,约2700字,阅读约需7分钟。
📝

内容提要

在实现 git 商城时,作者遇到收款问题,决定让卖家在仓库中放置 js 脚本处理支付。为确保安全,作者使用 seccomp 过滤系统调用,限制 node 进程的权限,仅允许访问必要文件,从而在沙箱环境中运行,防止安全风险。

🎯

关键要点

  • 在实现 git 商城时,作者遇到收款问题,决定让卖家在仓库中放置 js 脚本处理支付。
  • js 脚本在用户支付时运行,生成支付链接,支持网页或支付宝、微信的 scheme 地址。
  • 作者希望以子进程方式运行 node,而不是将其嵌入主程序,以确保安全性。
  • 即使不使用 root 权限,node 仍可能进行危险操作,如挖矿、偷数据等,因此需要限制其权限。
  • 作者使用 seccomp 过滤系统调用,限制 node 进程的权限,仅允许访问必要文件。
  • seccomp 通过 BPF 代码过滤系统调用,允许或拒绝执行,并可将决定反馈给父进程。
  • 父进程可以根据需要允许或拒绝子进程的系统调用,确保 node 进程在沙箱环境中安全运行。

延伸问答

seccomp 是什么,它的作用是什么?

seccomp 是一种系统调用过滤机制,可以限制进程的系统调用权限,从而提高安全性。

在实现 git 商城时,作者如何处理支付问题?

作者让卖家在仓库中放置 js 脚本,用户支付时运行该脚本生成支付链接。

为什么作者选择使用子进程运行 node?

作者希望通过子进程运行 node,以确保安全性,避免将其嵌入主程序。

使用 seccomp 过滤系统调用的具体步骤是什么?

使用 seccomp_init 初始化,添加规则 seccomp_rule_add_exact,最后通过 seccomp_load 安装过滤器。

seccomp 如何处理被拒绝的系统调用?

seccomp 可以通过将决定反馈给父进程,父进程可以选择允许或拒绝子进程的系统调用。

作者如何确保 node 进程在沙箱环境中安全运行?

作者通过 seccomp 限制 node 进程的权限,仅允许访问必要的文件,从而确保安全。

➡️

继续阅读