具有 unix 域套接字的 IPC 是否安全?

Is IPC with unix domain sockets are safe?

我计划在同一主机上的两个进程 运行 之间为我的 IPC(进程间通信)使用 unix 域套接字。但在选择 unix 套接字之前,我还必须研究数据安全性。

我只是想知道如果我使用 unix 套接字而不加密我在该连接上发送的数据,有什么方法可以"man-in-the-middle"攻击吗?

一般来说,任何客户端-服务器通信都容易受到 MitM 攻击:这取决于攻击面有多大。

简而言之,Unix 域套接字通常是安全的。您可以使用 POSIX 权限来锁定对与套接字关联的文件描述符 (FD) 的访问,and the server side can request information such as credentials and PID of clients before they can fully connect.

如果有人想要拦截数据,他们实际上是在篡改作为核心操作系统一部分的低级 IPC 机制。如果有人能够做到这一点,则 device/system 被测 (DUT) 已经受到损害(即:安装了恶意内核模块或预加载库)。

最有可能攻击 UDS 连接的地方是 运行 在调试器中使用它们的程序(即:gdb),或者只是在套接字上使用 socat尝试收集数据。后者可以通过使用身份验证例程和加密来最小化,而前者则无济于事。如果有人 root 可以访问您的 DUT,he/she 可以启动根控制台,并在调试器中启动客户端应用程序。

TL;DR

It's as secure as your system is.