网易首页 > 网易号 > 正文 申请入驻

英伟达开源的OpenShell,我把一个会“越权”的Agent关了进去,看它多久被拦下来

0
分享至

一个能读你SSH密钥、翻你.env文件、还能偷偷往外发HTTP请求的编程Agent,你每天都在让它跑。

大多数人装完Claude Code就直接用,默认权限等于把电脑钥匙交出去。Agent不会恶意搞你,但它“理解错了任务”的时候,后果跟恶意一样。

NVIDIA上周开源了一个东西叫OpenShell,9月28日上线,三天冲到12.6K Star。Apache 2.0协议,我当天就拉了源码在本地跑起来。这篇写几个真实踩坑。

Docker容器装Agent,跟没装差不多

先说一个容易混淆的地方。

很多人觉得“我Agent跑在Docker容器里,已经隔离了”。Docker的隔离是namespace层面的——它让进程看到独立的文件系统、网络栈、PID空间。听起来够了。

问题是Docker容器里的进程默认以root身份运行,能读容器里挂载的任何东西。你把项目目录挂进去,Agent就能读写整个项目。你挂了SSH密钥方便Git操作,Agent也能读。

OpenShell的隔离在Linux内核层,用的是Landlock LSM加seccomp过滤器。文件系统策略把路径分成read_only和read_write两个列表,没列进去的路径完全不可访问。进程层面用非特权用户sandbox运行,root身份直接被拒绝。网络层面默认全拒,每个出站请求都要过L7代理,代理同时检查目标主机和发起请求的二进制程序。

我实测的时候写了一个Python脚本,让Agent在沙箱里执行它。脚本尝试读取 /etc/shadow ——返回Permission denied。尝试 curl 一个未授权的域名——连接直接被代理切断,日志里记录了一条 enforcement: deny 。跟Docker里跑同一个脚本完全不是一个结果。

这还不算完。NVIDIA还配了一个叫Sentry的硬件看门狗,跑在BlueField-4 DPU上,独立于Agent所在的主机监控行为。如果Agent试图越界,Sentry能在毫秒级把它隔离。这个需要额外硬件,不是所有人都用得上,但方向很明确:安全检查不能放在被检查对象的控制范围内。



安装确实只有两行命令,但有个前提

官方文档给的安装命令就一条:

“curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh”

装完之后创建第一个沙箱:

“openshell sandbox create -- claude”

两行命令,Claude Code就在沙箱里跑起来了。

但这里有个前提容易被忽略:你的机器上得有Docker。 OpenShell底层把K3s Kubernetes集群封装在一个Docker容器里,网关和沙箱都跑在这上面。你不需要单独学Kubernetes,也不需要配kubectl,但Docker得先装好。

我在MacBook Pro M3上跑的,安装脚本自动识别系统装了CLI和网关。

openshell sandbox create -- claude之后,Claude Code在沙箱里启动,终端弹出一个认证链接,浏览器打开登录Anthropic账号,回来就能用了。

第一次创建沙箱的时候会自动provision一个网关,大概等了十几秒。后续再创建就快了。



策略配置:默认全拒,放行得逐条加

OpenShell的策略文件是YAML格式,分两块:静态和动态。

静态部分在创建沙箱时锁定,包括 filesystem_policy(文件系统读写规则)、landlock (内核强制级别)、process(运行身份)。动态部分是 network_policies ,可以在沙箱运行中热加载更新,不用重启。

默认策略只允许read-only访问,网络请求全部拒绝。我一开始让Claude Code在沙箱里改一个文件,被拒了。得先 /sandbox 把目录加进 read_write 列表。

网络策略的写法是这样的:

“network_policies:
my_api:
name: my-api
endpoints:
- host: api.example.com
port: 443
protocol: rest
enforcement: enforce
access: full
binaries:
- path: /usr/bin/curl”

只有endpoint和binaries同时匹配,连接才放行。

我让Claude Code往GitHub推代码,默认策略直接拒了push。按官方教程的流程,需要用 openshell provider create 注入GitHub token,然后写一条针对特定仓库的write策略。整个过程是“失败→诊断→改策略→重试”的循环。

这里有一个设计细节我觉得挺聪明:静态策略改不了,必须销毁沙箱重建。这防止了Agent在运行时偷偷给自己开权限。动态的网络策略可以热加载,改完立即生效,日志里能看到 policy updated 记录。



