我计划在同一主机上运行的两个进程之间使用 unix 域套接字进行 IPC(进程间通信)。但是在选择 unix 套接字之前,我还必须研究数据安全性。
我只是想知道如果我使用 unix 套接字而不加密我在该连接上发送的数据,是否有任何方法可以进行“中间人”攻击?
一般而言,任何客户端-服务器通信都容易受到中间人攻击:这仅取决于攻击面的大小。
简而言之,Unix 域套接字通常是安全的。您可以使用 POSIX 权限来锁定对与套接字关联的文件描述符 (FD) 的访问,服务器端可以在客户端完全连接之前请求凭据和 PID 等信息。
如果有人想要拦截数据,他们实际上是在篡改作为核心操作系统一部分的低级 IPC 机制。如果有人能够做到这一点,则被测设备/系统 (DUT) 已经受到威胁(即:安装了恶意内核模块或预加载库)。
攻击 UDS 连接的最可能场所是在调试器中运行使用它们的程序(即:)gdb,或者只是socat在套接字上使用以尝试收集数据。后者可以通过使用身份验证程序和加密来最小化,而前者实际上无济于事。如果有人可以root访问您的 DUT,他/她可以启动根控制台,然后在调试器中启动客户端应用程序。
It's as secure as your system is.