这个项目能做什么

Fence 是一个 GitHub Action,旨在减少 GitHub 托管的 Linux 工作流作业中不必要的网络访问,并削弱常见的逃逸路径。该项目被描述为处于早期阶段并正在积极开发中。支持的环境是使用 ubuntu-24.04 或 ubuntu-latest 的 GitHub 托管 x64 运行器。 当作为第一个作业步骤放置时,Fence 允许 GitHub Actions 和托管运行器所需的连接,以及在其允许列表中明确配置的目标,同时阻止其他出站连接。它还默认关闭免密 sudo 和 Docker 或容器访问。保护措施会一直保持活动状态,直到作业结束;如果 Fence 检测到其控制措施发生意外更改,作业可能会失败。 允许列表支持主机名、IPv6 地址、自定义 TCP 和 UDP 端口、CIDR 范围,以及一级或两级主机名通配符。裸主机名默认使用 TCP 端口 443,允许列表最多可包含 64 个唯一条目。审计模式会记录 Fence 将会阻止的内容,但不强制执行网络、sudo 或 Docker 限制,帮助用户在切换到阻止模式之前推导出允许列表。 可选设置包括 allow_github_artifacts,用于有限访问 Actions 工件、GitHub Pages 和缓存所使用的存储端点,以及 container_policy: unsafe_preserve,用于需要 Docker 的作业。文档警告说,这两个选项都可能增加数据外泄或隔离风险。Fence 还会将网络活动表写入作业摘要和作业后日志,其中包括一行可通过 GitHub 作业日志 API 获取的机器可读 FENCE_REPORT_JSON。 Fence 并未被描述为一个完整的沙箱。所需的 GitHub 和 Azure 连接仍然可用,Azure 实例元数据服务仍然可达,而 Azure WireServer 访问仅限于 root 拥有的主机进程。安全指南建议将 Action 固定到已发布版本中的完整提交 SHA,而不是使用 main。Fence 在 MIT License 下发布。