NoWayOS
ZH
GitHub
菜单关闭

2026年11月13日

为什么 NoWayOS 设备没有 Shell

大多数专用设备都是一台通用计算机,上面放着一项任务,下面仍然留着其余的一切。我们走了另一条路:每台设备只用它的任务所需的东西来构建,其余的一概不放进去。

对专用设备的攻击,大多并不冲着它所做的那项工作。它们冲着的是设备所运行的那台计算机的其余部分:为维护而留下的 Shell,没人关掉的远程访问服务,应用背后的浏览器,一次崩溃之后就会露出来的桌面。

这个“计算机的其余部分”无处不在。把读数从水厂送出去的网关,电网控制室里的终端,医院所依赖的设备,机器侧面的面板,车站大厅里的屏幕:其中许多运行的是通用操作系统,上面放着一项任务,下面的其余一切都还在,只是被设置关掉了。自助终端模式是其中最简单的一种。每一次失陷,都是有人找到了被漏掉的那一项设置。

不如干脆不放进去

NoWayOS 从另一头入手。一个 NoWayOS 镜像里有设备的应用、这个应用用到的驱动,以及 seL4 微内核。清单到此为止。

没有可以落入的 Shell,因为从来没有构建进去。没有可以猜密码的远程登录。没有可以逃逸过去的桌面。没有等着恶意页面的浏览器引擎。对于根本不存在的软件,您不可能把它的设置配错。

以上说的都是操作系统。运行在它之上的应用是另一回事:只要任务需要,应用可以让它的用户登录,也可以登录到其他系统。它只是没有坐落在一个任何人都能登录的操作系统之上。

我们把这称为 Single Purpose OS:一台心无旁骛的计算机。

而留下的部分是密封的

不放进去,只是一半。留下的每个部分(网络、屏幕、输入、应用)都运行在各自的隔离舱里,用 seL4 的术语说就是保护域,只能触及被授予它的东西。网络驱动搬运数据包。显示驱动负责绘制。应用通过固定大小的消息与它们各自通信。

每项授权都写在一个文件里,每行一个事实;如果系统与文件不一致,构建就会失败。这样构建,是为了让一个部分的故障留在那个部分之内。

“可是没有 Shell,怎么修呢?”

工程师最先问的就是这个,问得有道理。您不会登录到 NoWayOS 设备的操作系统上:它没有账户,也就没有可以用来登录的身份。您构建一个新镜像,替换旧的。目前这意味着构建它并加载到开发板上;由设备检查、并能安全回退的签名更新,已经完成设计,正在路上。

换来的是一台直接启动进入其唯一任务的设备,需要打补丁的东西少得多,可供攻击的东西也少得多。对于一个国家赖以运转的系统来说,这笔交换正是全部意义所在。

请亲自看看

一个真实 NoWayOS 镜像的证据,包括它的授权文件、物料清单和 seL4 配置记录,都在我们的安全页面上。无需注册,没有脚本。只有这些文件。