链接到非常旧版本的 glibc 会引入安全漏洞吗?

Will linking to very old versions of glibc introduce security vulnerabilities?

我正在编译一个程序(它恰好是用 Rust 编写的),我希望它与非常旧和过时的系统兼容,包括一些 EOL-ed linux 发行版。这样做的主要障碍是旧系统没有最新的 glibc 二进制文件。

解决方案并不复杂,您只需 link 一个非常古老的二进制文件即可。但是,众所周知,这些旧的二进制文件存在许多安全漏洞,其中一些漏洞非常严重。我想保持与人们 运行 这些古老且不安全的 glibc 安装的兼容性,而不会让我更负责任的用户面临风险。

link使用古老的 glibc 版本是否会在安装最新的系统上引入漏洞?

Will linking to ancient glibc versions introduce vulnerabilities on systems whose installations are up to date?

如果您 link 是动态的,则不会。

任何影响 GLIBC 的修复程序都位于 libc.so.6(和相关库)中。这些库通常来自系统,因此在最新的系统上,它们是最新的(根据定义),您的程序将自动使用它们,因此本身也是最新的。

事实上,这是动态 linking 的主要原因之一:更新的 libc.so.6 修复了 all(动态 link ed) 系统上的程序一次。对于静态 linking,每个 程序都必须重新linked 才能使修复生效。