123次越权测试:默认策略一次没漏

我最关心的就是它到底能不能拦住越权。

OffSeq做了一组预注册的实测,用了123次试验,在Apple Silicon Mac上跑OpenShell v0.1.2。结论是:默认策略下没有任何绕过。恶意脚本在没有OpenShell的情况下10次全部泄露了秘密数据,在OpenShell默认策略下10次全部被拦截。

但实测也暴露了问题。

同一个测试发现,如果你手动开了read-write权限,或者用了auto-approval模式,数据是可以出去的。具体来说,有四个设置会导致泄漏:read-write规则、GET-only规则里的query/header值、audit-mode规则、以及自动审批机制。

说白了,默认策略是安全的,但你自己改的策略可能把门开太大了。

我自己的测试验证了这一点。我在策略里给GitHub加了full access,Claude Code就能正常push代码。但我如果把access改成full的同时又忘了限制binaries,理论上沙箱里任何进程都能走这条通道。

我试了三次才把策略写对。第一次binary路径写错了,Agent调不到curl。第二次忘了加 protocol: rest ,HTTPS请求被代理拒了。第三次才对。

国内用的几个实际问题

网络。安装脚本从GitHub拉,国内可能需要代理。如果你有稳定的GitHub访问方案,问题不大。OpenShell本身不需要访问外部服务——它是本地运行时,不依赖NVIDIA的云。

性能。我测下来工具调用的额外延迟在1-5ms级别。有报告显示启动开销大约增加30%,命令执行开销增加50%。这在交互式编程场景里基本感觉不到,但如果跑批处理任务,累计开销需要考虑。

版本状态。当前是v0.1.2,alpha阶段。已经发现了几个CVE,包括CVE-2026-44113的TOCTOU竞争条件漏洞和CVE-2026-41355的任意代码执行漏洞。官方明确标注了“Expect rough edges and breaking changes”。生产环境部署前建议评估风险,开发环境用没问题。

至于“没有Kubernetes经验能不能搞定”——能。K3s被封装在Docker里了,你日常操作只用 openshell sandbox 系列的CLI命令,不碰kubectl。但如果你想把它部署到已有的K8s集群上,那就得懂K8s。



值不值得装

如果你每天用Claude Code或Codex跑代码,而且这些Agent有权限访问你的真实项目目录,那OpenShell值得花半小时装一下。

它解决的不是“Agent会不会变坏”的问题。它解决的是“Agent理解错了任务,把不该删的文件删了,把不该发的API key发出去了”的问题。这类事故在Docker容器里照样发生。

安装两行命令,创建沙箱一行命令,默认策略已经够安全。你不需要一上来就写复杂的策略文件,先用默认的跑,遇到拒绝再按日志放行。

现在的版本还不够成熟,别在核心生产流水线上用。但如果你有一个“怕它乱来”的Agent任务——比如让它自动改代码、自动部署、自动处理敏感数据——把它关进OpenShell里跑,比裸奔强太多。

英伟达把Agent安全当成基础设施来做,这个方向是对的。Agent不能自己管自己,边界必须由外部来设。OpenShell就是这个边界的一种实现,开源的,你可以自己审查代码。

声明:内容由AI生成

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
吴宜泽北爱签表解析:16进8或遇艾伦,半决赛上演世界第一争夺战

吴宜泽北爱签表解析:16进8或遇艾伦,半决赛上演世界第一争夺战

夜深聊球
2026-10-07 20:06:18
专家警告:每天吃一颗红枣,就等于给心脏“踩刹车”?真相来了

专家警告:每天吃一颗红枣,就等于给心脏“踩刹车”?真相来了

芹姐说生活
2026-10-02 23:41:36
中国可能要全面双休,全面双休意味着什么?对中国人有啥影响呢?

中国可能要全面双休,全面双休意味着什么?对中国人有啥影响呢?

真的好爱你
2026-09-17 06:46:29
国乒男单12人被淘汰!WTT中国大满贯:16强2席,张本智和对手出炉

国乒男单12人被淘汰!WTT中国大满贯:16强2席,张本智和对手出炉

徐徐解说
2026-10-07 23:41:58
婚变传闻迎来大结局,吴奇隆正式官宣息影,和刘诗诗走上了两条路

婚变传闻迎来大结局,吴奇隆正式官宣息影,和刘诗诗走上了两条路

