[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

回复: 关于debian环境设置deb安装控制的问题



Hi,
是我的失误,我所说的/etc/rpm/files、/etc/rpm/pkgs、/etc/rpm/libraries不是rpm自己固有的机制,而是某个国内基于centos开发的系统所做出的方案。
所以rpm官方应该是没有相关方案的。
如果我们想要进行deb包安装时的保护,是否可以类似于上文的rpm方案的思路进行对dpkg修改,达成相同的效果,这样的可行性有多高?

2022年5月27日 03:05Boyuan Yang<byang@debian.org> 写道:
Hi,

在 2022-05-27星期五的 01:13 +0800,starcold14写道:
Dear all,
我需要帮助:
在debian环境下,我们通常使用dpkg工具安装deb包。在类centos环境下,使用rpm格式的包进行软件的安装。
而rpm提供了三个全局管理的文件/etc/rpm/files、/etc/rpm/pkgs、/etc/rpm/libraries来禁止rpm包对相应文
件的修改,相应包的移除,相应系统库的重定向。
具体来说,为了保护系统遭受恶意软件修改某个文件a,可以在/etc/rpm/files配置来避免安装rpm包时对文件a进行修改。

但是在debian环境中,似乎没有类似的配置。我查到在debian/control设置Protected: yes或Essential: yes可以
禁止某个包的移除,其功能导致的最终效果与centos环境下的
/etc/rpm/pkgs类似。那么除此之外,在debian系统中是否有类似/etc/rpm/files、/etc/rpm/pkgs、/etc/rp
m/libraries的功能,可以在全局提供保护?
具体点说明,就是Debian中安装deb包时如何使它满足
1. 关键软件包不允许卸载 
2. 关键文件不允许修改
3. 关键库不允许重定向

我不太了解 rpm 如何利用 /etc/rpm/files、/etc/rpm/pkgs、/etc/rpm/libraries
实现禁止对文件的修改、包的移除或者系统库的重定向,所以这个邮件我从一个攻击者来考虑问题,希望能提供一些思路。

鉴于我是恶意攻击者,我就不考虑包依赖、Protected: yes、Essential: yes
等等类似“君子协定”的套路,直接用糙快猛的方式。如果我是一个攻击者且提供恶意的 deb 包或 rpm 包,我会在 deb 包的 postinst
脚本中写入恶意逻辑,rpm 包的 %post scriptlet 中放入恶意脚本。鉴于 deb 包的 postinst 是 shell 脚本且以 root
身份运行,恶意 deb 包可以做任何事情,包括直接修改 dpkg 数据库、篡改系统共享链接库甚至 rm -rf /*。如果 rpm
整套系统没有特殊的保护措施(即 %post scriptlet 同样以 root 身份运行且无其它限制),那理论上我可以在 centos 上做到同样的事情。

总结一下:如果我理解没有问题的话,传统包管理对所安装的软件包是有完全的信任的,这会导致安装不可信软件直接带来破坏系统的风险。附件提供一张截图是我近期找到的现
成例子,可供参考。如果需要无风险安装不可信软件,最佳方案还是容器化或者虚拟化。

我并不知道 rpm 生态系统是否已经出现更精细的控制可以禁止软件包安装时篡改其它系统文件(例如上面提到的 /etc/rpm/
下的配置文件),如果有的话请务必告知,我也想了解其实现方式(例如是否基于 SELinux 等)。

谢谢,
Boyuan Yang

Reply to: