【发布时间】:2021-06-09 04:25:13
【问题描述】:
我的(非沙盒)应用有一个嵌入式 XPC 帮助程序,它以 root 身份运行。
我想从我的助手中引用(真实)用户的主目录,但这些常见的嫌疑人只是返回/var/root:
FileManager.default.homeDirectoryForCurrentUser
NSHomeDirectory()
出于安全原因,我不能简单地将Users/bob 传递给我的助手——如果一个漏洞利用它想要的任何 URL 调用我的助手方法,并且我的助手以 root 身份执行此操作,我担心坏事可能会发生实现。
【问题讨论】:
-
助手运行在本地域中,它不知道真实用户,如果多个用户登录会发生什么?我的建议是在协议方法中将路径传递给助手。
-
您可以更改进程正在运行的用户(从 root 到 bob 并返回)有 unix 方法(在 C 中)。你可以调用 Filemanager 方法或 NSHomeDirectory。如果您只想为单个线程(而不是整个程序)执行此操作,那么也有方法。
-
也许我对 XPC 的exploitability 风险存在潜在的误解。我需要帮助器在 /Users/bob/.somewhere 中创建一个由 root 拥有的文件。我对
func createFile(at url: URL, withContents contents: String)之类的潜在风险感到紧张
标签: swift cocoa nsfilemanager xpc