• 公告ID (KylinSec-SA-2024-4984)

摘要:

kernel security update

安全等级: High

公告ID: KylinSec-SA-2024-4984

发布日期: 2025年7月30日

关联CVE: CVE-2024-46814   CVE-2024-46701   CVE-2024-46796   CVE-2024-46788   CVE-2024-46797   CVE-2024-46784   CVE-2024-46787   CVE-2024-46781   CVE-2024-46780   CVE-2024-45009   CVE-2024-46776   CVE-2024-46758   CVE-2024-46849   CVE-2024-46811   CVE-2024-44958   CVE-2024-42067   CVE-2024-46761   CVE-2024-46695   CVE-2024-46773   CVE-2024-45029   CVE-2024-45028   CVE-2024-46750   CVE-2024-46791   CVE-2024-46756   CVE-2024-46755   CVE-2024-46717   CVE-2024-46732   CVE-2024-46857   CVE-2024-46734   CVE-2024-46772   CVE-2024-46736   CVE-2024-46737   CVE-2024-46738   CVE-2024-46739   CVE-2024-46816   CVE-2024-42312   CVE-2024-46806   CVE-2024-46818   CVE-2024-46679   CVE-2024-46798   CVE-2024-46753   CVE-2024-46777   CVE-2024-46674   CVE-2024-46844   CVE-2024-46673   CVE-2024-46771   CVE-2024-46852   CVE-2024-46845   CVE-2024-46829   CVE-2024-45016   CVE-2024-46827   CVE-2024-45011   CVE-2024-46812   CVE-2024-46843   CVE-2024-44949   CVE-2024-46686   CVE-2024-46760   CVE-2024-46767   CVE-2024-46681   CVE-2024-46804   CVE-2024-46728   CVE-2024-46846   CVE-2024-46740   CVE-2024-46725   CVE-2024-46768   CVE-2024-46842   CVE-2024-46722   CVE-2024-46721   CVE-2024-46841  

  • 详细介绍

1. 漏洞描述

   

Linux内核,操作系统核心本身。

安全修复:

在Linux内核中,以下漏洞已被修复:

bpf: 考虑bpf_jit_binary_lock_ro()中set_memory_rox()的返回值

set_memory_rox()可能失败,导致内存不受保护。

检查返回值并在bpf_jit_binary_lock_ro()返回错误时退出。(CVE-2024-42067)

在Linux内核中,以下漏洞已被修复:

sysctl: 始终初始化i_uid/i_gid

始终在sysfs核心中初始化i_uid/i_gid,以便set_ownership()可以安全地跳过设置它们。

提交5ec27ec735ba("fs/proc/proc_sysctl.c: 修复/proc/sys inodes上i_uid/i_gid的默认值。")在set_ownership()未实现时添加了i_uid/i_gid的默认值。它还遗漏了调整net_ctl_set_ownership()在计算更好值失败时使用相同的默认值。(CVE-2024-42312)

在Linux内核中,以下漏洞已被修复:

parisc: 修复可能的DMA损坏

ARCH_DMA_MINALIGN被定义为16 - 这太小了 - 两个不相关的16字节分配可能共享一个缓存行。如果其中一个分配使用DMA写入,另一个使用缓存写入,则使用DMA写入的值可能被损坏。

此提交将ARCH_DMA_MINALIGN更改为PA20上为128,PA1.1上为32 - 这是最大的可能缓存行大小。

由于不同的parisc微架构具有不同的缓存行大小,我们定义了arch_slab_minalign()、cache_line_size()和dma_get_cache_alignment(),以便内核可以根据检测到的缓存行大小动态调整slab缓存参数。(CVE-2024-44949)

在Linux内核中,以下漏洞已被修复:

sched/smt: 修复sched_smt_present dec/inc的不平衡

在进行压力测试时,我收到了以下警告报告:

jump label: 负数计数!
WARNING: CPU: 3 PID: 38 at kernel/jump_label.c:263 static_key_slow_try_dec+0x9d/0xb0
调用跟踪:
<TASK>
__static_key_slow_dec_cpuslocked+0x16/0x70
sched_cpu_deactivate+0x26e/0x2a0
cpuhp_invoke_callback+0x3ad/0x10d0
cpuhp_thread_fun+0x3f5/0x680
smpboot_thread_fn+0x56d/0x8d0
kthread+0x309/0x400
ret_from_fork+0x41/0x70
ret_from_fork_asm+0x1b/0x30
</TASK>

因为在sched_cpu_deactivate()中cpuset_cpu_inactive()失败时,cpu离线失败,但在调用sched_cpu_deactivate()之前sched_smt_present已经递减,导致dec/inc不平衡,因此通过在错误路径中递增sched_smt_present来修复它。(CVE-2024-44958)

在Linux内核中,以下漏洞已被修复:

mptcp: pm: 仅对MPJ请求递减add_addr_accepted

添加以下警告...

WARN_ON_ONCE(msk->pm.add_addr_accepted == 0)

...在递减add_addr_accepted计数器之前,有助于在运行mptcp_join.sh自测试中的"remove single subflow"子测试时发现一个错误。

删除一个'subflow'端点将首先触发RM_ADDR,然后是子流关闭。在此补丁之前,在接收到RM_ADDR时,另一个对等方将尝试递减此add_addr_accepted。这是不正确的,因为附加的子流不是在接收到ADD_ADDR时创建的。

解决这个问题的方法是,只有当附加的子流是对非0远程id的MP_JOIN,并且由接收RM_ADDR的主机发起时,才递减计数器。(CVE-2024-45009)

在Linux内核中,以下漏洞已被修复:

char: xillybus: 在探测设备时检查USB端点

确保在驱动程序探测设备时,驱动程序可能尝试访问的所有端点都存在并且类型正确。

所有XillyUSB设备必须在地址1有一个批量IN和批量OUT端点。这在xillyusb_setup_base_eps()中验证。

除此之外,XillyUSB设备可能有额外的批量OUT端点。关于这些端点地址的信息是从驱动程序在探测设备时获取的数据结构(IDT)中推导出来的。这些端点在setup_channels()中检查。

XillyUSB设备从不超过一个IN端点,因为所有指向主机的数据都在这个单一的批量IN端点中多路复用。这就是为什么setup_channels()只检查OUT端点。(CVE-2024-45011)

在Linux内核中,以下漏洞已被修复:

netem: 如果重复入队失败,则修复返回值

netem_enqueue()中存在一个错误,由提交5845f706388a("net: netem: 修复__skb_to_sgvec中的skb长度BUG_ON")引入,可能导致释放后使用。

此提交使netem_enqueue()在数据包被复制时总是返回NET_XMIT_SUCCESS,这可能导致父qdisc的q.qlen被错误地增加。当这种情况发生时,qlen_notify()可能在销毁期间在父级上被跳过,为一些类别的qdisc(如DRR)留下悬空指针。

此错误发生的两种方式:

- 如果复制的数据包被rootq->enqueue()丢弃,然后原始数据包也被丢弃。
- 如果rootq->enqueue()将复制的数据包发送到不同的qdisc,而原始数据包被丢弃。

在这两种情况下,即使没有数据包被入队到netem qdisc,也会返回NET_XMIT_SUCCESS。

修复方法是将复制数据包的入队推迟到原始数据包保证返回NET_XMIT_SUCCESS之后。(CVE-2024-45016)

2. 影响范围

