在最近出现SSH漏洞后,Systemd减少了依赖关系

鉴于最近发生的事件,关于systemd间接参与的漏洞,特别是在sshd/xz后门事件(CVE-2024-3094)期间,出现了一场重大辩论,强调了与libsystemd的依赖性相关的潜在安全风险,libsystemd是一个对将服务与systemd集成至关重要的库。

问题的关键在于观察到,libsystemd通过链接到所有systemd服务和任何希望与systemd通信的第三方服务,引入了可能成为漏洞来源的额外依赖关系。

针对这个漏洞问题,建议的解决方案是大幅减少libsystemd的依赖项,只包括libc
,标准的C库,从而最大限度地减少潜在安全威胁的攻击面。当前的实现包括其他几个库,这些库可能不是实现核心libsystemd功能所必需的。

为了回应这些担忧,已经向systemd提出了一个功能请求,以最大限度地减少libsystemd对libc的依赖。这一请求背后的理由是剥离libsystemd的核心功能,从而降低可能危及系统安全的漏洞风险。

然而,这种方法可能需要将libsystemd重新组织为多个库,每个库都适合特定的API,并确保只有必要的依赖项才包含在真正需要的地方。

systemd背后的关键人物Lennart Poetring通过强调最近的变化来解决这些担忧,这些变化缓解了一些安全担忧。据他说,在最新的git-main版本中,libsystemd不再强制要求压缩库作为硬依赖项。

此外,正在计划删除libgcrypt作为硬依赖项,进一步精简libsystemd并增强系统安全性。此外,还注意到sshd已经实现了
sd_notify()
独立运作,这是Poetering为此类性质的项目推荐的举措。

最后,讨论还谈到了以可以从ELF元数据中读取的方式公开动态加载(dlopen)信息的可能性,从而提供了一种更透明的方式来理解和管理依赖关系。

该提案提出了一种协作方法,鼓励Linux生态系统中的各个利益相关者(包括包维护者和系统构建者)提供投入和支持。

整个讨论和提案的详细信息可在项目的GitHub存储库中进行后续跟进。