Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
gvisor — 通过用户空间应用内核将容器沙箱化,该内核拦截系统调用、限制宿主机内核访问,并通过 OCI 运行时与 Docker/Kubernetes 集成。 | Kitploit
工具/GitHubGitHub/google/gvisor
云基础设施安全防御工具容器安全安全虚拟化云安全
GitHubgoogle/gvisor

gvisor

通过用户空间应用内核将容器沙箱化,该内核拦截系统调用、限制宿主机内核访问,并通过 OCI 运行时与 Docker/Kubernetes 集成。

查看仓库
19.1k1.9k1天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

gVisor

Build status Issue reviver CodeQL gVisor chat code search

什么是 gVisor?

gVisor 在运行中的应用程序与宿主机操作系统之间提供了一层强大的隔离。 它是一个应用程序内核,实现了类 Linux 接口。与 Linux 不同,它使用 内存安全的语言(Go)编写,并在用户空间中运行。

gVisor 包含一个名为 runsc 的 Open Container Initiative (OCI) 运行时, 使其易于与现有容器工具链配合使用。runsc 运行时与 Docker 和 Kubernetes 集成,让运行沙箱化容器变得简单。

什么不是 gVisor?

  • gVisor 不是系统调用过滤器(例如 seccomp-bpf),也不是 Linux 隔离 原语(例如 firejail、AppArmor 等)的包装器。
  • gVisor 从日常意义上讲也不是虚拟机 (例如 VirtualBox、QEMU)。

gVisor 采用了截然不同的第三条路线,在提供虚拟机诸多安全优势的同时, 保持了普通用户空间应用的低资源占用、快速启动和灵活性。

为什么 gVisor 存在?

容器并不是一个沙箱。尽管容器彻底改变了我们开发、打包和部署 应用程序的方式,但在没有额外隔离的情况下使用它们来运行不受信任或潜在恶意 的代码并不是一个好主意。虽然使用单一共享内核能够带来效率和性能的提升, 但这也意味着仅仅一个漏洞就可能导致容器逃逸。

gVisor 是面向容器的应用程序内核。它限制了应用程序可访问的宿主内核暴露面, 同时仍然让应用程序获得它期望的所有功能。与大多数内核不同,gVisor 并不假设 或要求一组固定的物理资源;相反,它利用现有的宿主内核功能,并作为普通进程 运行。换句话说,gVisor 借助 Linux 实现了 Linux。

不应将 gVisor 与那些用于加固容器以抵御外部威胁、提供额外完整性检查或限制 服务访问范围的技术和工具混淆。人们应始终注意哪些数据会被提供给容器。

文档

用户文档和技术架构(包括快速入门指南)可以在 gvisor.dev 找到。

从源码安装

gVisor 可在 x86_64 和 ARM64 上构建。未来可能支持其他架构。

按照本说明进行构建时,bazel 和其他构建依赖都被封装在一个构建容器中。 您也可以直接使用 bazel,或者输入 make help 查看标准目标。

环境要求

请确保已安装以下依赖:

  • Linux 5.6+
  • Docker 17.09.0 或更高版本

构建

构建一个包含 runsc、containerd-shim-runsc-v1 containerd shim 以及一些 runsc 期望在其旁边的 gvisor-bin/ 目录中找到的 sidecar 二进制文件的发布 压缩包,然后将其解压到 /usr/local/bin:

root@kitploit:~
make release-tarball DESTINATION=bin/
sudo tar -C /usr/local/bin -xf bin/gvisor.tar.bz2

要构建特定的库或二进制文件,可以指定目标:

root@kitploit:~
make build TARGETS="//pkg/tcpip:tcpip"

直接使用 Bazel 构建(无需 Docker)

由于额外的开销,不建议直接使用 Bazel,但您可以按以下方式开始:

  • 查看 构建 dockerfile 以获取标准的 依赖列表。
  • 安装并使用 bazelisk。否则,请确保您的 bazel 版本与 .bazelversion 文件中列出的版本匹配。

设置好依赖后,使用 Bazel 与 Makefile 类似:

root@kitploit:~
bazel build -c opt //debian:gvisor-release-tar

测试

要运行标准测试套件,您可以使用:

root@kitploit:~
make unit-tests
make tests

要运行特定测试,可以指定目标:

root@kitploit:~
# Makefile
make test TARGETS="//runsc:version_test"
# Bazel
bazel test //runsc:version_test

Mac OS

某些软件包支持直接在 macOS 上运行测试。在撰写本文时,gVisor 需要 bazel 8, 您可以通过 homebrew 安装:

root@kitploit:~
brew install bazel@8

# You can then run the tests, e.g.:
$(brew --prefix bazel@8)/bin/bazel test --macos_sdk_version=$(xcrun --show-sdk-version) -- //tools/nogo/... //tools/check{aligned,const,escape,linkname,locks,unsafe}/...

使用 go get

本项目使用 bazel 来构建和管理依赖。为了方便,维护了一个与标准 go 工具链兼容的合成 go 分支。这对于依赖 gVisor 子包(例如通过 Netstack 使用用户态网络)的外部包和库来说非常有用,可以将 gVisor Go 代码导入到它们 的 Go 项目中。

请使用 go 分支查询显式选择该分支。@latest 解析到 master,这需要 Bazel, 并且与标准 Go 工具链不兼容:

root@kitploit:~
go get gvisor.dev/gvisor/pkg/tcpip/transport/tcp@go

注意:不支持从此分支构建 runsc。gVisor 和 runsc 需要若干个二进制 文件(其中一些甚至不是用 Go 编写的)才能正常运行。go 分支以尽力而为的方式 提供支持,并且不支持直接在此分支上进行开发。开发应在 master 分支上进行, 然后会同步到 go 分支。

社区与治理

有关项目治理信息,请参阅 GOVERNANCE.md。

gvisor-users 邮件列表 和 gvisor-dev 邮件列表 是提问和讨论的良好起点。

安全策略

请参阅 SECURITY.md。

贡献

请参阅 Contributing.md。

下载工具