专门注册了个账号...
> 之前就发现 Windows 的锁屏似乎只是限制前端的用户进入系统,但各种文件都可以以当前用户身份打开
因为 Windows 中实际上存在两种登录模式: User logon 和 Application logon, 你看到的这些程序是被 Secur32.dll 以 Application logon 模式拉起来的
> 这和搜狗的还不一样,搜狗好像是以 System 身份进入系统
因为搜狗是被 Winlogon.exe 拉起来的, Winlogon.exe 是登录的核心进程,他管理所有 User logon 的授权行为,所以说是 System 权限
> 这是 Windows 有意为之?
是的, TSF(文本服务框架) 明确授权了输入法访问系统线程的权利,但是前提是必须有有效的数字证书
> 为什么要这样设计?
要不然高安全性的 APP 只能输入英文, 这不好吧.jpg
> 那这样不就会出各种问题?
会,但是最佳安全实践里说明了应该注意自身的权限,是搜狗的锅 ... Windows 要求输入法主动检查自己在哪个模式下 (
https://learn.microsoft.com/en-us/windows/win32/api/msctf/nf-msctf-itfthreadmgrex-getactiveflags)
> 比如登录界面可以设计成由特权的鉴权程序+非特权的 UI 组成
其实确实是这样的,相对于 Lsass 来说, CREDUI 已经是非特权 UI 了,详见 Credential Guard, 实际上如果尝试过 XXOO UAC 会发现, SendInput 这种号称可以直接将输入插入内核队列的 API 对登陆界面和 UAC 弹窗是无效的,即使自身已经提权到了 System 权限。因为他们隔离的概念不是以用户权限,而是将登录和认证有关的窗口统一扔到了 Session0 的安全桌面上,而 Session Zero Guidelines 的第一句就是 Do not create a user interface (UI) element, such as a dialog box, or depend on user input.