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

摘要:

kernel security update

安全等级: High

公告ID: KylinSec-SA-2024-4792

发布日期: 2025年6月28日

关联CVE: CVE-2021-47231   CVE-2021-47232   CVE-2021-47252   CVE-2021-47288   CVE-2021-47346   CVE-2021-47347   CVE-2021-47434   CVE-2021-47466   CVE-2021-47469   CVE-2021-47493   CVE-2021-47500   CVE-2021-47521   CVE-2021-47565   CVE-2021-47597   CVE-2021-47609   CVE-2022-48737   CVE-2022-48755   CVE-2022-48756   CVE-2023-52670   CVE-2023-52739   CVE-2023-52834   CVE-2023-52853   CVE-2024-27436   CVE-2024-35830   CVE-2024-36894   CVE-2024-36941   CVE-2024-36950   CVE-2024-36971   CVE-2024-38538   CVE-2024-38541   CVE-2024-38552   CVE-2024-38588   CVE-2024-38596   CVE-2024-38607  

  • 详细介绍

1. 漏洞描述

   

Linux 内核(操作系统核心)

安全修复:

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

can: mcba_usb: 修复 mcba_usb 中的内存泄漏

Syzbot 报告了 Microchip CAN 总线分析工具(SocketCAN 驱动)的内存泄漏问题。问题出在未释放的 USB 一致性内存。

在 mcba_usb_start() 中分配了 20 个一致性缓冲区,但没有任何代码释放它们:

在回调函数中,urb 被重新提交,仅此而已

在断开函数中,urbs 被直接终止,但未设置 URB_FREE_BUFFER 标志(参见 mcba_usb_start),且该标志不能用于一致性缓冲区。

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

batman-adv: 避免与时间相关的 WARN_ON 检查

当 OGM(优化网关协议)被加入传输队列后、实际被工作线程发送前,其对应的软接口/batadv 接口可能发生变化。

但 WARN_ON 应仅用于内核错误,而非简单警告。此类情况应使用 pr_warn 打印警告信息。(CVE-2021-47252)

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

media: ngene: 修复 ngene_command_config_free_buf() 的越界错误

修复 ngene_command_config_free_buf() 中一个存在 11 年的错误,同时解决通过 -Warray-bounds 捕获的以下警告:
text

arch/alpha/include/asm/string.h:22:16: 警告:从对象 'com' 的偏移量 [12, 16] 超出子对象 'config'(类型为 'unsigned char',偏移量 10)的边界
arch/x86/include/asm/string_32.h:182:25: 类似警告

问题根源在于:原代码试图通过单次 memcpy() 调用,将 6 字节数据复制到错误结构体 FW_CONFIGURE_BUFFERS 的 1 字节成员 config 中。这会导致合法的编译器警告,因为 memcpy() 会溢出 &com.cmd.ConfigureBuffers.config 的长度。

实际应使用的结构体应为 FW_CONFIGURE_FREE_BUFFERS,因其除头部 hdr 外还包含 6 个成员。函数名 ngene_command_config_free_buf() 也表明意图是配置 ConfigureFreeBuffers(而非上文中 ngene_command_config_buf() 的 ConfigureBuffers)。

修复方案:将 FW_CONFIGURE_FREE_BUFFERS 的这 6 个成员封装到新结构体 config 中,并将 memcpy() 的目标地址改为 &com.cmd.ConfigureFreeBuffers.config。

此修复有助于全局启用 -Warray-bounds 的推进,并强化 memcpy() 的 FORTIFY_SOURCE 检查。(CVE-2021-47288)

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

coresight: tmc-etf: 修复 tmc_update_etf_buffer() 的全局越界问题

提交 6f755e85c332 ("coresight: 添加插入同步数据包的辅助函数") 移除了 barrier_pkt 数组末尾的 '\0',并更新了调用点(如 etb_update_buffer()),在读取前添加了对 barrier_pkt 大小的检查,但遗漏了 tmc_update_etf_buffer()。该函数仍会越界读取 barrier_pkt,导致 KASAN 报出越界错误。

修复方法:仿照 etb_update_buffer(),在访问 barrier_pkt 前增加大小检查。

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

wl1251: 修复wl1251_cmd_scan中可能的缓冲区溢出漏洞

函数wl1251_cmd_scan调用memcpy时未检查长度。通过验证长度是否在允许的最大范围内来加强安全性。(CVE-2021-47347)

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

xhci: 修复中止命令时命令环指针损坏的问题

命令环指针位于命令环控制寄存器(CRCR)的[6:63]位。所有控制位(如命令停止、中止)位于[0:3]位。当中止命令时,我们读取CRCR并设置中止位后写回CRCR。读取操作总是返回全零的命令环指针,因此实际上我们只写入了控制位。由于我们将64位写入操作拆分为两个32位写入,存在在上半双字(全零)写入前xHC命令环停止的可能性。如果发生这种情况,xHC会将其内部命令环指针的上半双字更新为全零。下次重启命令环时,会出现xHC内存访问失败。通过仅写入CRCR的下半双字(控制位所在位置)修复此问题。(CVE-2021-47434)

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

