Linux安全补丁制作与应用:CentOS Stream 8内核Git补丁应用及CVE-2021-22555修复方式咨询
针对CVE-2021-22555漏洞的CentOS Stream 8内核安全问题解答
嗨,很高兴能帮你解决CentOS Stream 8媒体服务器的这个安全问题,咱们一步步拆解你的疑问:
1. 如何通过Git将相关修改应用到内核中?
这种方式更适合自定义内核场景或者测试环境,生产环境优先推荐用官方更新包。具体操作步骤如下:
- 先装齐编译工具和Git依赖:
sudo dnf install git gcc make ncurses-devel bison flex elfutils-libelf-devel openssl-devel - 克隆CentOS Stream 8对应的官方内核Git仓库(记得切换到
c8s-stream-8分支) - 进入仓库后,找到对应CVE-2021-22555的修复提交,或者从上游渠道拿到适配的补丁文件
- 把补丁放到内核源码目录下,用Git命令应用补丁:
git am /path/to/your/cve-2021-22555.patch - 接下来编译内核:先复用当前系统的内核配置,减少自定义成本:
cp /boot/config-$(uname -r) .config make olddefconfig make -j$(nproc) # 用所有CPU核心加速编译 make modules_install install - 最后重启系统,在GRUB菜单选择新编译的内核即可。
2. 此类漏洞修复是否会自动包含在系统更新中?
答案是大部分情况下会自动包含。CentOS Stream作为滚动更新发行版,Red Hat会把这类高危CVE的修复整合到官方内核更新包中,推送到Stream的软件仓库。你只需要执行常规的系统更新命令就能获取修复:
sudo dnf update kernel
如果想确认修复是否已经推送,可以用dnf info kernel查看最新内核版本的变更日志,或者参考CentOS官方发布的安全公告。
3. 若需手动补丁,具体操作流程是怎样的?
如果因为仓库还没推送更新、需要自定义修复等特殊情况要手动打补丁,流程如下:
步骤1:准备编译环境
先安装开发工具组和内核编译依赖:
sudo dnf groupinstall "Development Tools" sudo dnf install ncurses-devel bison flex elfutils-libelf-devel openssl-devel
步骤2:获取对应版本的内核源码
通过DNF下载当前系统内核的源码包:
sudo dnf download --source kernel rpm -ivh kernel-*.src.rpm
源码会被解压到~/rpmbuild/SOURCES/目录,对应的编译配置文件(spec)在~/rpmbuild/SPECS/。
步骤3:应用CVE修复补丁
找到适配CentOS Stream 8内核版本的CVE-2021-22555补丁文件,将其放到~/rpmbuild/SOURCES/目录。然后有两种方式应用:
- 方式一:编辑
~/rpmbuild/SPECS/kernel.spec,在补丁列表中添加该补丁的条目,后续编译时会自动应用 - 方式二:直接进入源码目录手动打补丁:
cd ~/rpmbuild/SOURCES/kernel-$(uname -r | cut -d'-' -f1)/ patch -p1 < ../cve-2021-22555.patch
步骤4:编译并安装内核
回到spec文件目录,执行编译命令生成RPM包:
cd ~/rpmbuild/SPECS/ rpmbuild -bb kernel.spec
编译完成后,内核RPM包会出现在~/rpmbuild/RPMS/下的对应架构目录(比如x86_64),用DNF安装即可:
sudo dnf install ~/rpmbuild/RPMS/x86_64/kernel-*.rpm
最后重启系统,选择新内核启动。
重要提醒
- 手动编译内核前,一定要备份系统数据,避免编译失败导致系统无法启动
- 自定义内核安装后,后续官方内核更新会覆盖它,需要留意更新情况
内容的提问来源于stack exchange,提问作者Codename Jinn




