homebrew 和 macports 的安全含义是什么?

信息安全 苹果系统 包管理器
2021-08-13 05:37:50

麦克波特

  • 二进制文件可/opt/local/bin/用于tesseract

    bin$ which tesseract
    /opt/local/bin/tesseract
    
    bin$ ls /opt/local/bin/tesseract
    -rwxr-xr-x  1 root  admin  28120 15 Sep  2016 /opt/local/bin/tesseract  
    
    bin$ ls /opt/local/ | grep bin
    drwxr-xr-x  719 root  admin  24446  6 Aug 19:55 bin 
    
  • 安装需要 sudo

sudo port install tesseract

自制

bin$ which packer
/usr/local/bin/packer   

bin$ ls /usr/local/bin/packer
lrwxr-xr-x  1 myuser  admin  33  7 Aug 14:28 /usr/local/bin/packer -> ../Cellar/packer/1.2.5/bin/packer

bin$ ls /usr/local | grep bin
drwxrwxr-x  41 myuser  admin  1394  7 Aug 14:28 bin
  • 安装不需要 sudo

brew install packer

小路

修剪其他软件,这是我的 $PATH 订单:

/opt/local/bin  #macports
/usr/local/bin  #homebrew
/usr/bin        #Apple binaries

/usr/loca/bin 权限。

我相信,从https://apple.stackexchange.com/a/261710开始,/usr/local/bin在自制软件之前,它只能以 root-writeable 的形式开始:

drwxr-xr-x  26 root  wheel  -                 884 Oct 17 03:36 bin

风险?

这两种方法之间有真正的区别吗?如果其中一个portbrew本身被黑客入侵,会发生什么?如果您正在安装的软件包被黑客入侵怎么办?

我意识到安装被黑客入侵的东西无论如何都会以糟糕的方式结束,所以,假设brew/port一切正常并且安装的包也没有损坏,那么当涉及到其他恶意软件试图改变你的系统时,这两种方法的含义是什么?

在我看来,好像/usr/local/bin是敞开的,那里的二进制文件实际上可以取代任何 Apple 程序。我应该担心吗?

2个回答

如果我正确理解了您的问题,可以归结为:

Homebrew 将权限/usr/local/bin从默认drwxr-xr-x root wheel更改为不太安全drwxrwxr-x myuser admin有哪些风险?

正如您所指出的,您的用户(或管理员组中的任何人,或任何设法像您一样运行的病毒)现在可以安装软件,包括覆盖默认系统内容。

这是多大的问题?

多用户系统

在有其他用户登录的服务器等多用户系统上,这将是一个大问题。我无法使用 Mac,但我认为我的 linux 机器足够相似;/usr/local/bin是空的(没有什么可替换的)但是

$ echo $PATH
/usr/local/bin:/usr/bin:/home/mike/bin:/usr/local/sbin:/usr/sbin

因此,假设其他用户具有与我相同的 bash 配置,那么它/usr/local/bin首先查找。因此,我可以调用一个恶意程序ls/usr/local/bin下次有人尝试浏览文件系统时,我的代码将在他们的用户帐户中运行。邪恶的可能性是无穷无尽的。

所以我同意你的观点,这是多用户服务器上的问题。

单用户个人电脑

出于所有意图和目的,您的笔记本电脑上只有一个用户。xkcd 很好地说明了这一点

xkcd授权漫画

如果攻击者 / 恶意软件 / 等已经进入您的帐户,那么他们拥有您的所有数据,他们键盘记录您输入sudo密码只是时间问题,所以您真的关心他们是否安装更多恶意软件/usr/local/bin或将其放入/home/myuser并将其添加到您的路径中?最终结果是一样的。

homebrew 开放的事实是/usr/local我转向 MacPorts 的原因之一(另一个是当目标是系统级添加时 MacPorts 更好,其中可能包括需要 su 权限才能正确安装的各种东西所以它们已安全安装)。MacPorts 拥有自己的库树并且完全独立于 macOS 本身对我来说也很重要,我不希望 macOS 更新杀死我的 MacPorts 添加(因为这些是多个用户将依赖的服务)。付出的代价是您必须完成所有 LCM 和修补(通过更新端口)。

所以,在我的 macOS 服务器上,我正在运行postfixdovecotnginxminio等。我正在为这些使用 MacPorts。

我开始使用自制软件(因为它到处都提到),但由于自制软件没有(可能以合理的方式几乎没有能力)postfix,我开始研究 MacPorts 并确信 MacPorts 更好(对我来说)。

MacPorts 系统使用 su 权限安装软件,因此您必须相信“端口”没有被篡改使用补丁或备用源下载(MacPorts 编译软件,不下载二进制文件,我认为这也是一个优势) )。鉴于您从具有相当严格的访问控制的公共仓库下载 Ports,我认为风险很小。因此,您系统上 /opt 中的结果环境得到了更好的保护。