摘要:
kernel security update
安全等级: High
公告ID: KylinSec-SA-2024-4981
发布日期: 2025年7月31日
关联CVE: CVE-2024-44939 CVE-2024-44960 CVE-2024-44970 CVE-2024-44985 CVE-2024-44986 CVE-2024-44987 CVE-2024-44988 CVE-2024-45020
Linux内核,即操作系统核心本身。
安全修复:
在Linux内核中,以下漏洞已被修复:
jfs: 修复dtInsertEntry中的空指针解引用问题
[syzbot报告]
常规保护错误,可能由于非规范地址0xdffffc0000000001引起:0000 [#1] PREEMPT SMP KASAN PTI
KASAN: 在范围[0x0000000000000008-0x000000000000000f]内出现空指针解引用
CPU: 0 PID: 5061 Comm: syz-executor404 Not tainted 6.8.0-syzkaller-08951-gfe46a7dd189e #0
硬件名称:Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
RIP: 0010:dtInsertEntry+0xd0c/0x1780 fs/jfs/jfs_dtree.c:3713
...
[分析]
在dtInsertEntry()中,当指针h与p的值相同时,在UniStrncpy_to_le()写入名称后,
p->header.flag将被清除。这将导致之前为真的判断条件"p->header.flag & BT-LEAF"
在写入名称操作后变为假,从而进入错误的分支并在第二次判断该条件时访问未初始化的对象ih。
[修复]
获取页面后首先检查freelist,如果freelist == 0则退出dtInsert()并返回-EINVAL。(CVE-2024-44939)
在Linux内核中,以下漏洞已被修复:
usb: gadget: core: 检查未设置的描述符
在查看maxpacket之前确保描述符已设置。
这修复了在此情况下的空指针panic问题。
当gadget未正确设置当前速度的端点,或者gadget描述符格式错误
且找不到速度/端点的描述符时,可能会出现此问题。
目前没有已知的gadget驱动程序存在此问题,但这可能在新gadget
开发过程中导致难以发现的错误。(CVE-2024-44960)
在Linux内核中,以下漏洞已被修复:
net/mlx5e: SHAMPO, 修复无效的WQ链表解除链接
当WQE中的所有strides都被消耗后,WQE会从WQ链表中解除链接(mlx5_wq_ll_pop())。
对于SHAMPO,即使在WQE完全消耗并解除链接后,仍可能收到相同WQE的0消耗strides的CQEs。
这会触发对同一wqe的额外解除链接,从而损坏链表。
通过接受0大小的消耗strides而不再次解除WQE链接来修复此场景。(CVE-2024-44970)
在Linux内核中,以下漏洞已被修复:
ipv6: 防止ip6_xmit()中可能的UAF
如果skb_expand_head()返回NULL,skb已被释放,
并且相关的dst/idev也可能已被释放。
我们必须使用rcu_read_lock()来防止可能的UAF。(CVE-2024-44985)
在Linux内核中,以下漏洞已被修复:
ipv6: 修复ip6_finish_output2()中可能的UAF
如果skb_expand_head()返回NULL,skb已被释放
并且相关的dst/idev也可能已被释放。
我们需要持有rcu_read_lock()来确保dst和相关的idev仍然存活。(CVE-2024-44986)
在Linux内核中,以下漏洞已被修复:
ipv6: 防止ip6_send_skb()中的UAF
syzbot报告了ip6_send_skb()中的UAF问题[1]
在ip6_local_out()返回后,除非我们持有rcu_read_lock(),
否则我们不能再安全地解引用rt。
类似的问题已在commit a688caa34beb ("ipv6: take rcu lock in rawv6_send_hdrinc()")中修复
ip6_finish_output2()中的另一个潜在问题在单独的补丁中处理。
在Linux内核中,以下漏洞已被修复:
net: dsa: mv88e6xxx: 修复越界访问问题
如果ATU违规是由CPU加载操作引起的,SPID可能大于DSA_MAX_PORTS(即mv88e6xxx_chip.ports[]数组的大小)。(CVE-2024-44988)
在Linux内核中,以下漏洞已被修复:
bpf: 修复stacksafe()中的内核验证器崩溃问题
Daniel Hodges报告在使用sched-ext时遇到内核验证器崩溃。进一步调查显示,崩溃是由于stacksafe()中的非法内存访问导致的。具体来说,是以下代码存在问题:
if (exact != NOT_EXACT &&
old->stack[spi].slot_type[i % BPF_REG_SIZE] !=
cur->stack[spi].slot_type[i % BPF_REG_SIZE])
return false;
其中'i'会遍历old->allocated_stack。如果cur->allocated_stack < old->allocated_stack,就会发生越界访问。
为解决此问题,添加'i >= cur->allocated_stack'检查条件,如果该条件为真,则stacksafe()应返回失败。否则,cur->stack[spi].slot_type[i % BPF_REG_SIZE]的内存访问是合法的。(CVE-2024-45020)
cve名称 | 产品 | 组件 | 是否受影响 |
---|---|---|---|
CVE-2024-44939 | V6 | kernel | Fixed |
CVE-2024-44960 | V6 | kernel | Fixed |
CVE-2024-44970 | V6 | kernel | Fixed |
CVE-2024-44985 | V6 | kernel | Fixed |
CVE-2024-44986 | V6 | kernel | Fixed |
CVE-2024-44987 | V6 | kernel | Fixed |
CVE-2024-44988 | V6 | kernel | Fixed |
CVE-2024-45020 | V6 | kernel | Fixed |
软件名称 | 架构 | 版本号 |
---|---|---|
bpftool | x86_64 | 7.2.0-1.ks6 |
kernel | x86_64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-devel | x86_64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-headers | x86_64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-source | x86_64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-tools | x86_64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-tools-devel | x86_64 | 6.6.0-28.0.0.34.kb11.ks6 |
perf | x86_64 | 6.6.0-28.0.0.34.kb11.ks6 |
python3-perf | x86_64 | 6.6.0-28.0.0.34.kb11.ks6 |
bpftool | aarch64 | 7.2.0-1.ks6 |
kernel | aarch64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-devel | aarch64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-headers | aarch64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-source | aarch64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-tools | aarch64 | 6.6.0-28.0.0.34.kb11.ks6 |
kernel-tools-devel | aarch64 | 6.6.0-28.0.0.34.kb11.ks6 |
perf | aarch64 | 6.6.0-28.0.0.34.kb11.ks6 |
python3-perf | aarch64 | 6.6.0-28.0.0.34.kb11.ks6 |
方法一:下载安装包进行升级安装
1、通过下载链接下载需要升级的升级包保存,如 xxx.rpm
2、通过rpm命令升级,如 rpm -Uvh xxx.rpm
方法二:通过软件源进行升级安装
1、保持能够连接上互联网
2、通过yum命令升级指定的包,如 yum install 包名