gvisor实现的容器中启动新内核

什么是 gVisor? 是一种由 Google 开发的容器沙盒技术,旨在为容器提供更强的隔离和安全性。它通过模拟 Linux 内核的方式,拦截并控制容器发出的系统调用,让容器与宿主机之间形成一个“安全缓冲层”。如果传统容器是直接和宿主机的内核打交道,那么 gVisor 就像一个“中间人”,用它自己的方式管理容器的操作,从而保护宿主机的安全。 阅读详情

gvisor

gvisor是google发布的安全容器。
gVisor 工作的核心,在于它为应用进程(用户容器),启动了一个名叫 Sentry 的进程。 而 Sentry 进程的主要职责,就是提供一个传统的操作系统内核的能力,即:运行用户程序,执行系统调用。所以说,Sentry 并不是使用 Go 语言重新实现了一个完整的 Linux 内核,而只是一个对应用进程“冒充”内核的系统组件。(这段是抄的)
作为安全容器,利用容器中的内核来隔离大部分内核攻击,确实是一个不错的想法,然而这个新内核属于定制内核,估计很多功能还不完善,据说用了ptrace和kvm两种方式实现,我这里来探索下kvm的实现方式。

kvm

kvm是linux的硬件虚拟化的的抽象模块,方便用户构建硬件虚拟化的虚拟机。最全的资料应该还是intel或amd各家的硬件开发手册,我之前有几篇相关的文章,所以就不啰嗦VT虚拟化了。

gviosr如何劫持容器中的系统调用

根据我的观察,gvisor对于VT技术(kvm)的使用核心逻辑图如下:
在这里插入图片描述
这里在信号里创建了个VMM(虚拟机管理器)。简单讲就是初始化客户机状态,和VMM状态,设置各种vm_exit标识,用来劫持客户机的各种硬件或软件行为。之后在kvm的设备句柄中 发送_KVM_RUN状态就可以运行客户机代码,也就是我们需要的新内核的代码。

kvm中设置系统调用表地址

在这里插入图片描述
MSR_LSTAR代表内核可以操作的系统寄存器,一般用来存放系统调用表。如上图,linux内核也是这样做的,存放了entry_SYSCALL_64。
gvisor利用kvm对虚拟机化中的系统表进行改写位于kernel——amd64.go(startGo)

func startGo(c *CPU) {
	// Save per-cpu.
	WriteGS(kernelAddr(c.kernelEntry))

	//
	// TODO(mpratt): Note that per the note above, this should be done
	// before entering Go code. However for simplicity we leave it here for
	// now, since the small critical sections with undefined FPU state
	// should only contain very limited use of floating point instructions
	// (notably, use of XMM15 as a zero register).
	fninit()
	// Need to sync XCR0 with the host, because xsave and xrstor can be
	// called from different contexts.
	xsetbv(0, sentryXCR0)

	// Set the syscall target.
	wrmsr(_MSR_LSTAR, kernelFunc(addrOfSysenter()))
	wrmsr(_MSR_SYSCALL_MASK, KernelFlagsClear|_RFLAGS_DF)

	// NOTE: This depends on having the 64-bit segments immediately
	// following the 32-bit user segments. This is simply the way the
	// sysret instruction is designed to work (it assumes they follow).
	wrmsr(_MSR_STAR, uintptr(uint64(Kcode)<<32|uint64(Ucode32)<<48))
	wrmsr(_MSR_CSTAR, kernelFunc(addrOfSysenter()))
}
TEXT ·sysenter(SB),NOSPLIT,$0
	-->kernelSyscall(SB)
		-->ring0.SaveFloatingPoint(c.floatingPointState.BytePointer())
		-->ring0.HaltAndWriteFSBase(regs) 

如上实现了虚拟化的系统调用表。这之后就可以猜测,系统调用大部分逻辑可以被重新实现,少数重定位到真实内核中的系统调用。

