任天堂 Switch 2 被 AI 辅助的漏洞利用越狱,入口是一款 25 美元的 BASIC 游戏
ns2jb 漏洞利用绕过了 Switch 2 的 ARM 指针认证防御,已经能运行自制软件

安全研究员 Sammy「pepsipu」Hajhamid 于 2026 年 10 月 22 日发布了 ns2jb,这是首个公开确认的、纯软件的任天堂 Switch 2 越狱。他借助 OpenAI 的 Codex AI 编程智能体,在 SmileBASIC 4 中发现了一个严重漏洞;这是一款售价 25 美元的 BASIC 解释器游戏,就在任天堂自家的 eShop 上架销售。数小时内,任天堂就把 SmileBASIC 4 从商店下架。一天之内,自制软件社区已经在运行未经授权的 Vulkan API 测试,并把其他系列的角色加载进《马力欧卡丁车 世界》,相关的爆红改版视频获得了超过 300 万次观看。
这次越狱针对固件版本 23.0.1,每次重启后都需要重新运行漏洞利用,这一限制使它属于「非持久」类漏洞,区别于永久性破解;但它功能完整,可在系统模块(sysmodule)层面执行任意代码,并通过内存映射 I/O 直接访问硬件外设。
BASIC 解释器如何攻破一台加固的游戏机
这一漏洞利用分两个阶段。第一阶段利用 SmileBASIC 4 的 REMOVE 数组命令中的整数溢出。该命令把 position 和 count 两个参数按 32 位有符号整数相加,且不检查溢出。当总和超过 32 位有符号整数的最大值而回绕时,得到的负值会被用作数组索引,在游戏进程内形成一个越界读写原语,这是后续一切得以成立的利用立足点。
发现这个漏洞的是 Codex。pepsipu 搭建了一套实体硬件测试环境:用 JetKVM 设备(一种现成的 KVM 中继,可捕获 HDMI 视频并转发手柄输入)接到 Switch 2 上。这让 Codex 能把实体游戏机当作软件环境来对待:接收视频帧、发送按键序列、观察结果并迭代。在这个循环中,Codex 系统地测试了 SmileBASIC 的 BASIC 解释器命令,并把 REMOVE 溢出标记为异常。
第二阶段针对任天堂的 fs 系统模块,这是一个核心的特权服务进程。IFileSystem::GetEntryType 中的路径规范化例程无法处理包含 /..\ 的路径,造成 0x301 字节的堆缓冲区溢出,破坏了一个 BufferedStorage 缓存指针。借助这个被破坏的指针,ns2jb 在 fs 内获得了任意读写能力,随后替换加载器 IPC 句柄背后的 ExeFS 对象,从而以任意普通系统模块的身份执行任意代码,绕过了任天堂的签名链,而且无需触碰硬件引导程序。
为什么 Switch 2 能抵御常规的漏洞利用路线
要理解这种方法的意义,需要了解任天堂改了什么。早期的 Switch 和 3DS 越狱依赖返回导向编程(ROP):攻击者在可执行内存中找到一些很短的代码片段(「gadget」),把它们串联起来运行任意逻辑,通常从浏览器引擎切入。Switch 2 堵上了这种方法所需的全部三个入口。
ARM 指针认证码(PAC)是 ARMv8.3-A 指令集的一部分,用依据上下文派生的密钥对每个函数指针做加密签名。被破坏的指针无法通过认证,会在任何 gadget 执行之前触发系统异常。仅执行内存(XOM)则进一步禁止读取代码页,因此即使拥有任意内存读写权限,攻击者也无法扫描可执行文件来定位 gadget。控制流完整性(CFI)对 IPC 调用点做类型检查,堵住了沙盒化浏览器环境进行任意调用的最后一条通路。
SmileBASIC 这条路线绕过了这三道防线。由于漏洞利用从原生应用而不是网页沙盒内部开始,它起点的执行环境权限更高,PAC 的约束也更宽松;堆破坏的方法既不需要读取 gadget,也不需要伪造指针。
硬件回路中的 AI:Codex 实际做了什么
pepsipu 在安全研究阶段花了大约两周。这项工作并非自主完成:早期让 Codex 自行设定目标的尝试失败了。真正有效的工作流是把 Codex 放进一个约束严格的分析循环:测试具体的程序行为、记录结果、标记异常,而 pepsipu 负责指导策略、评估发现并决定走哪条路径。漏洞利用完成之后,开发者又用 Codex 花了大约一天时间做出《马力欧卡丁车 世界》的角色改版。
JetKVM 测试环境才是让 AI 得以参与的关键。通过给 Codex 提供视频画面和手柄输入中继,pepsipu 建立了一个反馈回路,让 Codex 像 AI 智能体通常操作软件环境那样,去操作一台实体设备。这是商用 AI 编程智能体参与游戏机越狱、记录最完整的公开案例,而真正的进展不只是结果,更是这套方法。拥有 AI 智能体和 HDMI 采集卡的硬件安全研究人员,现在有了一套可重复的流程,来对过去完全依赖手工的实体设备做模糊测试。
延伸阅读:开源 MCP 服务器 REA 把 Ghidra、IDA 和 Frida 一站式接给 AI 智能体
熟悉的漏洞利用入口,新的平台
SmileBASIC 再次成为入口,有明确的先例。2016 年,3DS 版 SmileBASIC 中的栈溢出促成了一次 3DS 越狱;任天堂把该应用从 3DS eShop 下架并发布补丁,最终允许修正后的版本重新上架。同一款应用,不同的平台,不同类型的漏洞,同样的故事线,如今在 Switch 2 上重演。
更大的背景包括 2018 年的 Fusée Gelée 漏洞:它是 Switch 1 USB 引导 ROM 中的硬件级漏洞,影响所有初代 Tegra X1 机型,永远无法通过固件修补;任天堂硬件改版之前生产的机器至今仍可被利用。2026 年 7 月发布的 Gezine 漏洞,在 Switch 1 和 Switch 2 上实现了更早期的访问,是一个适用于所有固件版本、可离线使用的用户态漏洞,但 Gezine 没有达到构建完整自制软件生态所需的代码执行层级。ns2jb 做到了。
自制软件社区现在能做什么
独立开发者 @eXtas1stv 在 ns2jb 发布后 24 小时内,就在 Switch 2 硬件上发布了 Vulkan API 渲染测试,并确认触摸屏输入可用,这为任天堂官方 SDK 之外的第三方图形工具链和 GPU 计算实验打开了大门。ns2jb 的系统模块执行层级还提供了内存映射 I/O 访问权限,可直接与硬件外设通信。研究人员能从这一权限中挖出多少东西,目前尚未摸清。
促使任天堂做出回应的担忧,是它所打开的盗版途径。系统模块层级的执行能力,最终可以让任天堂内容归档(Nintendo Content Archive)的签名验证被绕过。目前这一风险因漏洞的非持久性而有所缓和:越狱需要连接电脑,且每次重启后都要重新运行,这种摩擦是持久性漏洞所没有的。但从历史上看,非持久漏洞通常是一个里程碑,而不是终点。
延伸阅读:AI 智能体以每家仅 50 美元的成本攻破 100 多家公司
任天堂的回应与执法考量
任天堂尚未就 ns2jb 发表公开声明。除了下架 SmileBASIC 4,该公司的执法立场由其现有的用户协议决定,协议明确禁止未经授权的修改,并规定任天堂可对违规者永久限制在线服务。2025 年,MIG Switch 盗版卡曾招致永久性的硬件封禁。2026 年 8 月,任天堂提交了七份 DMCA 通知,一天内从 GitHub 移除了 400 多个 Switch 模拟器仓库。
固件补丁是近期的变数。堵上 fs 路径规范化漏洞,并收紧 SmileBASIC 的整数处理,会把 ns2jb 限制在那些拒绝更新的 Switch 2 主机上,而在有在线账号的玩家中,这类人群往往不会太多。但这套底层方法无法用同样的方式修补:置于 JetKVM 测试环境中的 Codex,可以对准任何能输出视频并接受输入的设备。Switch 2 是第一款在研究回路中有 AI 智能体参与、被公开越狱的游戏机,无论任天堂在固件 23.0.2 中发布什么,这种方法都会继续存在。