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

摘要:

kernel security update

安全等级: High

公告ID: KylinSec-SA-2024-1547

发布日期: 2024年10月31日

关联CVE: CVE-2023-52436   CVE-2023-52438   CVE-2023-52439   CVE-2024-22099   CVE-2024-23850   CVE-2024-23851   CVE-2024-26583  

  • 详细介绍

1. 漏洞描述

   

The Linux Kernel, the operating system core itself.

Security Fix(es):

In the Linux kernel, the following vulnerability has been resolved:

f2fs: explicitly null-terminate the xattr list

When setting an xattr, explicitly null-terminate the xattr list. This
eliminates the fragile assumption that the unused xattr space is always
zeroed.(CVE-2023-52436)

In the Linux kernel, the following vulnerability has been resolved:

binder: fix use-after-free in shinker's callback

The mmap read lock is used during the shrinker's callback, which means
that using alloc->vma pointer isn't safe as it can race with munmap().
As of commit dd2283f2605e ("mm: mmap: zap pages with read mmap_sem in
munmap") the mmap lock is downgraded after the vma has been isolated.

I was able to reproduce this issue by manually adding some delays and
triggering page reclaiming through the shrinker's debug sysfs. The
following KASAN report confirms the UAF:

==================================================================
BUG: KASAN: slab-use-after-free in zap_page_range_single+0x470/0x4b8
Read of size 8 at addr ffff356ed50e50f0 by task bash/478

CPU: 1 PID: 478 Comm: bash Not tainted 6.6.0-rc5-00055-g1c8b86a3799f-dirty #70
Hardware name: linux,dummy-virt (DT)
Call trace:
zap_page_range_single+0x470/0x4b8
binder_alloc_free_page+0x608/0xadc
__list_lru_walk_one+0x130/0x3b0
list_lru_walk_node+0xc4/0x22c
binder_shrink_scan+0x108/0x1dc
shrinker_debugfs_scan_write+0x2b4/0x500
full_proxy_write+0xd4/0x140
vfs_write+0x1ac/0x758
ksys_write+0xf0/0x1dc
__arm64_sys_write+0x6c/0x9c

Allocated by task 492:
kmem_cache_alloc+0x130/0x368
vm_area_alloc+0x2c/0x190
mmap_region+0x258/0x18bc
do_mmap+0x694/0xa60
vm_mmap_pgoff+0x170/0x29c
ksys_mmap_pgoff+0x290/0x3a0
__arm64_sys_mmap+0xcc/0x144

Freed by task 491:
kmem_cache_free+0x17c/0x3c8
vm_area_free_rcu_cb+0x74/0x98
rcu_core+0xa38/0x26d4
rcu_core_si+0x10/0x1c
__do_softirq+0x2fc/0xd24

Last potentially related work creation:
__call_rcu_common.constprop.0+0x6c/0xba0
call_rcu+0x10/0x1c
vm_area_free+0x18/0x24
remove_vma+0xe4/0x118
do_vmi_align_munmap.isra.0+0x718/0xb5c
do_vmi_munmap+0xdc/0x1fc
__vm_munmap+0x10c/0x278
__arm64_sys_munmap+0x58/0x7c

Fix this issue by performing instead a vma_lookup() which will fail to
find the vma that was isolated before the mmap lock downgrade. Note that
this option has better performance than upgrading to a mmap write lock
which would increase contention. Plus, mmap_write_trylock() has been
recently removed anyway.(CVE-2023-52438)

In the Linux kernel, the following vulnerability has been resolved:

uio: Fix use-after-free in uio_open

core-1 core-2
-------------------------------------------------------
uio_unregister_device uio_open
idev = idr_find()
device_unregister(&idev->dev)
put_device(&idev->dev)
uio_device_release
get_device(&idev->dev)
kfree(idev)
uio_free_minor(minor)
uio_release
put_device(&idev->dev)
kfree(idev)
-------------------------------------------------------

In the core-1 uio_unregister_device(), the device_unregister will kfree
idev when the idev->dev kobject ref is 1. But after core-1
device_unregister, put_device and before doing kfree, the core-2 may
get_device. Then:
1. After core-1 kfree idev, the core-2 will do use-after-free for idev.
2. When core-2 do uio_release and put_device, the idev will be double
freed.

To address this issue, we can get idev atomic & inc idev reference with
minor_lock.(CVE-2023-52439)

NULL Pointer Dereference vulnerability in Linux Linux kernel kernel on Linux, x86, ARM (net, bluetooth modules) allows Overflow Buffers. This vulnerability is associated with program files /net/bluetooth/rfcomm/core.C.

This issue affects Linux kernel: v2.6.12-rc2.

(CVE-2024-22099)

In btrfs_get_root_ref in fs/btrfs/disk-io.c in the Linux kernel through 6.7.1, there can be an assertion failure and crash because a subvolume can be read out too soon after its root item is inserted upon subvolume creation.(CVE-2024-23850)

copy_params in drivers/md/dm-ioctl.c in the Linux kernel through 6.7.1 can attempt to allocate more than INT_MAX bytes, and crash, because of a missing param_kernel->data_size check. This is related to ctl_ioctl.(CVE-2024-23851)

In the Linux kernel, the following vulnerability has been resolved:

tls: fix race between async notify and socket close

The submitting thread (one which called recvmsg/sendmsg)
may exit as soon as the async crypto handler calls complete()
so any code past that point risks touching already freed data.

Try to avoid the locking and extra flags altogether.
Have the main thread hold an extra reference, this way
we can depend solely on the atomic ref counter for
synchronization.

Don't futz with reiniting the completion, either, we are now
tightly controlling when completion fires.(CVE-2024-26583)

2. 影响范围

cve名称 产品 组件 是否受影响
CVE-2023-52436 KY3.5.2 kernel Fixed
CVE-2023-52438 KY3.5.2 kernel Fixed
CVE-2023-52439 KY3.5.2 kernel Fixed
CVE-2024-22099 KY3.5.2 kernel Fixed
CVE-2024-23850 KY3.5.2 kernel Fixed
CVE-2024-23851 KY3.5.2 kernel Fixed
CVE-2024-26583 KY3.5.2 kernel Fixed

3. 影响组件

    kernel

4. 修复版本

   

KY3.5.2

软件名称 架构 版本号
perf x86_64 5.10.0-153.12.0.92.kb8.ky3_5
kernel-tools x86_64 5.10.0-153.12.0.92.kb8.ky3_5
kernel x86_64 5.10.0-153.12.0.92.kb8.ky3_5
kernel-devel x86_64 5.10.0-153.12.0.92.kb8.ky3_5
kernel-source x86_64 5.10.0-153.12.0.92.kb8.ky3_5
kernel-headers x86_64 5.10.0-153.12.0.92.kb8.ky3_5
python3-perf x86_64 5.10.0-153.12.0.92.kb8.ky3_5
kernel-tools-devel x86_64 5.10.0-153.12.0.92.kb8.ky3_5
perf aarch64 5.10.0-153.12.0.92.kb16.ky3_5
kernel-headers aarch64 5.10.0-153.12.0.92.kb16.ky3_5
kernel-tools aarch64 5.10.0-153.12.0.92.kb16.ky3_5
kernel-devel aarch64 5.10.0-153.12.0.92.kb16.ky3_5
kernel-tools-devel aarch64 5.10.0-153.12.0.92.kb16.ky3_5
kernel-source aarch64 5.10.0-153.12.0.92.kb16.ky3_5
python3-perf aarch64 5.10.0-153.12.0.92.kb16.ky3_5
kernel aarch64 5.10.0-153.12.0.92.kb16.ky3_5

5. 修复方法


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

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

6. 下载链接

   

KY3.5.2:

x86_64:

     perf   

     kernel-tools   

     kernel   

     kernel-devel   

     kernel-source   

     kernel-headers   

     python3-perf   

     kernel-tools-devel   

aarch64:

     perf   

     kernel-headers   

     kernel-tools   

     kernel-devel   

     kernel-tools-devel   

     kernel-source   

     python3-perf   

     kernel   

上一篇:KylinSec-SA-2024-1546 下一篇:KylinSec-SA-2024-1550