这里有个疑问,为什么要放在信号里创建VMM, 直接创建也可以吧。可能是容器中启动程序,用信号来劫持容器执行流更方便,有看过的可以交流下。

一些后续的想法

1.能否启动完整的内核?利用kvm我的想法是可以启动完整的内核。因为这里完全可以实现完整的虚拟机管理器,之所以采用简化的内核,可能是考虑到性能问题,毕竟完整的虚拟机还是有一定的消耗的。
2.安全性。安全性有了较大的提升,但还是存在攻破的可能,因为是虚拟化技术,有可能发生逃逸。
3.维护新内核的成本估计也不低。

gVisor容器沙箱实战:原理、部署与安全隔离深度解析 容器技术通过命名空间和控制组实现了进程与资源的隔离,但其共享宿主机内核的架构带来了潜在的安全风险,内核漏洞可能导致容器逃逸。为了在保持轻量化的同时增强隔离性,沙箱技术应运而生,它通过拦截和处理系统调用,为容器应用构建了额外的安全边界。gVisor作为一项创新的容器运行时,实现了一个运行在用户态的安全内核(Sentry),它模拟了Linux系统调用的关键子集,并与文件系统代理(Gofer)协同工作,将攻击面从完整的内核大幅缩小。这种架构为运行不可信代码、构建多租户平台以及部署金融、政务等安全敏感应用提供了强大 阅读详情

相关推荐

别再只盯着runc了!用gVisor给你的Docker容器加个‘金钟罩’(附CentOS 7内核升级避坑指南)

本文详细介绍了如何利用gVisor为Docker容器提供更强的安全隔离,替代传统的runc运行时。通过实战指南和CentOS 7内核升级避坑技巧,帮助用户在不改变现有工作流的情况下构建安全沙箱,有效防御容器漏洞攻击。文章还涵盖了gVisor的集成流程、性能优化及生产环境调优建议。

weixin_30902251的博客 505

gVisor使用探索

容器虽然带来了高效快捷的虚拟化,但是由于共用内核,容器的安全性也是最受关注的。gVisor是google引入的一套全新的容器安全解决方案,重新实现容器进程的每一个系统调用,其性能相比runc等下降了不少。本文主要介绍gVisor的基本概念及在docker中使用gvisor运行容器。

qq_40711766的博客 5073

龙芯3B6000安装Docker 29.5.1:LoongArch架构的容器化部署实战

如果你正在使用龙芯 3B6000 处理器,并且尝试安装 Docker 29.5.1 或更高版本,你很可能已经发现了一个令人头疼的现实:官方 Docker 仓库并没有为 LoongArch 架构提供预编译的 RPM 包。这不仅仅是“缺少一个包”那么简单,它背后反映的是国产 CPU 生态在拥抱主流开源软件时,从“能用”到“好用”之间那道必须跨越的鸿沟。 很多开发者会下意识地选择从源码编译,但这在龙芯平台上远非一条坦途。Docker 29.x 系列依赖的 Go 版本、containerd、runc 等组件,其编译

com_xpp的专栏 478

CKS之安全沙箱运行容器:gVisor

gVisor是Google开源的一种容器沙箱技术,其设计初衷是在提供较高安全性的同时,尽量减少对性能的影响。通过创建一个用户空间内核,gVisor拦截并处理容器内应用程序的系统调用,从而实现对容器内进程与宿主机内核间交互的隔离。这种设计有效防止了恶意程序利用内核漏洞对宿主机造成影响。gVisor兼容OCI标准,可以无缝集成到Docker和Kubernetes(K8s)中,使其部署和使用变得更为便捷。:增强了容器的安全性,有效隔离了容器与宿主机内核的直接交互。

DwanCloud 2936

60、云计算中的虚拟化技术:全面解析与比较

