1

我正在尝试安装一个特权帮助工具来执行一些提升的工作。我也在使用SMJobBless。我能够很好地安装该工具并且还能够与之通信。我正在使用 Mac OS X 10.8.4 并使用NSXPCConnection。我.mach在 plist 中添加了服务,它将安装在/Library/LaunchDaemons. 我[initWithMachServiceName:options:]在应用程序中使用,因为助手是特权工具,并且[– initWithMachServiceName:]在助手中使用。通讯工作正常。

但问题是我尝试与我创建的另一个应用程序进行相同的通信,该应用程序根本没有任何代码设计(之前的帮助工具安装程序是代码签名的)。我尝试连接到辅助工具的 mach 服务,并且能够轻松连接。这是一个问题,因为任何人都可以与它通信并让它做任何事情。

我想要某种方式在我的应用程序和帮助工具之间进行安全通信。

非常感谢。

4

2 回答 2

1

正如您所说,您没有签署第二个应用程序,我相信这是允许第二个应用程序调用帮助应用程序的问题。从 Apple 文档,特别是 SMJobBless 中的自述文件中,它指出:-

服务管理框架使用代码签名来确保辅助工具是预期由主应用程序运行的工具

本文档应该能够帮助您将帮助应用程序与其所有者正确关联。

请注意,它引用了此处提供的 python 脚本。

于 2013-07-01T12:09:22.187 回答
0

回答我自己的问题:我已经记录了相同的雷达错误,Apple 表示该行为是有意的:

“不暴露不安全的操作取决于特权助手”

于 2013-10-10T12:29:35.923 回答