Ubuntu 14.04 LTS / 16.04 LTS / 18.04 LTS:Linux 内核漏洞 (USN-6740-1)

high Nessus 插件 ID 193593

简介

远程 Ubuntu 主机缺少一个或多个安全更新。

描述

远程 Ubuntu 14.04 LTS / 16.04 LTS / 18.04 LTS 主机上安装的程序包受到 USN-6740-1 公告中提及的多个漏洞的影响。

- 在 Linux 内核中,分配的 con 和设置的 con->sock 之间存在数据争用缺陷。在 Linux 内核中,若访问 tipc 协议中 net/tipc/topsrv.c 的 con->sock->sk,会导致空指针取消引用。(CVE-2023-1382)

- 在 Linux 内核的 virtio 网络子组件中,发现 drivers/vhost/net.c 的 vhost_net_set_backend 中存在双重 fget 导致的释放后使用缺陷。本地攻击者可能会利用此缺陷造成系统崩溃,甚至可能导致内核信息泄露问题。(CVE-2023-1838)

- Linux 内核允许用户空间进程通过调用 prctl(PR_SET_SPECULATION_CTRL 禁用推测功能)以及使用 seccomp 来启用缓解措施。我们已经注意到,在至少一个主要云供应商的 VM 上,即使在使用 prctl 启用 Spectre-BTI 缓解措施之后,在某些情况下,内核仍然会使受害者进程受到攻击。在启动命令行上强制执行 IBRS 缓解措施时,可在裸机计算机上观察到相同的行为。发生这种情况的原因是,当启用普通 IBRS(而非增强的 IBRS)时,内核的某些逻辑会确定不需要 STIBP。IBRS 位会隐式防止跨线程分支目标注入。
但是,对于旧版 IBRS,由于性能原因,IBRS 位在返回用户空间时会被清除,这会禁用隐式 STIBP 并使用户空间线程容易受到 STIBP 防范的跨线程分支目标注入问题影响。(CVE-2023-1998)

- 在 Bluetooth Core Specification 4.2 至 5.4(含)中,具有安全简单配对和安全连接配对功能的蓝牙 BR/EDR 设备允许某些强制使用短密钥长度的中间人攻击,并且可能导致加密密钥泄露和实时注入,即 BLUFFS。(CVE-2023-24023)

- 在 6.4.5 之前的 Linux 内核中,drivers/gpu/drm/drm_atomic.c 在无阻塞原子提交和驱动程序卸载之间有争用条件期间存在释放后使用。(CVE-2023-51043)

- 在 6.6.8 及之前版本的 Linux 内核中,net/bluetooth/af_bluetooth.c 的 bt_sock_recvmsg 存在释放后使用漏洞,因 bt_sock_ioctl 争用条件所致。(CVE-2023-51779)

- 在 6.7.4 及之前版本的 Linux 内核中,drivers/md/dm-table.c 中的 dm_table_create 可能尝试(在 alloc_targets 中)分配超过 INT_MAX 字节的内存,并且可能崩溃,这是缺少对 struct dm_ioctl.target_count 的检查所致。(CVE-2023-52429)

- 在 Linux 内核中,以下漏洞已修复:media:pvrusb2:修复上下文断开连接时发生的释放后使用 在模块加载时,系统为 pvr2_context_thread_func 函数创建了一个 kthread,该函数可以调用 pvr2_context_destroy,因而也能调用上下文对象上的 kfree()。不过,这可能发生在 usb hub_event 处理程序通知驱动程序之前。在 syzbot 报告无效读取之前,此补丁已在上下文断开连接调用堆栈内添加健全性检查。(CVE-2023-52445)