本文深入探讨了云计算中的各类虚拟化技术,涵盖硬件虚拟化、操作系统虚拟化(容器)和轻量级虚拟化的核心特性与性能对比。重点分析了云环境下的资源控制检查方法、主流轻量级虚拟化项目(如Firecracker、Kata Containers、gVisor)的技术特点,并对FaaS、SaaS及Unikernels等新兴技术进行了评述。通过详细比较不同虚拟化方案在性能、安全性、资源灵活性和可观测性方面的优劣,提供了技术选型建议与未来发展趋势展望,帮助用户根据实际需求选择最优虚拟化解决方案。

l3m4n的博客 60

Qt制作大数据可视化大屏展示电子看板

Qt制作大数据可视化大屏展示电子看板 解决当前最火的大数据可视化大屏展示,整个项目通过Qt开发,集成了QML/QChart/ECharts及自定义控件等模块,所有的可视化控件都可以集成到其中。可以随意增加和减少模块,各个模块可以随意拖拽,整体可以个性化布局。模块标题栏可自定义,包括标题文本信息、文本颜色、宽度/高度、背景颜色、按钮个数等功能,满足各个样式需求。 实例中主要展示了现成的一些仪表盘...

Qt自定义控件及应用开发 7707

微虚机之gVisor

gVisor是google最新推出的一种进程级别的沙箱技术,因为跟Kubernets同一出身,所以天然的兼容于Kubernets的调度管理。 沙箱不同于传统的容器以及微虚机,众所周知,容器是通过namespace跟cgroup实现资源隔离,微虚机则通过传统的虚拟化技术(KVM),而gVisor怎是在进程界别实现了系统调用的劫持以及重定向。好处么,很明显,它不需要物理隔离资源的建立这一过程,直接应...

专注虚拟化的Linuxer 4406

Labview执行adbshell操作

一、目录 1、实现思路 2、adbshell工具配置 3、Labview执行命令窗口 1、实现思路 使用Labview的优点: 1、可以配合电源系统或者调用其他接口工具实现更高程度的自动化测试; 2、直接执行Linux相关命令,编写相关执行顺序或者逻辑更简易; --------可以用adbpush命令将.sh的脚本文件推入控制器内部执行; 3、Ubuntu系统比较大,如果只是日常执行脚本测试还是比较占用磁盘空间; 2、adbshell工具配置 1)下载adbshell工具; adbshell工具下载链

zataji的博客 2053

Substrate:gVisor中的轻量级容器沙箱运行时

Substrate 是 Google gVisor 项目中实现用户态内核接口模拟的核心执行引擎,属于容器安全增强型 OCI 运行时。其原理是通过 Go 编写的 syscall 拦截与重实现,在不依赖虚拟化的情况下构建强隔离沙箱,显著提升 Kubernetes 中不可信 Agent 的执行安全性。技术价值体现在低开销(<30ms 启动、15MB/Pod)、细粒度 syscall 控制、原生适配 RuntimeClass 与 Device Plugin 等关键能力。典型应用场景包括 CI/CD 构建 Agent

weixin_30402231的博客 251

基于IMX429-IMX430-IMX432-IMX437系列传感器的SLVS-MIPI桥接方案设计与实现

本文详细介绍了针对索尼IMX429、IMX430、IMX432及IMX437系列传感器的SLVS-MIPI桥接方案设计与实现。针对工业视觉、车载摄像头等应用中主流SoC仅支持MIPI接口的痛点,提出基于FPGA(如Lattice Crosslink-NX)的透传桥接方案,将传感器输出的SLVS信号无损转换为MIPI CSI-2信号,确保数据完整性与低延迟,并探讨了硬件选型、逻辑设计及多传感器兼容性等关键问题。

weixin_29230901的博客 463

ESP8266红外控制美的空调:从协议解析到Home Assistant集成

