首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装Debian软件包安全吗?

安装Debian软件包安全吗?
EN

Security用户
提问于 2015-07-24 14:26:25
回答 1查看 1.6K关注 0票数 7

如果我正确理解,Debian包中的维护人员脚本是以根权限执行的。我认为这意味着,与我的预期相反,安装恶意包不仅会导致在包中运行代码的用户受到损害,而且会影响整个系统。

问题0:我说得对吗?

问题1:是否有任何办法减轻这一威胁?(例如,如果postinstall脚本试图使用潜在的问题特权,是否有任何工具可以在chroot之类的“沙箱”中安装Debian包,提醒管理员。)

问题2: Debian团队在主要存储库中如何应对这种威胁?考虑到为这些存储库贡献软件包的人的数量,这肯定是一项不平凡的任务。

(同样的问题也适用于Debian的衍生产品,如Ubuntu。有关其他发行版如何处理此问题的信息也值得欢迎。)

在2015年7月27日添加:我可以将收到的答复归纳如下:

0)是的,这是个问题。

1)阅读代码,并/或将软件安装为打算使用它的用户。稍后,有fakechroot工具可以减轻手动安装的痛苦。

2)除了参与的许多志愿人员对Debian储存库进行正常筛选外,没有人特别注意这个问题。

现在我将接受WhiteWinterWolf的回答,但我仍然感兴趣的是解决这个问题的好办法。另外,如果其他发行版能够更好地/以不同的方式处理这个问题,也会很有趣。

EN

回答 1

Security用户

回答已采纳

发布于 2015-07-24 17:44:57

问题0:我说得对吗?

是的你是对的。安装包需要root特权,因此安装恶意包意味着以root用户身份运行恶意代码。

问题2: Debian团队在主要存储库中如何应对这种威胁?

首先,建议您只使用Debian存储库,更确切地说,使用Debian稳定存储库,这有两个原因:

  • 在进入这个稳定的分支之前,很多人已经对这个存储库中的代码进行了筛选,这将大大限制恶意应用程序进入的可能性。
  • 然后只提供安全更新,因此未来的更新规模要比添加几十个新功能的更新要小得多。这种修改是较小的,它们更容易被扭曲,这再次限制了任何恶意通过的可能性。

然后,一旦您的根进程即将启动包的安装,为了确保这个包实际上是Debian团队提供的包,并且没有被第三方更改,每个包都是加密签名的。包中的任何更改都会导致大量警告消息,这些消息将要求您在继续安装之前三思。

问题1:是否有任何办法减轻这一威胁?

现在你所关心的,主要取决于你的实际需要和环境。

当然,正如他在评论中提到的那样,生产系统上的任何新装置都应该仔细筛选。您可能希望手动解压缩包以检查其内容,您可能希望将其安装在一个独立的测试环境中,以检查其行为等等。

不过,还有另一种解决办法,主要针对你自己的评论:“没有理由在公用机器上安装俄罗斯方块游戏会危及不玩该游戏的用户的帐户。”

但是要做到这一点,我们需要退一步来了解包到底是什么。

在早期的Unix/Linux时代,没有软件包(在Linux中至少很少):每个想要安装应用程序的人都应该先下载源代码,然后编译它们。这使得软件安装和更新需要更长的时间,但允许每个人按照他们想要的方式配置软件。

然后,软件包出现了:预编译软件,最常见的设置为这样的系统。

俄罗斯方块游戏的问题在于:这些“最常见的设置”包括,软件将在系统范围内安装,这是默认的系统范围安装,这就是为什么安装俄罗斯方块的用户可能危及整个共享环境及其所有用户的原因。

用户级别的

软件安装

只要您的/home分区(如果是一个单独的分区)允许代码执行( /etc/fstab文件中没有noexec挂载选项),那么您的用户就可以在自己的主目录中安装自己的软件,而不会影响其他用户,也不需要根权限。

但是,这种安装并不是上述“最常见设置”的一部分,因此包不提供这种可能性。因此,您的用户必须按照以下步骤进行:

  1. 下载俄罗斯方块游戏源代码,
  2. 阅读INSTALL文档文件并检查configure脚本 (./configure --help)允许的编译选项,这两个选项都随源代码提供。更具体地说,他们需要将所有目录设置在其主目录下。例如,脚本可以允许一个--prefix参数,以便很容易地判断软件必须安装在哪里,因此您可以告诉./configure --prefix=/home/myuser/local。但其他软件可能需要根据其复杂性和需求设置不同的参数。有了一个好的和理智的项目,所有这些都在提供的INSTALL文件和configure在线帮助中得到了明确的解释,而且比看起来容易得多。
  3. 之后,剩下的就是执行make,休息一下,一旦编译结束了make install (而不是根!)。

这种过程中唯一的实际问题是,如果此软件编译需要系统上不可用的依赖项(这将导致在configure步骤中出现错误消息,此脚本的作用之一是确保满足编译和运行软件所需的所有依赖项)。这成为一个递归问题,因为您可以选择安装一个包以满足依赖性,在用户级别编译它,并设置适当的configure参数/环境变量,这样编译工具和最终二进制文件就可以找到它所需要的一切。

但最终,您的用户将得到一个工作的俄罗斯方块完全安装在他的帐户,而不影响其他用户,不需要任何超级用户特权。

票数 5
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/94819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档