- 在 Linux 内核中,以下漏洞已修复:powerpc/pseries/memhp:修复超出 drmem 数组结尾的访问 如果 LMB 查找无法将条目与给定的 DRC 索引匹配,dlpar_memory_remove_by_index() 可能会越界访问 drmem lmb 数组。如果搜索失败,光标仍会指向 &drmem_info->lmbs[drmem_info->n_lmbs],即数组中最后一个有效条目之后的元素。函数末尾的调试消息随后可取消引用此指针:
pr_debug(无法热删除 %llx\n 的内存,lmb->base_addr);检查时发现了问题,并通过 KASAN 进行了确认:pseries-hotplug-mem:尝试热删除 LMB,drc 索引 1234 ======================== ========================================== 缺陷:KASAN:dlpar_memory+0x298/0x1658 中存在 slab-out-of-bounds 读取大小为 8 位置:addr c000000364e97fd0 按任务 bash/949 dump_stack_lvl+0xa4/0xfc (unreliable) print_report+0x214/0x63c kasan_report+0x140/0x2e0
__asan_load8+0xa8/0xe0 dlpar_memory+0x298/0x1658 handle_dlpar_errorlog+0x130/0x1d0 dlpar_store+0x18c/0x3e0 kobj_attr_store+0x68/0xa0 sysfs_kf_write+0xc4/0x110 kernfs_fop_write_iter+0x26c/0x390 vfs_write+0x2d4/0x4e0 ksys_write+0xac/0x1a0 system_call_exception+0x268/0x530 system_call_vectored_common+0x15c/0x2ec 由任务 1 分配:kasan_save_stack+0x48/0x80 kasan_set_track+0x34/0x50 kasan_save_alloc_info+0x34/0x50 __kasan_kmalloc+0xd0/0x120 __kmalloc+0x8c/0x320 kmalloc_array.constprop.0+0x48/0x5c drmem_init+0x2a0/0x41c do_one_initcall+0xe0/0x5c0 kernel_init_freeable+0x4ec/0x5a0 kernel_init+0x30/0x1e0 ret_from_kernel_user_thread+0x14/0x1c 有缺陷的地址属于 c000000364e80000 中的对象(属于大小为 131072 的缓存 kmalloc-128k)。有缺陷的地址位于被分配 98256 字节的区域的右侧 0 字节处 [c000000364e80000, c000000364e97fd0) ================================================================== pseries-hotplug-mem:
无法删除 0 处的内存 系统无法记录通过单独的消息执行的查找,并且仅当光标指向有效条目时才能取消引用。(CVE-2023-52451)

- 在 Linux 内核中,以下漏洞已修复:EDAC/thunderx:修复可能存在的越界字符串访问 如果在全局范围启用 -Wstringop-overflow,系统会针对使用 strncat() 时存在的常见缺陷显示警告消息:drivers/edac /thunderx_edac.c:在函数“thunderx_ocx_com_threaded_isr”中:
drivers/edac/thunderx_edac.c:1136:17:错误:“strncat”指定的边界 1024 等于目标大小 [-Werror=stringop-overflow=] 1136 | strncat(msg, other, OCX_MESSAGE_SIZE); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ... 1145 | strncat(msg, other, OCX_MESSAGE_SIZE); ... 1150 | strncat(msg, other, OCX_MESSAGE_SIZE); ... 显然,此驱动程序的作者预期 strncat() 会以 strlcat() 的方式运行,后者使用目标缓冲区的大小而不是源缓冲区的长度作为第三个参数。结果就是系统不会检查已分配缓冲区的大小,而是将其更改为 strlcat()。[ bp:调整编译器输出,修复提交消息。] (CVE-2023-52464)

- 在 Linux 内核中,以下漏洞已修复:jfs:修复 jfs_evict_inode 中的 uaf 执行 diMount(ipimap) 失败时,已释放的对象 ipimap 或可在 diFreeSpecial() 中进行访问。rcu_core() 调用 jfs_free_node() 时发生异步 ipimap 释放。因此,diMount(ipimap) 失败时,sbi->ipimap 不应被初始化为 ipimap。(CVE-2023-52600)

- 在 Linux 内核中,以下漏洞已修复:UBSAN:dtSplitRoot 中的 array-index-out-of-bounds Syzkaller 报告了以下问题:oop0:检测到容量变化范围在 0 到 32768 之间 UBSAN:
fs/jfs/jfs_dtree.c:1971:9 索引 -2 中的 array-index-out-of-bounds 超出类型“struct dtslot [128]”的范围 CPU:0 PID:3613 命令:syz-executor270 未感染 6.0.0-syzkaller-09423-g493ffd6605b2 #0 硬件名称:Google Google Compute Engine/Google Compute Engine,BIOS Google 09/22/2022 调用跟踪:<TASK>
__dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1b1/0x28e lib/dump_stack.c:106 ubsan_epilogue lib/ubsan.c:151 [inline] __ubsan_handle_out_of_bounds+0xdb/0x130 lib/ubsan.c:283 dtSplitRoot+0x8d8/0x1900 fs/jfs/jfs_dtree.c:1971 dtSplitUp fs/jfs/jfs_dtree.c:985 [inline] dtInsert+0x1189/0x6b80 fs/jfs/jfs_dtree.c:863 jfs_mkdir+0x757/0xb00 fs/jfs/namei.c:270 vfs_mkdir+0x3b3/0x590 fs/namei.c:4013 do_mkdirat+0x279/0x550 fs/namei.c:4038 __do_sys_mkdirat fs/namei.c:4053 [inline] __se_sys_mkdirat fs/namei.c:4051 [inline] __x64_sys_mkdirat+0x85/0x90 fs/namei.c:4051 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd RIP:0033:0x7fcdc0113fd9 代码:ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48 RSP:002b:00007ffeb8bc67d8 EFLAGS:00000246 ORIG_RAX:0000000000000102 RAX:ffffffffffffffda RBX:0000000000000000 RCX:00007fcdc0113fd9 RDX:
0000000000000000 RSI:0000000020000340 RDI:0000000000000003 RBP:00007fcdc00d37a0 R08:0000000000000000 R09:00007fcdc00d37a0 R10:00005555559a72c0 R11:0000000000000246 R12:00000000f8008000 R13:
0000000000000000 R14:00083878000000f8 R15:0000000000000000 </TASK> 此问题因 fsi 的值小于 -1 所致。虽然系统可以检查 fsi 值变为 -1 是否会发生循环中断,但 syzbot 能够产生小于 -1 的值(导致错误)。此补丁只针对小于 0 的值添加更改。此补丁已经过 syzbot 测试。(CVE-2023-52603)

