1. 漏洞简介
- 漏洞编号: CVE-2026-31431
- 漏洞威胁等级: 高危
- 漏洞描述:
Linux Kernel的algif_aead模块(AF_ALG用户态加密API 的AEAD接口)存在本地提权漏洞,该漏洞源于 2017 年引入的一项in-place优化(commit 72548b093ee3),由于源数据与目标数据来自不同的内存映射,in-place操作会将page-cache页面错误地放入可写目的地的scatterlist中,未授权的本地攻击者可通过splice()将SUID二进制文件的页缓存页面与AF_ALGsocket 加密操作串联,实现对任意页缓存页面的可控4字节写入,从而篡改已加载到内存中的SUID程序代码,最终获取root权限。
2. 影响范围
银河麒麟桌面及服务器主要版本均受影响,详情如下:
| 产品名称 | 影响状态 |
|---|---|
| 银河麒麟桌面操作系统V11 | 影响 |
| 银河麒麟桌面操作系统V10 SP1 | 影响 |
| 银河麒麟高级服务器操作系统V11 | 影响 |
| 银河麒麟高级服务器操作系统V10 SP3 2403 | 影响 |
| 银河麒麟高级服务器操作系统V10 SP3 | 影响 |
| 银河麒麟高级服务器操作系统V10 SP2 | 影响 |
| 银河麒麟高级服务器操作系统V10 SP1 | 影响 |
3. 漏洞修复方案及缓解措施
3.1 修复措施
参考对应版本安全公告进行漏洞修复: support.kylinos.cn/#/security/…
3.2 缓解措施
下载缓解措施脚本附件到本地(kylin_mitigation-cve-2026-31431.sh),并在 脚本所在的路径,执行以下命令:
$sudo bash ./kylin_mitigation-cve-2026-31431.sh
执行脚本后,脚本提示“[总结] CVE-2026-31431 漏洞缓解措施已应用完成”, 代表临时缓解措施已经部署成功。
脚本执行完毕后会提示“是否需要重启系统”。若出现相关提示,请按提示执 行重启操作,临时缓解措施方可生效。
脚本更新下载链接: security-oss.kylinos.cn/Desktop/CVE…
根本修复措施
步骤1:创建UpdateInfo源配置文件
在 /etc/yum.repos.d/ 目录下新建 kylin-updateinfo.repo 文件:
cat > /etc/yum.repos.d/kylin-updateinfo.repo << EOF
[kylin-updateinfo]
name=Kylin Linux Advanced Server 10 - UpdateInfo
baseurl=https://update.cs2c.com.cn/NS/UpdateInfo/V10SP1/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled=1
EOF
步骤2:清理并重建 yum 缓存
yum clean all && yum makecache
步骤3:验证源是否生效
执行以下命令,能看到 KYSA-202605-1010 的信息,就说明配置成功了:
yum updateinfo list all | grep KYSA-202605-1010
步骤4:重新执行补丁下载/安装命令
# 仅下载不安装(和你之前的操作一致)
yum update --downloadonly --downloaddir=./ --advisory KYSA-202605-1010
# 或者直接安装补丁
yum update --advisory KYSA-202605-1010
步骤5:查看默认启动项
执行如下命令查看当前默认启动项,若已设置为升级后的内核,则跳过后续设置步骤;若未设置,需手动配置。
sudo grub2-editenv list
步骤6:设置默认启动项
- 使用
grep命令查看GRUB配置文件中所有可用内核选项:
sudo grep ^menuentry /boot/efi/EFI/kylin/grub.cfg | cut -d "'" -f2
- 执行命令指定升级后的内核为默认启动项,将引号内内容替换为上一步查询到的对应内核名称:
sudo grub2-set-default "Kylin Linux Advanced Server xxxx"
步骤7:重启并验证
重启服务器后,执行以下命令核验当前内核版本,若输出为升级后的内核版本,则代表内核升级、漏洞修复完成。
uname -r
一键修复脚本
- repair-cve-KYSA-202605-1010.sh
#!/bin/bash
# 漏洞修复 KYSA-202605-1010 | 带时间戳 + 控制台+日志双输出
LOG_FILE="./repair-KYSA-202605-1010_$(date +%Y%m%d).log"
# 统一日志输出函数:带时间戳,同时输出终端+日志
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
log "===== 开始执行漏洞修复 $(hostname -I )====="
# 1. 配置更新源
log "配置Kylin更新源"
cat > /etc/yum.repos.d/kylin-updateinfo.repo << EOF
[kylin-updateinfo]
name=Kylin Linux Advanced Server 10 - UpdateInfo
baseurl=https://update.cs2c.com.cn/NS/UpdateInfo/V10SP1/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled=1
EOF
if [ $? -ne 0 ];then
log "错误:写入repo配置失败,脚本退出"
exit 1
fi
# 2. 刷新YUM缓存
log "清理并刷新YUM缓存"
yum clean all -y && yum makecache -y
if [ $? -ne 0 ];then
log "错误:YUM缓存刷新失败,脚本退出"
exit 1
fi
# 3. 查询并安装补丁
log "查询漏洞补丁 KYSA-202605-1010"
yum updateinfo list all | grep KYSA-202605-1010
log "开始安装补丁"
yum update --advisory KYSA-202605-1010 -y
if [ $? -ne 0 ];then
log "错误:补丁更新失败,脚本退出"
exit 1
fi
# 4. 核查启动项与内核
log "核查GRUB默认启动项"
grub2-editenv list
log "核查当前运行内核"
uname -r
log "===== 脚本执行完成 ====="
故障原因
1. UpdateInfo 源官方使用规范
银河麒麟高级服务器系统的 KYSA 安全公告、CVE 漏洞补丁,依赖专属 UpdateInfo 源才能被 YUM 正常识别与调用。
根据官方要求,V10 SP1 版本需配置如下源地址:
https://update.cs2c.com.cn/NS/UpdateInfo/V10SP1/x86_64/
该源为安全补丁的元数据来源,只有完成配置,才能通过 KYSA 编号、CVE 编号定向检索并升级对应漏洞补丁。
2. 现场环境核查
- 系统版本:银河麒麟高级服务器 V10 SP1(通过内核版本后缀
v2101判定) - 内核版本:
4.19.90-23.8.v2101.ky10.x86_64 - YUM 仓库状态:当前系统仅存在
[ks10-adv-updates]、[ks10-adv-addons]仓库,未配置 UpdateInfo 源,这是补丁检索失败的直接原因。
3. Nothing to do 报错根因
执行定向补丁下载命令:
yum update --downloadonly --downloaddir=./ --advisory KYSA-202605-1010
终端输出:
No security updates needed, but 520 updates available
Nothing to do.
故障根因:
由于系统未配置 UpdateInfo 源,YUM 无法从官方获取 KYSA-202605-1010 对应的补丁元数据,无法匹配到对应安全补丁包。因此 YUM 判定当前无需要处理的安全更新,命令直接终止执行。