红外遥控技术作为一种经典的非接触式控制方式,其原理是通过红外发光二极管发射经过特定频率调制的光信号来传递指令。在物联网和智能家居领域,利用微控制器如ESP8266模拟红外信号,成为将传统家电接入智能生态系统的关键技术。这项技术通过精准解析和生成符合设备厂商私有协议的红外编码,实现了对空调、电视等设备的远程与自动化控制,具有很高的实用价值。本文聚焦于美的空调的红外协议,深入探讨了其脉冲宽度调制(PWM)和全量式编码的特点,并提供了基于ESP8266的完整解决方案,包括硬件连接、库函数API详解以及如何将其无缝

weixin_30718391的博客 402

Redroid 容器化 Android 部署实战:从内核检查到多实例调优

容器化技术通过 Linux 内核的 namespace 和 cgroup 实现资源隔离,而 Android 容器化则依赖 binder、ashmem 等内核模块,让 Android 用户空间直接运行在宿主机内核上,无需硬件模拟。这种方案大幅降低了虚拟化开销,提升了实例密度和启动速度,适用于云手机、自动化测试、应用多开等场景。Redroid 作为典型实现,通过 Docker 镜像封装完整 Android 系统,支持 GPU 加速和 ADB 调试,但在部署前需确保内核支持 binderfs 和 memfd,并合

weixin_34315485的博客 294

OpenClaw安卓手机攻略

想在安卓手机上安装 OpenClaw,目前主要有两种主流方法:一种是使用专门的,操作简单直观;另一种是在命令行环境下进行,自由度更高。你可以根据自己的偏好和动手能力来选择。

suny8的专栏 2900

从每天300万沙箱反推Agent训练基础设施:高并发沙箱系统设计与实践

在AI工程领域,沙箱是保障代码安全执行与训练环境标准化的关键基础设施。面对高并发场景下短生命周期任务的海量创建与销毁,传统容器运行时往往力不从心。基于调度、池化、缓存与回收机制的体系化设计,能够将冷启动压缩至百毫秒级,并在资源隔离与吞吐量之间取得平衡。这类系统被广泛用于Agent训练、RLHF数据回环及AI编程工具的可信执行环境。本文从日均300万次沙箱执行的规模出发,拆解进程级隔离、gVisor与microVM等分层方案,并给出可落地的实施路径,帮助工程团队构建稳定高效的代码执行基础设施。

weixin_33417488的博客 275

随机优化 (Stochastic Optimization) 算法详解及案例分析

随机优化是一种用于处理包含随机变量的优化问题的方法。其目标是通过考虑随机变量的概率分布,找到一个在期望意义下最优的解。

闲人编程的博客 4181

DC/DC开关电源学习笔记(十三)Buck-Boost升降压电路工作原理

Buck-Boost电路是一种能够实现输出电压高于或低于输入电压的DC-DC变换器,且输出电压极性与输入电压相反。它结合了Buck(降压)和Boost(升压)两种拓扑的特点,广泛应用于需要灵活电压调整的场合,如电池供电设备、LED驱动和工业控制系统。本文将从电路结构、工作原理、关键公式推导及实际应用等方面进行详细分析。

小幽余生不加糖 3505

告别Kubernetes复杂编排!Docker AI Toolkit 2026内置AI工作流引擎(支持LangChain v0.3+):3行Dockerfile启动RAG应用

告别Kubernetes复杂编排,Docker AI Toolkit 2026最新版功能支持开箱即用的AI工作流引擎,内置LangChain v0.3+集成,3行Dockerfile即可启动RAG应用。聚焦本地开发与轻量部署场景,提供标准化最佳实践。值得收藏。

DebugVibe的博客 144

【C#程序员入门AI】AI应用的操作系统:Semantic Kernel 2026实战

用户ID用户信息

人工智能AI技术 1249

Substrate 作为可信 agent 运行时:Wasm 沙箱与状态树驱动的新型基础设施

