我读到(这里和这里)Homebrew(Unix 包管理器)是一个重大的 Mac 安全风险。允许攻击是因为 Homebrew 可以在/usr/local/bin
没有 root 用户权限的情况下写入,这允许另一个 Homebrew 进程将恶意进程写入此目录树。默认情况下,该树在 shell 的路径中的/usr/local/bin
前面加上前缀。/usr/bin
因此,攻击者可以注入恶意二进制文件来更改时钟或窃取管理员密码(例如恶意 sudo)。
有没有人知道这些漏洞?有没有人有更好的方法来访问关键的 Unix 命令而不影响最终用户终端的安全性(例如带有 OSX 的 MacBook)?您是否使用依赖于使用 root 权限安装到 /opt 的包管理器的 Macports?您是否在 Virtual Box 或 VMWare 等模拟器中执行所有 Unix shell 工作?
我知道从制造开始就存在许多安全漏洞,并且一旦安装了软件应用程序。我很好奇安全专家对此的最佳实践。
更新 2018-11-07
我查看了 macports 邮件列表并收到了快速详细的回复。不幸的是,Homebrew 论坛上没有关于功能细节的回复。在这一点上,我怀疑 macports 具有更好的安全功能。某处总有漏洞,为了真正安全,我会考虑将这些开源应用程序安装在一个自包含的模拟容器中。例如使用 VirtualBox、VMWare 或 Parallels。这样,如果存在安全问题,它将被包含在内,并且不会暴露对 Mac 钥匙串或其他关键数据的访问权限。
从 macports 邮件列表收到的更新
使用我们网页上发布的安装程序包安装 MacPorts 需要管理员密码,并且它安装的文件和目录归 root 所有,这意味着除了管理员之外没有人可以更改它们。它还创建了一个名为“macports”的普通非特权用户帐户,供 MacPorts 以后使用。
使用以这种方式安装的 MacPorts 还需要管理员密码。MacPorts 端口安装的文件通常由 root 拥有,尽管各个端口可以对此做出自己的决定。例如,数据库服务器端口可能会创建一个特殊的用户帐户,供数据库服务器在运行时使用,并且它可能会安装一个空目录,数据库服务器将写入的文件可以存放在该目录中,并且该目录的所有者将设置为该新用户帐户。
当您使用“sudo”调用“port”命令并提供管理员密码时,MacPorts 会切换到非特权“macports”用户。此时,它不再具有 root 权限,因此即使提交了试图执行此操作的恶意端口文件,它也无法修改其构建目录之外的文件。在执行需要 root 访问权限的操作时,MacPorts 会提升回 root 权限,例如在将文件实际安装到 /opt/local 前缀中的最后一步。
可以从配置为不使用 root 访问的源构建 MacPorts,如果这样做,则不会获得上述保护。我们不建议这样做。
MacPorts 会跟踪每个端口安装的文件,并且不允许一个端口覆盖另一个端口的文件(除非用户使用 -f 标志请求此操作,因此用户应避免习惯性地使用此标志)。
另一个帖子
还需要注意的是,如果没有对它的工作方式进行相当完整的重新哈希,自制软件不能突然改变自己以提供这种程度的安全性,并且大多数/许多/全部是安装在 /usr/local 中的“优势”使它流行的服务将完全丢失,并且很可能需要重写它的许多/大部分/所有公式以适应这种变化。他们中的许多人目前假设在 /usr/local 中会自动找到东西。
homebrew 之所以流行,是因为它“简单”——它在 /usr/local 中的文件无需任何编译器或 shell 干预即可找到。然而,这并非没有代价。
MacPorts 需要做更多的工作来专门包含某些包含路径、库路径和可执行路径——但这需要对您实际获得的内容有一定的了解,并且知道未经您的许可不能乱用它的安全性。