资讯动态

Apache Maka Windows 沙箱架构深度解析:基于 AppContainer、Job Object 与一次性 Broker 的 fail-closed 原生隔离方案

发布时间:2026/9/18 4:32:06 来源:尧图企业网站定制
Apache Maka Windows 沙箱架构深度解析基于 AppContainer、Job Object 与一次性 Broker 的 fail-closed 原生隔离方案【免费下载链接】makaApache Maka (Incubating) is a high-performance agent workspace that keeps a complete record of everything it did.项目地址: https://gitcode.com/GitHub_Trending/mak/maka本文基于 Apache MakaIncubating仓库中的 Windows 沙箱 RFC v1 编写并辅以 Rust 原生 launcher 与 Runtime 沙箱管理器 的源码级证据。该 RFC 定义了 Maka 在 Windows 上执行 Agent 命令与文件系统 Worker 的完整安全基线Phase 4威胁模型、选定的原生架构、被否决的备选方案、分阶段交付切片与发布证据。读完本文你将理解 Maka 如何在 Windows 上以默认拒绝 原子 Job 成员 一次性 Broker 授权 ACL 恢复账本的组合实现对不可信命令的 fail-closed 隔离以及当前预览切片PR #2961已落地与明确延后的能力边界。1. 设计定位为什么需要一个 Maka 自有的 Windows 沙箱Maka 是一个高性能 Agent 工作区它需要执行 Agent 产出的命令、脚本与子进程同时保证宿主凭据、环境密钥、用户配置文件与网络通道不被越权访问。在 Linux 与 macOS 上Maka 分别通过 bubblewrap 与 Seatbelt 后端实现进程隔离Windows 平台此前缺少等价的原生隔离后端。该 RFCWindows Phase 4追踪于 issue #2142即为此补齐。RFC 的关键决策W0是选择 Maka 自有的 Rust 实现而不是直接移植其他产品的安装与协议模型。这一决策的依据是 Windows 2025 证据测试——当前用户的受限令牌restricted-token候选方案被否决因为真实的cmd.exe与 launcher 子进程无法在 30 秒安全期限内可靠完成初始化而 AppContainer 候选在同一 runner 下证明了默认拒绝default deny、已承认根访问admitted-root access、网络拒绝network denial与原子 Job 成员资格且全程无需提权elevation。选定的首个切片采用三项核心机制新鲜请求派生的 AppContainer SID每次启动都创建一个独立 AppContainer 身份避免复用残留身份而继承过期 ACE按启动记录的 ACL 授权落盘为持久的一次性账本one-shot ledger每次启动授予该 SID 仅限当前策略声明的根路径账本用于崩溃恢复无网络能力的 AppContainer 令牌从令牌层面直接拒绝出站/入站网络通道。RFC 明确声明边界该设计不声称能抵抗管理员administrator、已被攻破的同用户宿主进程、任意断电或第 10 节列出的全部对抗路径形态。2. 研究基础来自微软 API、Codex、Gemini CLI 与 Chromium 的对照证据RFC 于 2026-08-13 对照一手资料完成设计核查并将仓库观察钉定在已审阅的提交上防止上游后续改动悄悄改写设计理由。对照表节选如下完整对照见 RFC §2来源评审证据Maka 吸收了什么Maka 不假设什么Microsoft Windows APIAppContainer 隔离、受限令牌、进程属性列表、Job Object、Windows Sandbox、WSL2内核原语及其文档化边界API 存在不等于能力已被证明OpenAI Codex902bd9e06b3ewindows-sandbox-rs、setup、ACL state、private desktop、restricted token、Job Object、防火墙/WFP、smoke 测试最接近的 Agent 专用参考专用离线/在线身份、持久状态对账、显式句柄/Job 分配、fail-closed 策略检查直接源码复用、完整契约等价、未评审代码的正确性Gemini CLI1ac337739586WindowsSandboxManager.ts、GeminiSandbox.cs环境清洗、受限令牌启动、挂起 Job 分配、持久低完整性标签的显式文档其网络限速或 best-effort ACL 行为足以满足 MakaChromium024a2d21125bWindows broker/target 设计、restricted token、Job、alternate desktop、integrity levels、mitigations、AppContainer 支持分层防御、显式 broker 边界、私有桌面、句柄白名单、进程缓解浏览器 renderer 策略可原样复制到任意开发工具Claude Code 公开文档与992381936817示例文件系统/网络沙箱契约、代理控制、升级流程Windows 使用 WSL2文件系统与网络保证分离绝不从通用沙箱设置推断原生支持闭源实现细节OpenCodecc4b45612974官方 Windows 文档推荐 WSLWSL 是可行的显式外部环境WSL 提供了 Maka 的原生 Windows 后端关键结论可执行证据推翻了最初的专用账户dedicated-account建议——AppContainer 是首个原生后端选定的身份而专用受限令牌候选被保留为文档化的反面证据。3. 总体决策小体积原生 Rust Broker 分层 Windows 控制Maka 打包一个小体积的原生 Rust broker/client。Runtime Host 将PermissionProfile编译为封闭的启动清单launch manifest并调用一次性 broker 生命周期。受信任的原生进程把请求绑定到内核报告的管道客户端 PID、一次性 nonce以及精确启动策略的 SHA-256 摘要随后以分层 Windows 控制启动目标无网络能力的 AppContainer 主令牌通过PROC_THREAD_ATTRIBUTE_JOB_LIST原子附加的 Job Object并配置为关闭时杀死整个进程树kill-on-close禁用句柄继承handle inheritance disabled仅为编译出的读/写根添加 AppContainer ACE并附带持久恢复账本ACL 变更前递归拒绝重解析点reparse-point由规范化命令生成的封闭、排序环境保护到 SYSTEM 与当前用户的有界本地命名管道帧。打包的 x64 后端仅当原生资源存在时注册。二进制缺失、路径非法、profile 不受支持、清单畸形、ACL 恢复失败或启动失败都是类型化的 fail-closed 结果绝无未沙箱化的重试。同一后端通过现有 SandboxManager 路径 同时服务于文件系统 Worker 与 Agent 命令执行。Windows Sandbox 与 WSL2 未来可作为显式外部 profile 暴露但它们不是原生逐命令后端的替代品。RFC 特别强调AppContainer 单独使用并不足够——Job、ACL 策略、恢复账本、broker 授权与 fail-closed 的 Runtime 集成共同构成边界。4. 既有契约平台无关的权限语言不因 Windows 而分化Maka 的平台无关权威保持为PermissionProfile与当前会话的ExecutionBoundary。Windows 消费与 macOS Seatbelt、Linux bubblewrap 相同的规范化命令与路径上下文不引入第二套权限语言。职责划分见 SandboxManager 接口SandboxManager选择后端并变换命令绝不无沙箱重试调用方拥有规范化 cwd、工作区根、运行时根与边界扩展审批权后端拥有 profile 编译、可执行性检查与类型化启动请求进程 runner 拥有启动、取消、输出收集与生命周期结算Runtime Host 拥有组合编排后端不可用时拒绝受管 I/O。源码佐证在 sandbox-manager.ts 中shouldSandbox遵循forbid/require/auto偏好auto下仅当profileRequiresSandbox判定受管受限 profilefileSystem.kind restricted || network.kind restricted时才要求沙箱。selectInitial在 Windows 上找不到windows后端时返回类型化的backend_not_available绝不静默降级。RFC 明确指出Windows 不能被诚实地表现为 argv 包装器——令牌创建、登录身份选择、句柄过滤、私有桌面选择与原子 Job 分配都需要 windows-sandbox.ts 中WindowsBrokerManifest这样的类型化原生启动请求。5. 威胁模型路径是敌对的词法前缀检查永远不是授权证据攻击者控制命令参数、脚本、子进程、已批准根内的文件系统内容以及被沙箱化 helper 解析的数据。受保护资产包括已批准根之外的文件以及可写根内的受保护元数据宿主凭据、环境密钥、注册表数据、DPAPI 材料与用户配置文件宿主网络访问、回环服务、SMB/UNC 通道与继承的套接字沙箱边界之外的进程、窗口、句柄、设备与 IPC 对象Maka 自身的沙箱设置记录、ACL 所有权账本、可执行文件与 broker 协议。受信任边界为Windows 内核、签名的 Maka 二进制、Runtime Host 与父用户会话。边界不防御管理员、内核攻破或 Maka 之外已被攻破的同用户进程。沙箱化代码在执行第一条指令后即被当作恶意代码对待。路径是敌对的重解析点、junction、符号链接、硬链接、备用数据流ADS、设备路径、UNC 路径、大小写别名、8.3 短名、挂载点与替换竞态replacement race都不得扩大访问。词法前缀检查永远不是授权证据。6. 必需保证Guarantees全解6.1 文件系统默认拒绝精确 profile 承认的根之外无读无写读授权与写授权保持分离read/write grants 各自独立.git、.agents、.codex的写拒绝在每一层嵌套出现时生效除非存在精确的平台无关授权覆盖运行时与可执行根最小化且只读每次调用的临时存储仅在进程树排空后删除NTFS/ReFS 做能力探测capability-probed无法强制所需描述符的文件系统 fail-closedFAT 系列卷不支持受限 profileMaka 拥有的 ACL 变更归属到每次启动唯一的 principal把实际的递归/精确授权模式记录在版本化状态文件中并在启动时对账reconcile安装、升级、卸载或 profile 变更不得遗留未知可用授权损坏或缺失的所有权状态应失败就绪检查而不是猜测哪个 ACE 可安全移除存在重解析点时同时考虑规范目标与词法别名。源码佐证策略编译在 windows-profile.ts 中实现——compileWindowsSandboxPolicy遍历profile.fileSystem.entries将 read/write/exact 根分别归集为readRoots、writeRoots、exactReadRoots、exactWriteRoots并追加运行时/可执行根遇到deny条目、不可用路径、卷根volume root或无法精确表示的父条目写授权时直接抛错 fail-closed。其windowsEnvironment还会拒绝含、控制字符或以开头Windows 隐藏的按盘符 cwd 变量的环境变量名。6.2 网络network.restricted不能创建出站或入站网络通道拒绝覆盖 TCP、UDP、DNS、回环、监听器、SMB/UNC 与继承的套接字命名管道默认拒绝。打包的一次性路径在进程内完成授权独立的实验性 broker 管道 DACL 只接纳选定的沙箱 principal 与 broker若 Windows 报告本地防火墙策略无效、部分生效或被组策略覆盖离线后端不可用未来的域名白名单必须使用 Maka 自有的代理不得把 DNS 答案编译进持久直接地址白名单。6.3 进程、桌面、句柄与环境子进程在创建时通过PROC_THREAD_ATTRIBUTE_JOB_LIST进入 Job Object不存在可运行前的未分配窗口Job 在其 owner 关闭时杀死全部后代且不允许 breakaway仅通过PROC_THREAD_ATTRIBUTE_HANDLE_LIST继承声明的 stdio/协议句柄非交互 Worker 在 launcher 创建的私有备用桌面上启动绝不在交互式Default桌面上。这一条在预览中是初始桌面放置而非逃逸免疫的监禁每次启动与就绪探测都会创建 DACL 仅授予启动用户、Local System 与该次启动 AppContainer SID 的按启动备用桌面——SID 仅得最小非交互权限并用前置 deny ACE 从启动用户 SIDAppContainer 子进程令牌仍携带该 SID 作为有效 SID剥离DESKTOP_SWITCHDESKTOP、DESKTOP_HOOKCONTROL与 journal record/playback 权限。子进程以STARTUPINFOW.lpDesktop指向该桌面启动桌面无法创建或 SID 无法授权则 fail-closed桌面携带显式 Low 不可写提升强制标签S:(ML;;NW;;;LW)使 DACL 的建窗/写授权对 Low-IL AppContainer 子进程通过 Mandatory Integrity Control桌面堆按启动经CreateDesktopExW设限512 KiB使支持的十路并发维持在系统桌面堆限制的一个数量级以下令牌移除特权并使用 restricting SID低完整性是纵深防御不是文件系统策略本身子进程接收白名单环境。凭据、令牌、代理变量、shell 启动钩子、用户特定可执行搜索路径与加载器注入变量一律不继承提权、服务创建、计划任务、显式白名单之外的 COM 激活、shell 关联启动、调试器附加与父令牌/进程句柄访问全部拒绝受支持的进程缓解项显式选择并在 W2 前与 Node、PowerShell、cmd、Git 与打包的 Electron 资源做兼容性测试。源码佐证Rust 侧 windows_launcher.rs 定义了CONFINED_DESKTOP_APP_MASKDESKTOP_READOBJECTS | DESKTOP_CREATEWINDOW | DESKTOP_CREATEMENU | DESKTOP_WRITEOBJECTS | DESKTOP_ENUMERATE与DENIED_DESKTOP_INTERACTIVE_MASKSWITCHDESKTOP/HOOKCONTROL/JOURNALRECORD/JOURNALPLAYBACK并用 SDDL 字符串D:P(D;;0x…;;;{owner})(A;;GA;;;{owner})(A;;GA;;;SY)(A;;0x…;;;{appContainerSid})S:(ML;;NW;;;LW)构造桌面安全描述符——其中P阻止继承 ACE使受限子进程在窗口站上不与其他任何主体共享该桌面。桌面名带 128 位 CSPRNG noncemaka-sandbox-desktop.pid.nonce防 PID 复用与时钟回滚导致CreateDesktopExW静默重开旧桌面。环境块由environment_block构造显式构建namevalue块仅从 broker 侧补齐SystemRoot/SystemDrive/LOCALAPPDATA三个固定非秘密的进程创建基座变量绝不传 null 环境指针那会让子进程继承 broker 的全部环境。6.4 能力与失败就绪检查启动真实探测在生产身份、令牌、Job、桌面、句柄、文件系统策略与离线网络策略下启动真实子进程。仅检查 OS 版本号不足够就绪探测的临时 profile 生命周期隔离且 fail-closed探测 profile 位于与生产maka.sandbox.命名空间结构上互斥的maka.readiness.命名空间其保留requestId被启动校验拒绝任何生产启动都不可能解析到探测删除重建的 profile整个 delete→create→probe→settle→drop 周期由 DACL 加固的按用户命名互斥量跨进程串行化与 ACL 账本同款原语launcher 签名、版本与摘要对照打包元数据校验当前为延后门缺失设置、身份漂移、ACL 状态损坏、网络策略无效、文件系统不受支持、helper 不匹配或探测失败返回稳定类型化的不可用原因当前预览将失败折叠为单个布尔backend_not_available结构化原因是延后门auto与require对受管受限 profile绝不回退到宿主执行诊断信息暴露后端、设置版本与失败阶段但不暴露路径、SID、凭据、环境值或防火墙细节当前预览尚未传播设置版本与失败阶段。源码佐证在 default-sandbox-manager.ts 中probeWindowsReadiness以spawnSync(clientPath, [--readiness-probe])运行真实探测超时 15 秒正结果永久缓存负结果仅缓存 60 秒 TTL——一次瞬时失败不会永久污染模块缓存下一次组合构建composition build会重新探测而已解析为不可用的运行中宿主只能等新组合或 Runtime Host 重启不是运行中重试。Rust 侧readiness_probewindows_launcher.rs真正创建 kill-on-close Job、生产 AppContainer profile 与私有桌面启动一次性受限子进程cmd.exe /d /c exit 0/d禁用 AutoRun避免宿主 shell 定制干扰探测并输出机器可读的证明字段appContainerSidVerified、jobVerified、settled、desktopPrivatePlacement发布 smoke 逐字段断言防止门禁退化为空洞的 exit-0 检查。6.5 预览实现状态2026-08-24首个产品切片——打包的 Windows 11 x64 AppContainer 后端PR #29612026-08-17 合并——强制上述保证的子集。RFC 用已强制/已延后对齐文档与代码避免过度声明已强制#2961 合并除非标注后续 PR从精确 profile 编译的默认拒绝文件系统读写根分离ACL 变更前的递归重解析点拒绝与多硬链接拒绝新鲜请求派生 AppContainer SID、版本化恢复账本中的按启动 ACL 授权、启动时过期账本对账无网络能力的 AppContainer 令牌经PROC_THREAD_ATTRIBUTE_JOB_LIST的原子 kill-on-close Job 成员经PROC_THREAD_ATTRIBUTE_HANDLE_LIST的继承限制仅声明 stdio/协议句柄封闭、排序、白名单环境打包一次性 broker 上的内核可观测 Runtime Host owner 句柄#3722owner 退出中断首次启动、终止并排空 AppContainer Job、释放启动账本/ACE打包的 64 次启动重复波次并发浸泡测试disjoint 启动身份#3722随后做进程与 ACL 账本残留断言打包的恶意子进程矩阵#3722递归 junction 与多硬链接准入、外部文件访问、TCP 连接拒绝、宿主命名管道访问、环境注入、宿主 HKCU 值、父令牌访问、后代 AppContainer/Job 继承、隔离身份不重用按启动私有桌面放置#3174每个生产启动与就绪探测创建备用桌面DACL 仅授予启动用户、Local System 与该次启动 AppContainer SIDLow 完整性钉死512 KiB 堆上限STARTUPINFOW.lpDesktop指向之失败即 fail-closed生产身份就绪探测#3174专用、跨进程串行化的就绪 profile 生命周期#3174auto/require的 fail-closed 能力结果无未沙箱回退。设计但延后预览切片未强制完整窗口站分离与剪贴板隔离逃逸免疫桌面监禁no-Win32k 缓解、令牌边界、端到端 Low-IL 桌面权限全策略就绪覆盖就绪探测尚未编译并演练精确按 profile 文件系统根与离线网络策略就绪时 launcher 签名/版本校验与 Phase 3 签名一同延后结构化不可用原因与诊断并发真实机器就绪竞态覆盖未结算就绪身份的持久隔离主动运行中宿主就绪恢复直接 Windows Credential Manager/DPAPI 隔离证据W2/W3入站监听器强制UDP 通道强制。延后收窄的是就绪丰富度与桌面层纵深防御而非强制边界本身不可用、漂移或失败的后端依然 fail-closed受管受限 profile 绝不回退宿主执行。7. 选定架构Runtime Host → SandboxManager → 一次性 Broker → AppContainer WorkerRFC 给出了如下时序图Mermaid原文见 RFC §77.1 设置与持久状态首个实现不需要提权设置。Windows 创建请求派生的 Maka AppContainer profile打包的原生二进制仅授予其唯一 SID 当前启动承认的根。变更前递归拒绝FILE_ATTRIBUTE_REPARSE_POINT用create_new与sync_all持久化版本化账本并在接受新请求前对每个过期账本对账。全局内核互斥量只覆盖账本/ACL 变更每次启动在子进程结算前持有独立的请求级内核租约因此恢复逻辑跳过活跃账本互不相交的启动可并发执行。正常结算先移除 SID ACE 再删除账本。源码佐证账本文件名是请求身份的 SHA-256请求可控的路径字符无法逃出其目录icacls.exe从绝对%SystemRoot%\System32解析、不经过 shell 调用、使用/L对链接对象本身操作而非跟随。acl_ledger.rs 定义LEDGER_VERSION 2、Global\Maka.WindowsSandbox.AclLedger.v2.{user_sid}与Global\Maka.WindowsSandbox.ReadinessProfile.v1.{user_sid}互斥量命名——Global\命名空间保证跨终端服务会话可见Local\只对单个会话可见并发控制台/RDP 会话会误回收仍在使用中的授权对象携带 SYSTEM用户独占 DACL其他用户既无法打开也无法观察。Windows CI smoke 证明正常清理、过期账本恢复与对已承认树中 junction 的拒绝。7.2 Broker 与协议原生组件不是常驻特权服务。打包的--broker-local路径消费并删除一个清单绑定到其内核进程 PID进程内授权AppContainer 进程结算且 ACL 恢复后退出。独立命名管道模式仅作为传输证据保留打包路径不经过它。授权重新计算来自完整规范启动对象的摘要——变更可执行、参数、cwd、根、网络或环境都会使批准失效。未知字段、版本、结果或超大帧一律 fail-closed。被授权的路径只能调用 AppContainer 原子启动器。源码佐证windows-sandbox.ts 的digestLaunch对完整 launch 对象做 SHA-256清单写入用openSync(path, wx, 0o600)fsyncSync保证独占创建与落盘路径位于maka-windows-sandbox-*临时目录文件名含随机 8 字节。TS 侧对requestId校验仅[A-Za-z0-9._-]、最长 128 字符正是为了防止 NTFS 将:当作备用数据流分隔符。Rust 侧run()main.rs支持--broker-local、--appcontainer、--readiness-probe、--boundary-probe、--adversarial-probe、--self-probe、--appcontainer-sid等模式且--appcontainer仅实现restricted网络模式否则 fail-closed。8. 备选方案与项目对照方案证据决策专用沙箱身份 restricted token Job 私有桌面 ACL 账本 WFP/防火墙Codex 展示了该 Agent 导向形态含设置与对抗测试未来更强层级的参考runner 证据显示 Maka 候选无法可靠初始化真实子进程AppContainer 原子 Job 一次性 Broker ACL 账本微软与 Chromium 记录原语Maka Windows 2025 CI 证明组合边界为原生后端选定当前用户 restricted token Job有用的进程加固否决现有用户 ACL 仍可读原型初始化不可靠Low integrity ACL JobGemini 实现该轻量路径否决持久标签、best-effort ACL 失败与网络限速不满足 fail-closed 策略Chromium 沙箱库成熟的 broker/target、hooks、mitigations、AppContainer 支持仅参考大型 C 集成与 renderer 假设不匹配一次性任意工具Windows Sandbox强 VM 边界未来外部 profile可选功能、逐命令生命周期粗粒度WSL2Claude Code 与 OpenCode 在 Windows 工作流中使用/推荐未来外部 profile非原生 Windows 语义Docker/Hyper-V 容器可用时更强的环境边界可选外部 profile非通用原生前提9. 交付计划与门禁W0–W3W0可行性验证与冻结实现规格已完成——构建可复现 MSVC CI 的 Maka 自有 Rust launcher用真实子进程证据对比 restricted-token 与 AppContainer 身份证明原子 Job 分配、无继承句柄与实时回环拒绝定义封闭的 broker、启动与 ACL 账本 schema选定 AppContainer 实现并文档化被否决候选以选定时序与失败边界更新 RFC。W1受管只读文件系统 Worker已勾选大部分——从PermissionProfile编译承认根与运行时/可执行根AppContainer 下拒绝环境文件系统与网络访问将能力检测组合进 Runtime Host 受管执行打包并验证 x64 原生资源资源或能力不可用时 fail-closed经打包FilesystemWorkerClient/broker 路径完成取消、父进程死亡、并发与残留状态释放测试。这是第一个用户可见沙箱里程碑未勾选的证据限制支持声明但不允许未沙箱回退。W2工作区写与通用命令——强制写根与嵌套受保护元数据无环境 PATH/启动脚本的精确可执行发现证明 PowerShell、cmd、Git、原生可执行、ConPTY 与后代集成设置、升级、回滚、卸载与签名打包保留无路径的运行追踪强制证据。W3对抗评审与支持声明——在所有受支持 Windows 版本/文件系统上运行 release-blocking 矩阵完成独立安全评审并解决全部高/严重发现文档化不支持环境与恢复路径此后才标记 Phase 4 完成或宣传受限 profile 受支持。打包的 W1 矩阵是 release-blocking 且机器可读的它封闭当前交付文件系统 Worker 表面的可执行证据而非更宽的 W2 通用命令声明。Authenticode 身份、直接 Credential Manager/DPAPI 探测、no-Win32k、专用窗口站与剪贴板隔离、断电自动恢复仍是显式延后门即使全部自动化行绿灯独立人工安全评审依然强制。10. 发布证据Required Release EvidenceWindows 沙箱任务必须对以下类别执行正/负子进程测试允许根读写拒绝外部/只读/受保护元数据访问junction、symlink、挂载点、硬链接、8.3 别名、大小写别名、ADS、UNC、设备路径与替换竞态逃逸TCP/UDP/DNS/回环/监听器/SMB/命名管道/继承套接字逃逸子/孙进程、分离进程、breakaway、shell 关联、COM、计划任务与服务环境、注册表、凭据存储、DPAPI、父进程/令牌、剪贴板与用户配置文件正常退出、超时、取消、launcher 崩溃、Runtime Host 崩溃、桌面崩溃与重启身份与根互不相交的并发沙箱每个持久设置、ACL、防火墙/WFP 与 marker 发布 failpoint安装器/升级/卸载对精确签名 launcher 与完整状态清理的验证。W1 预览的打包验证器将受支持攻击面映射为可执行证据类别打包证据文件系统别名外部拒绝 递归 junction 与多硬链接准入拒绝网络通道无网络能力下的 TCP 连接拒绝IPC宿主命名管道拒绝 显式继承句柄列表后代子进程创建被 fail-closed 拒绝或创建的后代保留 AppContainer 令牌与 kill-on-close Job环境/凭据环境宿主密钥与外部凭据文件不可用注册表/父级宿主 HKCU 值与父进程令牌不可用生命周期超时、取消、Runtime Host 死亡、broker 死亡、64 次启动浸泡、隔离身份不重用W1 预览未暴露功能的行保持 fail-closed 并显式延后不计为更宽 shell/通用命令层级的通过证据。生成的标志与单元测试必要但非安全证据——通过测试必须证明被拒操作在真实子进程中失败且无进程或未知持久授权残留。源码佐证main.rs 的adversarial_probe在生产 AppContainer 身份内同时验证fileDenied、allowedRead、allowedWrite、tcpDenied、namedPipeDenied、environmentDenied、registryDenied、parentTokenDenied与后代边界descendantAppContainer descendantInJob或descendantSpawnDenied任一字段为假即硬失败。appcontainer-smoke.ps1 以 PowerShell 构造 secret 文件、允许读写根、回环监听器与过期账本夹具调用--appcontainer-sid、icacls.exe与--boundary-probe做真实观测。11. 工期估算与完成标准RFC 按一位有经验工程师估算不含外部评审排期W0 1–2 周W1 2–3 周W2 3–5 周W3 与修复 1–2 周Phase 4 现实区间7–12 周。两位工程师可并行原生设置/launcher 与 Runtime 集成/测试脚手架但安全评审与架构门保持串行。若 W0 确认 Codex 形态方案与打包工具链只读 W1 里程碑约 3–5 周可落地。Phase 4 仅在以下条件全部满足时完成W0–W3 证据 release-blocking设置与卸载干净恢复受限 profile 永不静默降级安全评审无未解决的高/严重发现。12. 实践指引如何查看与验证这套边界在仓库内可直接查阅与运行需 Windows 环境原生证据与运行说明见 experiments/windows-sandbox/README.md契约检查命令cargo test --manifest-path experiments/windows-sandbox/launcher/Cargo.toml --locked pwsh experiments/windows-sandbox/appcontainer-smoke.ps1launcher 全部入口--broker-local、--appcontainer、--readiness-probe、--boundary-probe、--adversarial-probe见 main.rsAppContainer 令牌/Job/私有桌面/环境实现见 windows_launcher.rsACL 账本、跨会话互斥量与结算语义见 acl_ledger.rsRuntime 侧后端注册、就绪探测与缓存见 default-sandbox-manager.ts策略编译见 windows-profile.tsbroker 清单与摘要见 windows-sandbox.ts对应测试Windows Worker 冒烟 filesystem-worker-windows-smoke.test.ts、默认管理器 default-sandbox-manager.test.tsRFC 中文版windows-sandbox-rfc-v1.zh-CN.md。13. 结语Maka 的 Windows 沙箱 RFC v1 给出了一条务实的原生隔离路线以 AppContainer 作为逐启动身份、以原子 Job 成员与一次性 broker 授权作为强制边界、以版本化 ACL 账本与生产身份就绪探测作为恢复与可用性契约并把绝无未沙箱回退作为贯穿所有切片的铁律。预览切片已把文件系统默认拒绝、网络拒绝、进程/句柄/环境封闭与私有桌面放置落进真实代码PR #2961而窗口站分离、no-Win32k、DPAPI 证据等更深的防御被明确钉在 W2/W3 门之后——这种文档不过度声明、门禁不空洞通过的工程态度正是安全边界设计中最值得借鉴的部分。【免费下载链接】makaApache Maka (Incubating) is a high-performance agent workspace that keeps a complete record of everything it did.项目地址: https://gitcode.com/GitHub_Trending/mak/maka创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价