Ubuntu 22.04 LTS/23.10:Linux 核心弱點 (USN-6724-2)

high Nessus Plugin ID 193377

概要

遠端 Ubuntu 主機缺少一個或多個安全性更新。

說明

遠端 Ubuntu 22.04 LTS/23.10 主機上安裝的一個套件會受到 USN-6724-2 公告中所提及的多個弱點影響。

- Xen 虛擬網路通訊協定中的傳輸要求可由多個部分組成。雖然這些部分不是真的實用,但除了初始部分,其中任何一個都可能是零長度,即根本不攜帶任何資料。除了要傳輸資料的特定初始部分,這些部分會直接轉譯為 Linux 所稱的 SKB 片段。這類轉換的要求部分在針對特定 SKB 而言長度為零時,可導致核心網路程式碼中出現 NULL 解除參照。(CVE-2023-46838)

- 在 6.6.5 及之前的 Linux 核心中,由於 info->pad0 未被初始化,drivers/accel/habanalabs/common/habanalabs_ioctl.c 中的 sec_attest_info 可導致資訊洩漏至使用者空間。(CVE-2023-50431)

- 在 6.7.4 及之前的 Linux 核心中,drivers/md/dm-table.c 中的 dm_table_create 會嘗試 (在 alloc_targets 中) 分配大於 INT_MAX 的位元組,但此位元組會因缺少對 dm_ioctl.target_count 結構的檢查而損毀。(CVE-2023-52429)

