【问题标题】:Authorizing XPC connections授权 XPC 连接
【发布时间】:2012-07-21 08:29:49
【问题描述】:

我的应用程序包含一个内核扩展作为关键组件。该内核扩展由系统控制套接字控制。出于安全原因,该系统控制套接字仅接受来自超级用户的连接。

为了从我的常规非超级用户应用程序进行通信,我有一个 SMJobBless 助手充当中介。问题是,我只希望我的应用程序(由我签名)能够连接到这个 XPC 服务。有什么方法可以验证连接另一端的可执行文件上的签名吗?如果我能得到另一端进程的 PID,那就足够了,我知道如何从那里验证签名。

【问题讨论】:

    标签: macos security xpc


    【解决方案1】:

    如果我能得到另一端进程的PID

    您可以使用xpc_connection_get_pid()

    【讨论】:

    【解决方案2】:

    对于 2021 年阅读本文的任何人来说,安全研究表明,PID 由于其可重用性而不值得信赖。这是关于这个问题的good presentation

    从 macOS 11 开始,SecCodeCreateWithXPCMessage 函数可用,它允许确定 XPC 消息的真正发送者。在旧版本的 macOS 上,存在未记录的函数 void xpc_connection_get_audit_token(xpc_connection_t, audit_token_t *),它可以通过更多步骤来完成同样的事情。

    我构建了一个名为 SecureXPC 的 Swift XPC 框架,它使用了这两个函数,所以如果你想了解如何使用它们,请查看 acceptMessage 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 2017-12-26
      • 2015-03-23
      • 1970-01-01
      • 2018-12-05
      • 2016-03-14
      • 1970-01-01
      相关资源
      最近更新 更多