mm, slub: 修复kmem_cache_open()中的潜在内存泄漏问题

在错误路径中,slub缓存的random_seq可能会泄漏。通过使用__kmem_cache_release()释放所有相关资源来修复此问题。(CVE-2021-47466)

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

spi: 修复在SPI总线上添加SPI控制器时出现的死锁问题

当前我们有一个全局spi_add_lock,在添加新设备时获取该锁以检查是否尝试重用已被控制的片选信号。这意味着如果SPI设备本身是SPI控制器并触发更多SPI设备的实例化,会导致死锁,因为我们在为父控制器注册和实例化设备的过程中已经持有全局spi_add_lock。由于我们只关心单个SPI总线内的并发问题,将锁改为每个控制器独立,从而避免死锁。

这种情况在spi-mux中很容易触发。(CVE-2021-47469)

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

ocfs2: 修复搜索块与从buffer_head释放journal_head之间的竞争条件

当 ocfs2_test_bg_bit_allocatable() 调用 bh2jh(bg_bh) 时,由于 jbd2_journal_put_journal_head() 竞争并释放了 buffer head 中的 journal head,导致 bg_bh->b_private 为 NULL。需要通过获取 BH_JournalHead 位的锁来修复此竞争条件。(CVE-2021-47493)

在 Linux 内核中,以下漏洞已被修复:
iio: mma8452: 修复触发器引用计数问题

mma8452 驱动直接将触发器分配给 struct iio_dev。当 IIO 核心使用完该触发器时,会调用 iio_trigger_put() 将引用计数减 1。
如果驱动中没有相应的 iio_trigger_get(),引用计数可能过早归零,导致触发器仍在使用时被释放,从而引发 use-after-free 漏洞。
修复方式:在将触发器分配给 IIO 设备之前,先获取其引用。(CVE-2021-47500)

在 Linux 内核中,以下漏洞已被修复:
can: sja1000: 修复 ems_pcmcia_add_card() 中的 use-after-free 问题

如果最后一个通道不可用,则 dev 会被释放。但我们可以直接使用 pdev->irq 替代。
此外,还应检查是否至少设置了一个通道。(CVE-2021-47521)

在 Linux 内核中,以下漏洞已被修复:
scsi: mpt3sas: 修复驱动器电源循环测试期间的内核崩溃

在遍历 shost 的 sdev 列表时,可能出现某个驱动器正在被移除、其 sas_target 对象被释放,但 sdev 对象仍然存在的情况。
因此,如果驱动在访问 sas_target 对象的 sas_address 字段时未检查 sas_target 是否为 NULL,可能导致 内核崩溃。(CVE-2021-47565)

在 Linux 内核中,以下漏洞已被修复:
inet_diag: 修复 UDP 套接字的内核信息泄漏

KMSAN 报告了一个 内核信息泄漏漏洞 [1],非特权用户可能利用此漏洞读取未初始化的内核内存。

CPU: 1 PID: 6365 Comm: syz-executor801 Not tainted 5.16.0-rc3-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
(CVE-2021-47597)

在 Linux 内核中,以下漏洞已被修复:
firmware: arm_scpi: 修复 SCPI genpd 驱动中的字符串溢出问题

由于未对 scpi_pd->name 进行边界检查,当从设备树节点复制 SCPI 设备名称时,可能导致缓冲区溢出,因为该字符串的最大长度被设定为 30。
修复方式:使用 devm_kasprintf 动态分配字符串缓冲区。(CVE-2021-47609)

在 Linux 内核中,以下漏洞已被修复:
ASoC: ops: 在 snd_soc_put_volsw_sx() 中拒绝超出范围的值

当前未验证设置的值是否在向用户空间声明的有效范围内,现增加检查并拒绝任何超出范围的值。(CVE-2022-48737)

在 Linux 内核中,以下漏洞已被修复:
powerpc64/bpf: 将 ldbrx 指令限制为符合 ISA v2.06 的处理器

某些旧版 PowerPC 处理器不支持 ldbrx 指令,可能导致未定义行为。此修复确保该指令仅在兼容 ISA v2.06 或更高版本的处理器上使用。

问题在于 PageHead 的检查存在竞态条件,因为此时我们已经释放了对页面的引用。因此,即使我们最初处理的是复合页面(compound page),该页面可能已经被释放,导致 PageHead 返回 false,最终错误地释放所有尾页(tail pages),造成双重释放(double free)。(CVE-2023-52739)

在 Linux 内核中,以下漏洞已被修复:
atl1c: 解决 DMA RX 溢出问题

此修复基于 alx 驱动程序的提交 881d0327db37 ("net: alx: Work around the DMA RX overflow issue")。
alx 和 atl1c 驱动程序曾存在 RX 溢出错误,因此最初创建了自定义分配器来避免某些特定地址。后来在 alx 驱动中采用了更简单的解决方案,但由于缺乏测试者,未在 atl1c 驱动中实施。

修复方式:不再使用自定义分配器,而是检查分配的 skb 地址,并通过 skb_reserve() 避开有问题的 0x...fc0 地址。
测试环境:Acer 4540 上的 AR8131 网卡。(CVE-2023-52834)