cve名称 产品 组件 是否受影响
CVE-2024-46814 V6 kernel Fixed
CVE-2024-46701 V6 kernel Fixed
CVE-2024-46796 V6 kernel Fixed
CVE-2024-46788 V6 kernel Fixed
CVE-2024-46797 V6 kernel Fixed
CVE-2024-46784 V6 kernel Fixed
CVE-2024-46787 V6 kernel Fixed
CVE-2024-46781 V6 kernel Fixed
CVE-2024-46780 V6 kernel Fixed
CVE-2024-45009 V6 kernel Fixed
CVE-2024-46776 V6 kernel Fixed
CVE-2024-46758 V6 kernel Fixed
CVE-2024-46849 V6 kernel Fixed
CVE-2024-46811 V6 kernel Fixed
CVE-2024-44958 V6 kernel Fixed
CVE-2024-42067 V6 kernel Fixed
CVE-2024-46761 V6 kernel Fixed
CVE-2024-46695 V6 kernel Fixed
CVE-2024-46773 V6 kernel Fixed
CVE-2024-45029 V6 kernel Fixed
CVE-2024-45028 V6 kernel Fixed
CVE-2024-46750 V6 kernel Fixed
CVE-2024-46791 V6 kernel Fixed
CVE-2024-46756 V6 kernel Fixed
CVE-2024-46755 V6 kernel Fixed
CVE-2024-46717 V6 kernel Fixed
CVE-2024-46732 V6 kernel Fixed
CVE-2024-46857 V6 kernel Fixed
CVE-2024-46734 V6 kernel Fixed
CVE-2024-46772 V6 kernel Fixed
CVE-2024-46736 V6 kernel Fixed
CVE-2024-46737 V6 kernel Fixed
CVE-2024-46738 V6 kernel Fixed
CVE-2024-46739 V6 kernel Fixed
CVE-2024-46816 V6 kernel Fixed
CVE-2024-42312 V6 kernel Fixed
CVE-2024-46806 V6 kernel Fixed
CVE-2024-46818 V6 kernel Fixed
CVE-2024-46679 V6 kernel Fixed
CVE-2024-46798 V6 kernel Fixed
CVE-2024-46753 V6 kernel Fixed
CVE-2024-46777 V6 kernel Fixed
CVE-2024-46674 V6 kernel Fixed
CVE-2024-46844 V6 kernel Fixed
CVE-2024-46673 V6 kernel Fixed
CVE-2024-46771 V6 kernel Fixed
CVE-2024-46852 V6 kernel Fixed
CVE-2024-46845 V6 kernel Fixed
CVE-2024-46829 V6 kernel Fixed
CVE-2024-45016 V6 kernel Fixed
CVE-2024-46827 V6 kernel Fixed
CVE-2024-45011 V6 kernel Fixed
CVE-2024-46812 V6 kernel Fixed
CVE-2024-46843 V6 kernel Fixed
CVE-2024-44949 V6 kernel Fixed
CVE-2024-46686 V6 kernel Fixed
CVE-2024-46760 V6 kernel Fixed
CVE-2024-46767 V6 kernel Fixed
CVE-2024-46681 V6 kernel Fixed
CVE-2024-46804 V6 kernel Fixed
CVE-2024-46728 V6 kernel Fixed
CVE-2024-46846 V6 kernel Fixed
CVE-2024-46740 V6 kernel Fixed
CVE-2024-46725 V6 kernel Fixed
CVE-2024-46768 V6 kernel Fixed
CVE-2024-46842 V6 kernel Fixed
CVE-2024-46722 V6 kernel Fixed
CVE-2024-46721 V6 kernel Fixed
CVE-2024-46841 V6 kernel Fixed

3. 影响组件

    kernel

4. 修复版本

   

V6

软件名称 架构 版本号
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

5. 修复方法


方法一:下载安装包进行升级安装
1、通过下载链接下载需要升级的升级包保存,如 xxx.rpm
2、通过rpm命令升级,如 rpm -Uvh xxx.rpm

方法二:通过软件源进行升级安装
1、保持能够连接上互联网
2、通过yum命令升级指定的包,如 yum install 包名

6. 下载链接

   

V6:

x86_64:

     bpftool   

     kernel   

     kernel-devel   

     kernel-headers   

     kernel-source   

     kernel-tools   

     kernel-tools-devel   

     perf   

     python3-perf   

aarch64:

     bpftool   

     kernel   

     kernel-devel   

     kernel-headers   

     kernel-source   

     kernel-tools   

     kernel-tools-devel   

     perf   

     python3-perf   

上一篇:KylinSec-SA-2024-4994 下一篇:KylinSec-SA-2025-2700