少女的烦恼
2026-10-05 19:07:15
72.1万元!雷克萨斯新车正式上市

72.1万元!雷克萨斯新车正式上市

沙雕小琳琳
2026-10-06 11:51:25
曼联小梅西索要百万年薪,拒绝切尔西确定去欧洲!无意与曼联和解

曼联小梅西索要百万年薪,拒绝切尔西确定去欧洲!无意与曼联和解

罗米的曼联博客
2026-10-07 11:41:17
续航2300km+油耗1.8L!比亚迪第六代DM-i 6.0要让加油站倒闭?

续航2300km+油耗1.8L!比亚迪第六代DM-i 6.0要让加油站倒闭?

沙雕小琳琳
2026-10-06 15:50:14
场均50分的张伯伦,为何拿不了MVP?

场均50分的张伯伦,为何拿不了MVP?

篮球实录
2026-10-08 02:02:55
中国公开赛战报:再爆大冷世界第3出局,8强决出7席郑钦文在列

中国公开赛战报:再爆大冷世界第3出局,8强决出7席郑钦文在列

求球不落谛
2026-10-07 21:36:42
体制内的人出现了明显的转向!

体制内的人出现了明显的转向!

职场资深秘书
2026-10-07 17:40:02
孩子脱臼复位只收100元,家长举报乱收费!卫健委:应收110元,你还少给了!家长拒缴费后离开!

孩子脱臼复位只收100元,家长举报乱收费!卫健委:应收110元,你还少给了!家长拒缴费后离开!

医脉圈
2026-04-25 20:04:06
体坛丑闻!嗜赌只是冰山一角,婚内出轨睡有妇之夫,太毁三观

体坛丑闻!嗜赌只是冰山一角,婚内出轨睡有妇之夫,太毁三观

橙星文娱
2026-04-25 11:14:17
C罗,撂挑子了?

C罗,撂挑子了?

中国新闻周刊
2026-10-07 11:54:09
12306终于想通了:与其让1亿人抢票,不如让他们先举手

12306终于想通了:与其让1亿人抢票,不如让他们先举手

笑熬浆糊111
2026-08-10 12:02:09
乐基儿年轻时真漂亮,看曾志伟的眼神就知道了

乐基儿年轻时真漂亮,看曾志伟的眼神就知道了

娱你同欢
2026-09-13 20:22:17
网友喊话南通交警:别太尽职!老百姓赚钱不容易!

网友喊话南通交警:别太尽职!老百姓赚钱不容易!

濠河神聊
2026-10-07 11:57:43
他到离休年龄继续当省委一把手,别人有意见,上级:调出来当社长

他到离休年龄继续当省委一把手,别人有意见,上级:调出来当社长

娱乐圈的笔娱君
2026-10-01 07:57:23
贵阳花果园:共 240 栋 45 层以上住宅,房价从 3 千涨到 1.4 万,如今严重分化

贵阳花果园:共 240 栋 45 层以上住宅,房价从 3 千涨到 1.4 万,如今严重分化

专业聊房君
2026-10-05 13:18:45
女人长期保持漂亮的方式,就一个字:少!

女人长期保持漂亮的方式,就一个字:少!

心灵悦读
2026-09-15 10:02:54
2026-10-08 04:03:00
阿鑫讲ai
阿鑫讲ai
专门讲解现阶段高热度的AI
83文章数 2关注度
往期回顾 全部

科技要闻

诺贝尔化学奖揭晓,两位科学家摘得大奖

头条要闻

中国新婚夫妇在马尔代夫度假溺亡 有人1天目睹2起溺水

头条要闻

中国新婚夫妇在马尔代夫度假溺亡 有人1天目睹2起溺水

体育要闻

从骑马舞到开口全中文 德约在北京不止七冠

娱乐要闻

蔡康永风波再升级!这次谁也救不了他

财经要闻

谷歌签下科技史上最大核能协议

汽车要闻

智能化再提升 2027款东风标致、东风雪铁龙新车更人性化了

态度原创

艺术
健康
本地
手机
公开课

艺术要闻

全球十大顶级风光摄影师作品,太美了!

刷酸祛痘,为什么有人翻车?

本地新闻

中秋逛白塔寺,体验国医妙荟雅集

手机要闻

荣耀Power3再次被确认:7英寸屏+天玑8600,起售价或感人

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版