在 Linux 内核中,以下漏洞已被修复:
hid: cp2112: 修复重复初始化工作队列的问题

此前,cp2112 驱动程序在 cp2112_gpio_irq_startup 中调用 INIT_DELAYED_WORK,导致在后续 IRQ 启动时重复初始化工作队列。这会触发 workqueue.c 中的 set_work_data 警告,并可能引发 process_one_work 中的 NULL 解引用。

修复方式:将工作队列的初始化移至 _probe 函数中。(CVE-2023-52853)

在 Linux 内核中,以下漏洞已被修复:
ALSA: usb-audio: 当所有通道均找到时停止解析通道位

如果 USB 音频设备设置的位数超过实际通道数,可能导致写入超出 map 数组的边界。(CVE-2024-27436)

在 Linux 内核中,以下漏洞已被修复:
media: tc358743: 仅在成功完成设置后注册 v4l2 异步设备

确保设备正确初始化后再注册 v4l2 异步设备,从而允许用户空间访问。(CVE-2024-35830)

2. 影响范围

cve名称 产品 组件 是否受影响
CVE-2021-47231 KY3.4-5A kernel Fixed
CVE-2021-47232 KY3.4-5A kernel Fixed
CVE-2021-47252 KY3.4-5A kernel Fixed
CVE-2021-47288 KY3.4-5A kernel Fixed
CVE-2021-47346 KY3.4-5A kernel Fixed
CVE-2021-47347 KY3.4-5A kernel Fixed
CVE-2021-47434 KY3.4-5A kernel Fixed
CVE-2021-47466 KY3.4-5A kernel Fixed
CVE-2021-47469 KY3.4-5A kernel Fixed
CVE-2021-47493 KY3.4-5A kernel Fixed
CVE-2021-47500 KY3.4-5A kernel Fixed
CVE-2021-47521 KY3.4-5A kernel Fixed
CVE-2021-47565 KY3.4-5A kernel Fixed
CVE-2021-47597 KY3.4-5A kernel Fixed
CVE-2021-47609 KY3.4-5A kernel Fixed
CVE-2022-48737 KY3.4-5A kernel Fixed
CVE-2022-48755 KY3.4-5A kernel Fixed
CVE-2022-48756 KY3.4-5A kernel Fixed
CVE-2023-52670 KY3.4-5A kernel Fixed
CVE-2023-52739 KY3.4-5A kernel Fixed
CVE-2023-52834 KY3.4-5A kernel Fixed
CVE-2023-52853 KY3.4-5A kernel Fixed
CVE-2024-27436 KY3.4-5A kernel Fixed
CVE-2024-35830 KY3.4-5A kernel Fixed
CVE-2024-36894 KY3.4-5A kernel Fixed
CVE-2024-36941 KY3.4-5A kernel Fixed
CVE-2024-36950 KY3.4-5A kernel Fixed
CVE-2024-36971 KY3.4-5A kernel Fixed
CVE-2024-38538 KY3.4-5A kernel Fixed
CVE-2024-38541 KY3.4-5A kernel Fixed
CVE-2024-38552 KY3.4-5A kernel Fixed
CVE-2024-38588 KY3.4-5A kernel Fixed
CVE-2024-38596 KY3.4-5A kernel Fixed
CVE-2024-38607 KY3.4-5A kernel Fixed

3. 影响组件

    kernel

4. 修复版本

   

KY3.4-5A

软件名称 架构 版本号
perf x86_64 4.19.90-2408.1.0.0288.kb29.ky3_4
bpftool x86_64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel-source x86_64 4.19.90-2408.1.0.0288.kb29.ky3_4
python3-perf x86_64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel-tools x86_64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel-tools-devel x86_64 4.19.90-2408.1.0.0288.kb29.ky3_4
python2-perf x86_64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel x86_64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel-devel x86_64 4.19.90-2408.1.0.0288.kb29.ky3_4
perf aarch64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel-tools aarch64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel-source aarch64 4.19.90-2408.1.0.0288.kb29.ky3_4
python2-perf aarch64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel-tools-devel aarch64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel-devel aarch64 4.19.90-2408.1.0.0288.kb29.ky3_4
python3-perf aarch64 4.19.90-2408.1.0.0288.kb29.ky3_4
bpftool aarch64 4.19.90-2408.1.0.0288.kb29.ky3_4
kernel aarch64 4.19.90-2408.1.0.0288.kb29.ky3_4

5. 修复方法


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

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

6. 下载链接

   

KY3.4-5A:

x86_64:

     perf   

     bpftool   

     kernel-source   

     python3-perf   

     kernel-tools   

     kernel-tools-devel   

     python2-perf   

     kernel   

     kernel-devel   

aarch64:

     perf   

     kernel-tools   

     kernel-source   

     python2-perf   

     kernel-tools-devel   

     kernel-devel   

     python3-perf   

     bpftool   

     kernel   

上一篇:KylinSec-SA-2025-2573 下一篇:KylinSec-SA-2025-2568