无安全隔离
NoSecurityIsolation 是自 v1.0.0 / 5.55.0 起提供的一项沙箱设置,将沙盘从安全隔离环境转换为 应用程序隔离 模式,优先考虑兼容性而非安全性。
用法
语法
其中:
y启用隔离模式,n(默认值)保持安全隔离。
工作机制
启用后,驱动会设置 bAppCompartment = TRUE,从根本上改变沙盘的运行方式,具体表现为:
功能矩阵
| 功能 | 标准沙箱 | 应用程序隔离 |
|---|---|---|
| 文件系统虚拟化 | ✓ | ✓ |
| 注册表虚拟化 | ✓ | ✓ |
| 对象命名空间隔离 | ✓ | ✓ |
| 进程监控 | ✓ | ✓ |
| 基于令牌的安全 | ✓ | ✗ |
| 权限限制 | ✓ | ✗ |
| 作业对象分配 | ✓ | ✗ |
| 安全路径阻断 | ✓ | ✗ |
路径控制变化
在应用程序隔离模式下,三项关键路径行为会自动禁用5:
AlwaysCloseForBoxed:沙箱进程可访问通常被阻断的路径6DontOpenForBoxed:打开路径规则对所有进程均等适用7ProtectHostImages:放宽对宿主二进制文件的保护8
兼容性与集成
自动激活
- 不支持的 Windows 版本:自动启用并显示警告 MSG_120711
- 沙盘 Plus 沙箱类型:在
应用程序隔离和应用程序隔离并保护数据中预设开启
兼容性提升
- 进程可与主机系统自由交互
- 降低与依赖权限的应用程序的冲突
- 更好地支持复杂软件与开发工具
安全影响
Important
应用程序隔离模式显著降低安全隔离能力:
- 进程以原有的安全上下文和权限运行
- 无基于令牌的保护或权限降级
- 沙盘仅提供虚拟化,不提供安全边界
相关设置
配套项
- NoSecurityFiltering:进一步禁用过滤9
- OriginalToken:在隔离模式下自动启用
- 模板路径:应用
TemplateAppCPaths10
作业对象限制(已禁用)
以下设置因作业对象排除而失效:
ProcessNumberLimitProcessMemoryLimitTotalMemoryLimit
使用场景与故障排查
启用时机:
- 软件测试和开发环境
- 需要完整系统权限的遗留应用
- 令牌限制兼容性问题
- 仅需虚拟化(文件/注册表隔离)场景
常见触发因素:
- 应用因令牌限制无法启动
- 需要管理员权限
- 复杂软件兼容性问题
相关
- 沙盘 Plus:沙箱选项 > 安全选项 > 安全隔离
- 沙箱类型
- DropChildProcessToken
-
令牌绕过:
Token_ReplacePrimary在proc->bAppCompartment设置后返回TRUE,从而绕过所有令牌过滤操作 ↩ -
主令牌:在
token.c中,应用程序隔离模式下保持未修改 ↩ -
模拟令牌:
Thread_CheckTokenForImpersonation在启用proc->bAppCompartment时返回STATUS_SUCCESS,不做限制 ↩ -
作业对象排除:
process.c中new_proc->bAppCompartment条件排除进程加入 Windows 作业对象 ↩ -
路径处理:
process.c中禁用三项行为:always_close_for_boxed、dont_open_for_boxed、protect_host_images↩↩ -
AlwaysCloseForBoxed:
proc->always_close_for_boxed = !proc->bAppCompartment && Conf_Get_Boolean(...),确保沙箱进程不会因通常关闭的路径被阻断 ↩ -
DontOpenForBoxed:
proc->dont_open_for_boxed = !proc->bAppCompartment && Conf_Get_Boolean(...),允许所有进程均等应用路径规则 ↩ -
ProtectHostImages:
proc->protect_host_images = !proc->bAppCompartment && Conf_Get_Boolean(...),禁用宿主二进制文件保护 ↩ -
安全过滤:
no_filtering = proc->bAppCompartment && Conf_Get_Boolean(..., L"NoSecurityFiltering", ...),即可完全绕过过滤 ↩ -
模板路径:
Process_GetPaths(proc, list, L"TemplateAppCPaths", setting_name, FALSE)应用隔离模式专用模板路径 ↩ -
自动回退:
!Dyndata_Active && !proc->bAppCompartment触发自动隔离模式,并记录Log_Msg1(MSG_1207, info)↩