- 在 Linux 内核中,在 lib/idr.c 的 ida_free 中发现一个空指针取消引用问题。此问题可能会允许使用此库的攻击者因缺少函数返回检查而造成拒绝服务问题。(CVE-2023-6915)

- 在 Linux 内核的 SCTP 子系统中,在 net/sctp/socket.c 的 sctp_auto_asconf_init 中发现由死锁所导致的拒绝服务漏洞。此缺陷允许具有本地用户权限的客户机触发死锁,并可能导致系统崩溃。(CVE-2024-0639)

- 在 6.7.1 及以下版本的 Linux 内核中,drivers/md/dm-ioctl.c 中的 copy_params 可能会尝试分配超过 INT_MAX 的字节,然后崩溃,原因是缺少 param_kernel->data_size 检查。此问题与 ctl_ioctl 有关。(CVE-2024-23851)

请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。

解决方案

更新受影响的 kernel 程序包。

另见

https://ubuntu.com/security/notices/USN-6740-1

插件详情

严重性: High

ID: 193593

文件名: ubuntu_USN-6740-1.nasl

版本: 1.0

类型: local

代理: unix

发布时间: 2024/4/19

最近更新时间: 2024/4/19

支持的传感器: Agentless Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Frictionless Assessment Azure, Nessus Agent, Nessus

风险信息

VPR

风险因素: Medium

分数: 6.7

CVSS v2

风险因素: Medium

基本分数: 6.8

时间分数: 5.3

矢量: CVSS2#AV:L/AC:L/Au:S/C:C/I:C/A:C

CVSS 分数来源: CVE-2023-52464

CVSS v3

风险因素: High

基本分数: 7.8

时间分数: 7

矢量: CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

时间矢量: CVSS:3.0/E:P/RL:O/RC:C

漏洞信息

CPE: cpe:/o:canonical:ubuntu_linux:14.04:-:lts, cpe:/o:canonical:ubuntu_linux:16.04:-:lts, cpe:/o:canonical:ubuntu_linux:18.04:-:lts, p-cpe:/a:canonical:ubuntu_linux:linux-image-4.15.0-1130-oracle, p-cpe:/a:canonical:ubuntu_linux:linux-image-4.15.0-1151-kvm, p-cpe:/a:canonical:ubuntu_linux:linux-image-4.15.0-1161-gcp, p-cpe:/a:canonical:ubuntu_linux:linux-image-4.15.0-1167-aws, p-cpe:/a:canonical:ubuntu_linux:linux-image-4.15.0-1176-azure, p-cpe:/a:canonical:ubuntu_linux:linux-image-4.15.0-224-generic, p-cpe:/a:canonical:ubuntu_linux:linux-image-4.15.0-224-lowlatency

必需的 KB 项: Host/cpu, Host/Ubuntu, Host/Ubuntu/release, Host/Debian/dpkg-l

可利用: true

易利用性: Exploits are available

补丁发布日期: 2024/4/19

漏洞发布日期: 2023/3/17

参考资料信息

CVE: CVE-2023-1382, CVE-2023-1838, CVE-2023-1998, CVE-2023-24023, CVE-2023-51043, CVE-2023-51779, CVE-2023-52429, CVE-2023-52445, CVE-2023-52451, CVE-2023-52464, CVE-2023-52600, CVE-2023-52603, CVE-2023-6915, CVE-2024-0639, CVE-2024-23851

USN: 6740-1