- 在 Linux 核心中,下列弱點已解決:smb:用戶端:修復 smb2_parse_contexts() 中的潛在 OOB。在 smb2_parse_contexts() 中解除參照建立內容前驗證位移和長度。這可修復從伺服器存取無效建立內容時的下列 oops: 錯誤:
無法處理位址的頁面錯誤:ffff8881178d8cc3 #PF:核心模式中的監督讀取存取 #PF:
error_code(0x0000) - 不存在頁面 PGD 4a01067 P4D 4a01067 PUD 0 Oops:0000 [#1] PREEMPT SMP NOPTI CPU:
3 PID: 1736 Comm: mount.cifs 未受污染的 6.7.0-rc4 #1 硬體名稱:QEMU Standard PC (Q35 + ICH9, 2009),BIOS rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04 /01/2014 RIP:0010:smb2_parse_contexts+0xa0/0x3a0 [cifs] 程式碼:f8 10 75 13 48 b8 93 ad 25 50 9c b4 11 e7 49 39 06 0f 84 d2 00 00 00 8b 45 00 85 c0 74 61 41 29 c5 48 01 c5 41 83 fd 0f 76 55 <0f> b7 7d 04 0f b7 45 06 4c 8d 74 3d 00 66 83 f8 04 75 bc ba 04 00 RSP:
0018:ffffc900007939e0 EFLAGS: 00010216 RAX: ffffc90000793c78 RBX: ffff8880180cc000 RCX: ffffc90000793c90 RDX: ffffc90000793cc0 RSI: ffff8880178d8cc0 RDI: ffff8880180cc000 RBP: ffff8881178d8cbf R08:
ffffc90000793c22 R09: 0000000000000000 R10: ffff8880180cc000 R11: 0000000000000024 R12: 0000000000000000 R13: 0000000000000020 R14: 0000000000000000 R15: ffffc90000793c22 FS: 00007f873753cbc0(0000) GS:ffff88806bc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2:
ffff8881178d8cc3 CR3: 00000000181ca000 CR4: 0000000000750ef0 PKRU: 55555554 呼叫跟蹤:<TASK>?
__die+0x23/0x70 ? page_fault_oops+0x181/0x480 ? search_module_extables+0x19/0x60 ? srso_alias_return_thunk+0x5/0xfbef5 ? exc_page_fault+0x1b6/0x1c0 ? asm_exc_page_fault+0x26/0x30 ? smb2_parse_contexts+0xa0/0x3a0 [cifs] SMB2_open+0x38d/0x5f0 [cifs] ? smb2_is_path_accessible+0x138/0x260 [cifs] smb2_is_path_accessible+0x138/0x260 [cifs] cifs_is_path_remote+0x8d/0x230 [cifs] cifs_mount+0x7e/0x350 [cifs] cifs_smb3_do_mount+0x128/0x780 [cifs] smb3_get_tree+0xd9/0x290 [cifs] vfs_get_tree+0x2c/0x100 ? capable+0x37/0x70 path_mount+0x2d7/0xb80 ? srso_alias_return_thunk+0x5/0xfbef5 ?
_raw_spin_unlock_irqrestore+0x44/0x60 __x64_sys_mount+0x11a/0x150 do_syscall_64+0x47/0xf0 entry_SYSCALL_64_after_hwframe+0x6f/0x77 RIP: 0033:0x7f8737657b1e (CVE-2023-52434)

- 在 Linux 核心中,下列弱點已解決:net:防止 skb_segment() 中的 mss 溢位。syzbot 又再一次能夠損毀 skb_segment() 中的核心。[1] GSO_BY_FRAGS 是一個禁用值,但不幸的是以下 skb_segment() 中的計算可輕易取得該值:
mss = mss *partial_segs;65535 = 3 * 5 * 17 * 257,許多 mss 初始值可導致錯誤的最終結果。請務必限制區段,使新的 mss 值小於 GSO_BY_FRAGS。 [1] 一般保護錯誤,可能是非正式位址 0xdffffc000000000e:0000 [#1] PREEMPT SMP KASAN KASAN:null-ptr-deref 範圍內 [0x0000000000000070-0x00000000000000077] CPU:1 PID:5079 Comm:syz-executor993 Not tainted 6.7.0-rc4-syzkaller-00141-g1ae4cd3cbdd0 #0 硬體名稱:Google Google Compute Engine/Google Compute Engine、BIOS Google 2023 年 11 月 10 日 RIP:0010:skb_segment+0x181d/0x3f30 net/core/skbuff.c:4551 程式碼:83 e3 02 e9 fb ed ff ff e8 90 68 1c f9 48 8b 84 24 f8 00 00 00 48 8d 78 70 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 04 02 84 c0 74 08 3c 03 0f 8e 8a 21 00 00 48 8b 84 24 f8 00 RSP:0018:ffffc900043473d0 EFLAGS: 00010202 RAX: dffffc0000000000 RBX: 0000000000010046 RCX:
ffffffff886b1597 RDX: 000000000000000e RSI: ffffffff886b2520 RDI: 0000000000000070 RBP: ffffc90004347578 R08: 0000000000000005 R09: 000000000000ffff R10: 000000000000ffff R11: 0000000000000002 R12:
ffff888063202ac0 R13: 0000000000010000 R14: 000000000000ffff R15: 0000000000000046 FS:
0000555556e7e380(0000) GS:ffff8880b9900000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033 CR2: 0000000020010000 CR3: 0000000027ee2000 CR4: 00000000003506f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400 呼叫跟蹤:<TASK> udp6_ufo_fragment+0xa0e/0xd00 net/ipv6/udp_offload.c:109 ipv6_gso_segment+0x534/0x17e0 net/ipv6/ip6_offload.c:120 skb_mac_gso_segment+0x290/0x610 net/core/gso.c:53
__skb_gso_segment+0x339/0x710 net/core/gso.c:124 skb_gso_segment include/net/gso.h:83 [內嵌] validate_xmit_skb+0x36c/0xeb0 net/core/dev.c:3626 __dev_queue_xmit+0x6f3/0x3d60 net/core/ dev.c:4338 dev_queue_xmit include/linux/netdevice.h:3134 [內嵌] packet_xmit+0x257/0x380 net/packet/af_packet.c:276 packet_snd net/packet/af_packet.c:3087 [內嵌] packet_sendmsg+0x24c6/0x5220 net/packet/af_packet.c:3119 sock_sendmsg_nosec net/socket.c:730 [內嵌] __sock_sendmsg+0xd5/0x180 net/socket.c:745
__sys_sendto+0x255/0x340 net/socket.c:2190 __do_sys_sendto net/socket.c:2202 [inline] __se_sys_sendto net/socket.c:2198 [inline] __x64_sys_sendto+0xe0/0x1b0 net/socket.c:2198 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0x40/0x110 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x63/0x6b RIP: 0033:0x7f8692032aa9 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 d1 19 00 00 90 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 b8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fff8d685418 EFLAGS: 00000246 ORIG_RAX: 000000000000002c RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f8692032aa9 RDX:
0000000000010048 RSI: 00000000200000c0 RDI: 0000000000000003 RBP: 00000000000f4240 R08: 0000000020000540 R09: 0000000000000014 R10: 0000000000000000 R11: 0000000000000246 R12: 00007fff8d685480 R13:
0000000000000001 R14: 00007fff8d685480 R15: 0000000000000003 </TASK> 連結的模組:---[ end trace 0000000000000000 ]--- RIP: 0010:skb_segment+0x181d/0x3f30 net/core/skbuff.c:4551 Code: 83 e3 02 e9 fb ed ff ff e8 90 68 1c f9 48 8b 84 24 f8 00 00 00 48 8d 78 70 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 04 02 84 c0 74 08 3c 03 0f 8e 8a 21 00 00 48 8b 84 24 f8 00 RSP: 0018:ffffc900043473d0 EFLAGS:
00010202 RAX: dffffc0000000000 RBX: 0000000000010046 RCX: ffffffff886b1597 RDX: 000000000000000e RSI:
ffffffff886b2520 RDI: 0000000000000070 RBP: ffffc90004347578 R0 ---truncated--- (CVE-2023-52435)

- 在 Linux 核心中,下列弱點已修復:f2fs:明確使 xattr 清單以 null 結尾 設定 xattr 時,明確使 xattr 清單以 null 結尾。這使得未使用的 xattr 空間一律歸零這一經不起推敲的假設無效。(CVE-2023-52436)

- 在 Linux 核心中,下列弱點已修復:binder:修復 shinker 回呼中的釋放後使用 在 shrinker 回呼期間使用 mmap 讀取鎖定意味著使用 alloc->vma 指標並不安全,因為它會與 munmap() 發生爭用。自 commit dd2283f2605e (mm:mmap:munmap 中含有讀取 mmap_sem 的 zap 頁面) 起,mmap 鎖定會在 vma 被隔離之後降級。透過 shrinker 的除錯 sysfs,我可以手動新增一些延遲並觸發頁面回收來重現此問題。下列 KASAN 報告確認了 UAF:
================================================================== 錯誤:KASAN:zap_page_range_single+0x470/0x4b8 中存在 slab-use-after-free 讀取大小為 8 位於:addr ffff356ed50e50f0 按任務 bash/478 CPU:1 PID:478 命令:bash 未污染 6.6.0-rc5-00055-g1c8b86a3799f-dirty #70 硬體名稱:linux,dummy-virt (DT) 呼叫追蹤: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 根據任務 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 根據任務 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 上次可能的相關工作建立:__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 透過執行 vma_lookup() 來解決此問題,此函式在 mmap 鎖定降级之后才能找到被隔離的 vma。
請注意,與升級至 mmap 寫入鎖定 (會增加爭用概率) 相比,此選項的效果更好。此外,mmap_write_trylock() 已於近期移除。(CVE-2023-52438)

- 在 Linux 核心中,下列弱點已修復:uio:修復 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)
-------------------------------------------------- ----- 在 core-1 uio_unregister_device() 中,若 idev->dev kobject ref 為 1,device_unregister 将 kfree idev。但在執行 core-1 device_unregister、put_device 与 kfree 之間,core-2 可能會 get_device。然后:1. 在 core-1 kfree idev 之後,core-2 将會為 idev 執行釋放後使用。2. core-2 執行 uio_release 和 put_device 後,idev 將被雙重釋放。若要解決此問題,我們可以透过 minor_lock 取得 idev atomic 和 inc idev 參照。
(CVE-2023-52439)

- 在 Linux 核心 fs/smb/client/smb2ops.c 的 smb2_dump_detail 中發現一個超出邊界讀取弱點。此問題允許本機攻擊者造成系統當機或洩漏核心內部資訊。
(CVE-2023-6610)

- 在 Linux 核心 6.6.10 之前版本的 ksmbd 中發現一個問題。由於未正確處理名稱資料和 CreateContexts 資料之間的關係,fs/smb/server/smb2misc.c 中的 smb2_get_data_area_len 可造成 smb_strndup_from_utf16 超出邊界存取。(CVE-2024-22705)

- 在 6.7.1 版本之前的 Linux 核心中,fs/btrfs/disk-io.c 內的 btrfs_get_root_ref 可能會發生宣告失敗及損毀,這是因為在建立子磁碟區時,插入其 root 項目後過快讀取子磁碟區所致。 (CVE-2024-23850)

- 在 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-6724-2

Plugin 詳細資訊

嚴重性: High

ID: 193377

檔案名稱: ubuntu_USN-6724-2.nasl

版本: 1.0

類型: local

代理程式: unix

已發布: 2024/4/17

已更新: 2024/4/17

支援的感應器: Agentless Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Frictionless Assessment Azure, Nessus Agent, Nessus

風險資訊

VPR

風險因素: Medium

分數: 6.7

CVSS v2

風險因素: High

基本分數: 7.7

時間分數: 6

媒介: CVSS2#AV:A/AC:L/Au:S/C:C/I:C/A:C

CVSS 評分資料來源: CVE-2023-52434

CVSS v3

風險因素: High

基本分數: 8

時間分數: 7.2

媒介: CVSS:3.0/AV:A/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:22.04:-:lts, cpe:/o:canonical:ubuntu_linux:23.10, p-cpe:/a:canonical:ubuntu_linux:linux-image-6.5.0-1014-raspi, p-cpe:/a:canonical:ubuntu_linux:linux-image-6.5.0-1017-aws

必要的 KB 項目: Host/cpu, Host/Ubuntu, Host/Ubuntu/release, Host/Debian/dpkg-l

可被惡意程式利用: true

可輕鬆利用: Exploits are available

修補程式發佈日期: 2024/4/16

弱點發布日期: 2023/12/8

參考資訊

CVE: CVE-2023-46838, CVE-2023-50431, CVE-2023-52429, CVE-2023-52434, CVE-2023-52435, CVE-2023-52436, CVE-2023-52438, CVE-2023-52439, CVE-2023-6610, CVE-2024-22705, CVE-2024-23850, CVE-2024-23851

USN: 6724-2