在分布式系统演进中,'agent' 已从 AI 智能体升维为具备状态、行为与安全边界的生产级计算单元。其核心挑战在于跨环境一致性执行、细粒度资源隔离与可验证状态管理。Substrate 的模块化 runtime 设计、WebAssembly 确定性执行沙箱及 Merkle-trie 状态树结构,天然契合 agent 对可信调度、热更新与审计就绪的技术诉求。结合 OCI 镜像轻量化封装、Kubernetes 宏观编排与 gVisor 微观隔离,形成分层加固的 agent 基础设施范式。本文聚焦 Substra

weixin_31896061的博客 242

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

从命令行终端到AI智能体:设计下一代人机协作界面的核心属性

在软件开发与系统架构领域,命令行终端(Terminal)作为一种经典的交互界面,其设计哲学对现代人机协作模式具有深远影响。终端通过结构化的命令输入与输出,实现了精确、可编程的操作,这为解决当前AI智能体(AI Agent)协作中的模糊性挑战提供了关键思路。其核心价值在于构建了可追溯的会话上下文、无歧义的结构化指令流以及模块化的工具生态系统,这些特性对于实现高效的人-AI协同至关重要。在AI应用开发与前端工程实践中,借鉴终端的设计属性,可以指导构建更智能、更可靠的协作工具,特别是在处理复杂任务流、后台异步执行

weixin_34228387的博客 294

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

gVisor是什么?可以解决什么问题?

传统的Container由于隔离性差而不适合作为Sandbox运行不受信工作负载,VM可以提供很好隔离但却额外消耗较多的内存。Google开源的gVisor为我们提供另外...

Docker的专栏 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

kubernetes--安全沙箱运行容器gVisor

所知,容器的应用程序可以直接访问Linux内核的系统调用,容器在安全隔离上还是比较弱,虽然内核在不断的增强自身的安全特性,但由于内核自身代码极端复杂,CVE漏洞层出不穷。所以要想减少这方面安全风险,就是做好安全隔离,阻断容器内程序对物理机内核的依赖。Google开源的一种gVisor容器沙箱技术就是采用这种思路,gVisor隔离容器和内核之间访问,提供了大部分内核的系统调用,巧妙的将容器内进程的系统调用转为给gViosr的访问。gVisor兼容OCI,与Docker和K8s无缝集成,很方便使用。

m0_57911290的博客 4473

安全容器:gVisor、Firecracker、LXC性能对比

参考论文,从各个角度比较当前容器安全产品差异

文杰的博客 2521

Kubernetes 最小化微服务漏洞 安全沙箱运行容器:gVisor介绍与安装

现在容器通过什么技术实现的隔离 1.使用Linux namespace和cgroup技术隔离容器 2.Linux内核是共享的 使用的容器不是强隔离的环境,和虚拟机是无法媲美的,虚拟机从硬件到软件,再到内核是完全的隔离,而容器只隔离了一部分。 降低容器的安全风险: (1)AppArmor:限制容器中的进程访问系统文件权限 (2)Seccomp:过滤容器当中的进程对linux的系统调用 (3)Capabilities:限制容器中的进程对Linux的内核系统调用能力(root权限进行逻辑划分,针

小楼一夜听春雨,深巷明朝卖杏花 2529

深入解析Google gVisor:容器安全隔离的创新方案

深入解析Google gVisor:容器安全隔离的创新方案 【免费下载链接】gvisor 容器应用内核 项目地址: https://gitcode.com/GitHub_Trending/gv/gvisor ...

gitblog_00551的博客 477

gVisor终极指南:10分钟掌握革命性容器安全隔离技术

gVisor是Google开源的革命性容器安全隔离技术,它通过在用户空间运行的应用内核为容器提供强大的安全边界。作为容器应用内核,gVisor重新实现了Linux系统调用接口,让恶意代码无法直接攻击主机内核,显著提升云原生应用的安全性。 ## 🔍 什么是gVisor? **gVisor**是一种应用内核,专门设计用于在运行中的应用与主机操作系统之间提供强大的隔离层。与传统的Linux内核不同

gitblog_00312的博客 486
上一篇: qemu启动文件重打包
下一篇: syzkaller--->syscalldescription语法
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值