Linux内核 CopyFail 高危漏洞复现及修复方案

发布于: 2026-06-01 14:13
来源: 卓识网安



Linux Kernel 本地权限提升漏洞 CVE-2026-31431,代号 Copy Fail,该漏洞漏洞源于 Linux 内核加密子系统 algif_aead 模块中的一处逻辑缺陷。通过利用 AF_ALG 套接字与splice()系统调用组合,可向任意可读文件的页缓存(page cache)写入4字节受控数据,实现本地提权至 root。该漏洞影响 2017 年至补丁发布前构建的几乎所有 Linux 内核版本,EXP 已公开,极易利用。

pexels-tima-miroshnichenko-5380618.jpg

漏洞基本信息


漏洞原因:

该漏洞源于 Linux 内核加密子系统 algif_aead 模块中的一处逻辑缺陷。2017 年引入的一项 in-place 优化,由于源数据与目标数据来自不同的内存映射,in-place 操作会将 page-cache 页面错误地放入可写目的地的 scatterlist 中,未授权的攻击者可通过 splice() 将 SUID 二进制文件的页缓存页面与 AF_ALG socket 加密操作串联,实现对任意页缓存页面的可控 4 字节写入,从而篡改已加载到内存中的 SUID 程序代码,最终获取 root 权限。

漏洞影响范围:

2017 年至补丁发布前构建的几乎所有 Linux 内核版本。

01010、.png

高风险场景:

漏洞复现

漏洞利用流程:


修复方案:

各厂商已发布内核安全更新,立即升级内核到修复版本。

Ubuntu/Debian 参考修复方案:


#1.更新软件源

sudo apt update

#2.查看当前内核版本

uname -r

#3.完整升级(包含内核)

sudo apt full-upgrade -y

#4.重启系统

sudo reboot

RHEL/CentOS参考修复方案:




#1.更新系统

sudo dnf update kernel -y

#2.重启系统

sudo reboot

SUSE参考修复方案:




#1.更新内核

sudo zypper update kernel -y

#2.重启系统

sudo reboot

麒麟系统参考修复方案


#1.更新软件源

对于使用yum的系统,在终端执行以下命令更新软件源:

sudo yum clean all && sudo yum makecache

对于使用dnf的系统,在终端执行以下命令更新软件源:

sudo dnf clean all && sudo dnf makecache

#2.升级内核

$sudo yum update kernel*

或者:

$sudo dnf update kernel*

#3.查看默认启动项

使用grep命令快速查看当前GRUB配置文件中有哪些可用的内核选项:

sudo grep ^menuentry /boot/efi/EFI/kylin/grub.cfg | cut -d "'" -f2

在终端输入如下命令,强制指定启动项。设置升级后的内核版本为默认启动项(请用具体需要升级的内核menuentry 启动项名称替代命令行中引号内的内容)。

sudo grub2-set-default "Kylin Linux Advanced Server xxxx"

#4.重启系统

sudo reboot

参考链接:https://www.kylinos.cn/about/news/2051829003803791362.html

统信参考解决方案


服务器 D 版

#1.命令更新内核及相关组件

sudo apt update && sudo apt upgrade linux-image-$(uname -r)

#2.重启系统

sudo reboot

其他服务器版本

#1.通过yum升级至安全内核版本

sudo yum update-minimal --cve CVE-2026-31431

或直接升级内核包:

sudo yum update kernel

#2.重启系统

sudo reboot

参考链接:

https://www.uniontech.com/news-info/2903.html

凝思安全操作系统参考修复方案:




V6.0.80系统升级方法:

#1.检查内核版本

V6.0.80系统升级前请先通过uname -a 命令确认当前内核版本是否为4.19.90,如果不是则不需要升级。

#2.下载V6.0.80系统的内核升级包和MD5文件

将下载好的软件包拷贝到需要升级的系统中,在终端执行md5sum -c MD5.txt,确认所有结果都为“通过”。

#3.按照顺序安装内核软件包

安装内核包

dpkg -i linux-kbuild-4.19_4.19.90-26.042.vlx90.v80u7sn_amd64.deb

dpkg -i linux-headers-4.19.0-12-common-linx-security_4.19.90-26.042.vlx90.v80u7sn_all.deb

dpkg -i linux-headers-4.19.0-12-linx-security-amd64_4.19.90-26.042.vlx90.v80u7sn_amd64.deb

dpkg -i linux-image-4.19.0-12-linx-security-amd64_4.19.90-26.042.vlx90.v80u7sn_amd64.deb

dpkg -i linux-libc-dev_4.19.90-26.042.vlx90.v80u7sn_amd64.deb

dpkg -i linux-compiler-gcc-4.9-x86_4.19.90-26.042.vlx90.v80u7sn_amd64.deb

安装驱动包

dpkg -i update-drivers-4.19.90_1.0-90lx80u9_amd64.deb

安装安全模块

modprobe -r linx_sec

dpkg -P linx-security-module-4.19.90

dpkg -i linx-security-module-4.19.90_3.23-linx_amd64.deb

V6.0.100系统升级方法:

#1.下载V6.0.100系统对应架构的内核升级包和MD5文件。

#2.将下载好的软件包拷贝到需要升级的系统中,在终端执行md5sum -c MD5.txt,确认所有结果都为“通过”。

#3.按照以下顺序安装内核软件包(以x86_64为例,其他架构安装对应架构的软件包即可):先安装 linux-kbuild-4.19_4.19.90-26.042.vlx90.v100u7sn_amd64.deb,安装完成后再安装其它内核软件包。

dpkg -i linux-kbuild-4.19_4.19.90-26.042.vlx90.v100u7sn_amd64.deb

dpkg -i linux-*

安装驱动包

dpkg -P update-drivers-4.19.0

dpkg -i update-drivers-4.19.90_1.0-90lx100u5_amd64.deb

安装安全模块

modprobe -r linx_sec

dpkg -P linx-security-module

dpkg -i linx-security-module-4.19.90_3.23-linx_amd64.deb

V6.0.99系统升级方法:

#1.下载V6.0.99系统对应架构的内核升级包和MD5文件。

#2.将下载好的软件包拷贝到需要升级的系统中,在终端执行md5sum -c MD5.txt,确认所有结果都为“通过”。

#3.按照以下顺序安装内核软件包(以x86_64为例,其他架构安装安装对应架构的软件包即可):

安装内核软件包

yum localinstall python3-perf-4.19.90-26.042.vlx89.1.v99_2003.task.27678.04301710.x86_64.rpm -y

yum localinstall bpftool-4.19.90-26.042.vlx89.1.v99_2003.task.27678.04301710.x86_64.rpm -y

yum localinstall kernel-tools-4.19.90-26.042.vlx89.1.v99_2003.task.27678.04301710.x86_64.rpm -y

yum localinstall kernel-devel-4.19.90-26.042.vlx89.1.v99_2003.task.27678.04301710.x86_64.rpm -y

yum localinstall kernel-4.19.90-26.042.vlx89.1.v99_2003.task.27678.04301710.x86_64.rpm -y

更新grub配置

grub2-mkconfig -o /boot/grub2/grub.cfg

参考链接:https://www.linx-info.com/#/ServiceAndSupport/NoticeDetails?id=Linx-SA-20260505






分享