Oracle Linux 9:核心 (ELSA-2024-2394)

critical Nessus Plugin ID 195036

概要

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

說明

遠端 Oracle Linux 9 主機中安裝的套件受到 ELSA-2024-2394 公告中提及的多個弱點影響。

- 在 6.2.3 版之前的 Linux 核心的 lib/kobject.c 中發現一個問題。攻擊者可藉由 root 存取權觸發爭用情形,進而導致 fill_kobj_path 超出邊界寫入。(CVE-2023-45863)

- 在 drivers/bluetooth/hci_ldisc.c 的 Linux 核心 6.2 中發現一個問題。在 hci_uart_tty_ioctl 中,HCIUARTSETPROTO 和 HCIUARTGETPROTO 之間有爭用情形。在設定 hu->proto 之前設定 HCI_UART_PROTO_SET。NULL 指標解除參照可能會發生。(CVE-2023-31083)

- 在 Linux 核心的 XFRM 子系統中發現一個缺陷。此特定缺陷存在於處理狀態篩選器的過程中,可導致讀取範圍超出配置緩衝區的結尾。本機特權 (CAP_NET_ADMIN) 攻擊者可利用此缺陷觸發超出邊界讀取,進而可能導致資訊洩漏。(CVE-2023-39194)

- 在 6.4.5 之前的 Linux 核心中,drivers/gpu/drm/drm_atomic.c 在非封鎖 Atomic commit 和驅動程式卸載之間發生爭用情形時,會出現釋放後使用情形。(CVE-2023-51043)

在 Linux 核心 hugetlbfs 功能的 hugetlbfs_fill_super 函式中發現一個 NULL 指標解除參照瑕疵。本機使用者可利用此問題使系統當機,或可能提升其在系統中的權限。(CVE-2024-0841)

- 在 Linux 核心中,下列弱點已解決:mlxsw:spectrum_acl_tcam:修復堆疊損毀問題。第一次將 tc 篩選器新增至 net 裝置時,對應的本機連接埠會系結至裝置中的 ACL 群組。該群組包含 ACL 清單。而每個 ACL 會指向儲存篩選器的不同 TCAM 區域。轉送期間,系統會依序評估 ACL,直到找到相符項目為止。將篩選器放置在不同區域的一個原因是,以遞減的優先順序和交替順序新增篩選器時,兩個連續的篩選器因為其金鑰使用方式,而永遠無法放入相同的區域。在 Spectrum-2 和更新版本的 ASIC 中,韌體開始報告群組中 ACL 的最大數目超過 16 個,但設定 ACL 群組 (PAGT) 的暫存器配置並未更新以考量此問題。因此,在需要群組中超過 16 個 ACL 的極少數情況下,可能會發生堆疊損毀 [1]。透過將 ACL 群組大小上限限制為韌體報告內容與 PAGT 暫存器可容納的 ACL 上限之間的最小值來修復。新增測試案例,確保機器在遇到此情況時不會當機。[1] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: mlxsw_sp_acl_tcam_group_update+0x116/0x120 [...] dump_stack_lvl+0x36/0x50 panic+0x305/0x330 __stack_chk_fail+0x15/0x20 mlxsw_sp_acl_tcam_group_update+0x116/0x120 mlxsw_sp_acl_tcam_group_region_attach +0x69/0x110 mlxsw_sp_acl_tcam_vchunk_get+0x492/0xa20 mlxsw_sp_acl_tcam_ventry_add+0x25/0xe0 mlxsw_sp_acl_rule_add+0x47/0x240 mlxsw_sp_flower_replace+0x1a9/0x1d0 tc_setup_cb_add+0xdc/0x1c0 fl_hw_replace_filter+0x146/0x1f0 fl_change+0xc17/0x1360 tc_new_tfilter+0x472/0xb90 rtnetlink_rcv_msg+0x313/0x3b0 netlink_rcv_skb +0x58/0x100 netlink_unicast+0x244/0x390 netlink_sendmsg+0x1e4/0x440 ____sys_sendmsg+0x164/0x260 ___sys_sendmsg+0x9a/0xe0 __sys_sendmsg+0x7a/0xc0 do_syscall_64+0x40/0xe0 entry_SYSCALL_64_after_hwframe+0x63/0x6b (CVE-2024-26586)

- 拒絕原因:此 CVE ID 已被其 CVE 編號授權單位拒絕或撤銷。
(CVE-2024-26609)

- 在 Linux 核心中,下列弱點已解決:mm/sparsemem:修正存取 memory_section->usage 時出現爭用。觀察到出現下列爭用的情況:在屬於裝置記憶體區域的 PFN 中,PFN 的系統記憶體配置為 [ZONE_NORMAL ZONE_DEVICE ZONE_NORMAL]。由於一般區域開始和結束 pfn 也包含裝置記憶體 PFN,因此觸發的壓實也會嘗試裝置記憶體 PFN,即使它們最終會進入 NOP (因為 pfn_to_online_page() 會在 ZONE_DEVICE 記憶體區段傳回 NULL)。如果是來自其他核心,在 ZONE_DEVICE 區域 (上述 PFN 所屬的區域,也是目前正在執行壓實的區域) 所要移除的區段對應會導致在啟用 CONFIG_SPASEMEM_VMEMAP 的情況下發生核心損毀。如需損毀記錄,請查看 [1]。
compact_zone() memunmap_pages ------------- --------------- __pageblock_pfn_to_page ...... (a)pfn_valid():
valid_section()//傳回 true (b)__remove_pages()-> sparse_remove_section()->section_deactivate():[釋放陣列 ms->usage 並設定 ms->usage = NULL] pfn_section_valid() [存取為 NULL 的 ms->usage ] 注意:
根據上述情況,可以說 pfn_valid()/pfn_section_valid() 和區段停用 (已啟用 SPASEMEM_VMEMAP) 之間的爭用已減少。提交 b943f045a9af(mm/sparse:使用 pfn_section_valid 檢查修正核心損毀) 嘗試藉由清除預期為 valid_section() 的 SECTION_HAS_MEM_MAP 傳回 false 來解決相同的問題,因而不會存取 ms->usage。透過下列步驟修正此問題: a) 在釋放 ->usage 之前清除 SECTION_HAS_MEM_MAP。 b) 提供 RCU 保護的讀取端重要區段將在 SECTION_HAS_MEM_MAP 清除時或是能夠成功存取 ->usage 時傳回 NULL。 c) 使用 kfree_rcu() 釋放 ->usage,並設定 ms->usage = NULL。在此之後將不會嘗試存取 ->usage,因為已經清除 SECTION_HAS_MEM_MAP,因此 valid_section() 會傳回 false。感謝 David/Pavan 針對此修補程式提供的意見。 [1] https://lore.kernel.org/linux-mm/[email protected]/ 在 Snapshot SoC 上,採用上述的 PFN 記憶體組態為 [ZONE_NORMAL ZONE_DEVICE ZONE_NORMAL],我們每天在裝置場上進行測試時,都能看到許多問題。以下是針對此特定問題的記錄。雖然下列記錄並未直接指向 pfn_section_valid(){ ms->usage;},但是當我們在 T32 lauterbach 工具上載入此轉儲存時,其仍指向 pfn_section_valid(){ ms->usage;}。 [ 540.578056] 無法處理虛擬位址 0000000000000000 的核心 NULL 指標解除參照 [ 540.578068] 記憶體中止資訊: [ 540.578070] ESR = 0x0000000096000005 [ 540.578073] EC = 0x25:DABT (目前的 EL),IL = 32 位元 [ 540.578077] ] ] SET = 0,FnV = 0 [ 540.578080] EA = 0,S1PTW = 0 [540.578082] FSC = 0x05:第 1 層轉譯錯誤 [ 540.578085] 資料中止資訊: [ 540.578086] ISV = 0,ISS = 0x00000005 [ 540.578088] CM = 0, WnR = 0 [ 540.579431] pstate: 82400005 (Nzcv daif +PAN -UAO +TCO
-DIT -SSBSBTYPE=--) [ 540.579436] pc : __pageblock_pfn_to_page+0x6c/0x14c [ 540.579454] lr :
compact_zone+0x994/0x1058 [ 540.579460] sp : ffffffc03579b510 [ 540.579463] x29: ffffffc03579b510 x28:
0000000000235800 x27:000000000000000c [ 540.579470] x26: 0000000000235c00 x25: 0000000000000068 x24:ffffffc03579b640 [ 540.579477] x23: 0000000000000001 x22: ffffffc03579b660 x21:0000000000000000 [540.579483] x20: 0000000000235bff x19: ffffffdebf7e3940 x18:ffffffdebf66d140 [ 540.579489] x17:
00000000739ba063 x16: 00000000739ba063 x15:00000000009f4bff [ 540.579495] x14: 0000008000000000 x13:
0000000000000000 x12:0000000000000001 [ 540.579501] x11: 0000000000000000 x10: 0000000000000000 x9 :ffffff897d2cd440 [ 540.579507] x8 : 0000000000000000 x7 : 0000000000000000 x6 :ffffffc03579b5b4 [540.579512] x5 : 0000000000027f25 x4 : ffffffc03579b5b8 x3 :0000000000000 ---truncated--- (CVE-2023-52489)

- 在 Linux 核心中,下列弱點已解決:HID:sony:修正 sony_probe() 中的潛在記憶體洩漏。如果在成功執行 usb_alloc_urb() 呼叫後發生錯誤,則應呼叫 usb_free_urb()。(CVE-2023-52529)

- 在 Linux 核心中,下列弱點已解決:net/sched:act_ct:修復 ooo 片段上的 skb 洩漏和損毀。act_ct 會在分割前新增 skb->users。如果片段按順序送達,最後一個片段的參照會重設於: inet_frag_reasm_prepare skb_morph 中,而這並不簡單。但是,當片段無序送達時,沒有人會取消參照最後一個片段,因此會洩漏所有片段。情況甚至更為嚴重,因為同時複製和共用 skb 時,初始化封包擷取可導致當機 [0]。透過在分割之前移除 skb_get() 來修復此問題。分割失敗或正在進行時,act_ct 會傳回 TC_ACT_CONSUMED。[0]:[843.804823] ------------[ cut here ]------------ [843.809659] net/core/skbuff.c:2091! 的存在核心錯誤 [843.814516] 無效 opcode:0000 [#1] PREEMPT SMP [843.819296] CPU:7 PID:0 Comm:swapper/7 Kdump:已載入 污染:GS 6.7.0-rc3 #2 [843.824107] 硬體名稱:XFUSION 1288H V6/BC13MBSBD、BIOS 1.29 11/25/2022 [ 843.828953] RIP: 0010:pskb_expand_head+0x2ac/0x300 [ 843.833805] 程式碼:8b 70 28 48 85 f6 74 82 48 83 c6 08 bf 01 00 00 00 e8 38 bd ff ff 8b 83 c0 00 00 00 48 03 83 c8 00 00 00 e9 62 ff ff 0f 0b <0f> 0b e8 8d d0 ff ff e9 b3 fd ff ff 81 7c 24 14 40 01 00 00 4c 89 [843.843698] RSP: 0018:ffffc9000cce07c0 EFLAGS: 00010202 [ 843.848524] RAX: 0000000000000002 RBX:
ffff88811a211d00 RCX: 0000000000000820 [ 843.853299] RDX: 0000000000000640 RSI: 0000000000000000 RDI:
ffff88811a211d00 [ 843.857974] RBP: ffff888127d39518 R08: 00000000bee97314 R09: 0000000000000000 [843.862584] R10: 0000000000000000 R11: ffff8881109f0000 R12: 0000000000000880 [ 843.867147] R13:
ffff888127d39580 R14: 0000000000000640 R15: ffff888170f7b900 [ 843.871680] FS: 0000000000000000(0000) GS:ffff889ffffc0000(0000) knlGS:0000000000000000 [ 843.876242] CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033 [ 843.880778] CR2: 00007fa42affcfb8 CR3: 000000011433a002 CR4: 0000000000770ef0 [843.885336] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 843.889809] DR3:
0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 843.894229] PKRU: 55555554 [ 843.898539] 呼叫追蹤:[ 843.902772] <IRQ> [ 843.906922] ? __die_body+0x1e/0x60 [ 843.911032] ? die+0x3c/0x60 [843.915037] ? do_trap+0xe2/0x110 [ 843.918911] ? pskb_expand_head+0x2ac/0x300 [ 843.922687] ? do_error_trap+0x65/0x80 [ 843.926342] ? pskb_expand_head+0x2ac/0x300 [ 843.929905] ? exc_invalid_op+0x50/0x60 [ 843.933398] ? pskb_expand_head+0x2ac/0x300 [ 843.936835] ? asm_exc_invalid_op+0x1a/0x20 [ 843.940226] ? pskb_expand_head+0x2ac/0x300 [ 843.943580] inet_frag_reasm_prepare+0xd1/0x240 [ 843.946904] ip_defrag+0x5d4/0x870 [ 843.950132] nf_ct_handle_fragments+0xec/0x130 [nf_conntrack] [ 843.953334] tcf_ct_act+0x252/0xd90 [act_ct] [843.956473] ? tcf_mirred_act+0x516/0x5a0 [act_mirred] [ 843.959657] tcf_action_exec+0xa1/0x160 [843.962823] fl_classify+0x1db/0x1f0 [cls_flower] [ 843.966010] ? skb_clone+0x53/0xc0 [ 843.969173] tcf_classify+0x24d/0x420 [ 843.972333] tc_run+0x8f/0xf0 [ 843.975465]
__netif_receive_skb_core+0x67a/0x1080 [ 843.978634] ? dev_gro_receive+0x249/0x730 [ 843.981759]
__netif_receive_skb_list_core+0x12d/0x260 [ 843.984869] netif_receive_skb_list_internal+0x1cb/0x2f0 [843.987957] ? mlx5e_handle_rx_cqe_mpwrq_rep+0xfa/0x1a0 [mlx5_core] [ 843.991170] napi_complete_done+0x72/0x1a0 [ 843.994305] mlx5e_napi_poll+0x28c/0x6d0 [mlx5_core] [ 843.997501]
__napi_poll+0x25/0x1b0 [ 844.000627] net_rx_action+0x256/0x330 [ 844.003705] __do_softirq+0xb3/0x29b [844.006718] irq_exit_rcu+0x9e/0xc0 [ 844.009672] common_interrupt+0x86/0xa0 [ 844.012537] </IRQ> [844.015285] <TASK> [ 844.017937] asm_common_interrupt+0x26/0x40 [ 844.020591] RIP:
0010:acpi_safe_halt+0x1b/0x20 [ 844.023247] Code: ff 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 65 48 8b 04 25 00 18 03 00 48 8b 00 a8 08 75 0c 66 90 0f 00 2d 81 d0 44 00 fb ---truncated--- (CVE-2023-52610)

- 已解決 Linux 核心中的下列弱點:net: tls: 處理 crypto 要求的積存記錄。我們是在對 crypto API 的要求中設定 CRYPTO_TFM_REQ_MAY_BACKLOG 標記,因此 crypto_aead_{encrypt,decrypt} 可以在有效情況下傳回 -EBUSY 而非 -EINPROGRESS。例如,AESNI 的 cryptd 佇列已滿時 (透過人為降低的 cryptd.cryptd_max_cpu_qlen 可輕易觸發),要求會排入積存佇列,但仍會被處理。在這種情況下,async 回呼也會被呼叫兩次:第一次是 err == -EINPROGRESS (我們似乎可以忽略),然後是 err == 0。相較於 Sabrina 的原始修補程式,此版本使用新的 tls_*crypt_async_wait( ) 協助程式並將 EBUSY 轉換為 EINPROGRESS,以避免必須修改所有錯誤處理路徑。處理方式相同。(CVE-2024-26584)

- 在 Linux 核心的 cxgb4 驅動程式中發現釋放後使用弱點。此錯誤會在 cxgb4 裝置因工作佇列中可能重新配置的 Flower_stats_timer 而中斷卸離時發生。本機使用者可利用此缺陷使系統當機,進而引發拒絕服務情形。(CVE-2023-4133)

已報告涉及 netfilter 的超出邊界存取弱點,且此弱點已修復為:f1082dd31fe4 (netfilter:nf_tables:拒絕不受支援系列的表格);建立新的 netfilter 表格時,由於缺少針對 `nf_tables_newtable` 函式中無效 nf_tables 系列 (pf) 值的防護措施,攻擊者可以實現超出邊界存取目的。(CVE-2023-6040)

- 在密碼編譯演算法 scatterwalk 功能的 Linux 核心 API 中發現一個 null 指標解除參照瑕疵。當使用者建構具有特定通訊端組態的惡意封包時,會發生此問題,其可允許本機使用者造成系統當機或提升其在系統上的權限。(CVE-2023-6176)

- 在之前的版本 6.2.9 中,net/bluetooth/hci_conn.c 的 hci_conn_cleanup 有釋放後使用情形 (在 hci_conn_hash_flush 中觀察到),這是因為呼叫 hci_dev_put 和 hci_conn_put 所致。存在一個可導致特權提升的重複釋放問題。(CVE-2023-28464)

- 在 Linux 核心的 Netfilter 子系統中發現一個瑕疵。由於對錯誤的 `set` 叫用 `__ip_set_put` ,IPSET_CMD_ADD 和 IPSET_CMD_SWAP 之間的爭用情形可導致核心錯誤。
本機使用者可能會利用此問題導致系統當機。(CVE-2023-42756)

- 据發現,在 Linux 核心的 fs/locks.c 函式中,filelock_init 有一個瑕疵。此問題可導致主機記憶體耗盡,造成此問題的原因是 memcg 未限制可攜式作業系統介面 (POSIX) 檔案鎖定的數量。(CVE-2022-0480)

- 在 Linux 核心的 NVMe-oF/TCP 子系統中發現超出邊界讀取弱點。遠端攻擊者可利用此問題傳送特製的 TCP 封包,觸發堆積型緩衝區溢位,進而導致列印 kmalloc 資料,並可能洩漏到核心環形緩衝區 (dmesg)。
(CVE-2023-6121)

- 在 Linux 核心中,在 lib/idr.c 的 ida_free 中發現一個 NULL 指標解除參照問題。此問題可能允許使用此程式庫的攻擊者因函式傳回時遺漏檢查而造成拒絕服務弱點。(CVE-2023-6915)

- 在 Bluetooth Core Specification 4.2 至 5.4 (含) 中,具有安全簡易配對和安全連線配對的藍牙 BR/EDR 裝置允許強制使用短金鑰長度的特定攔截式攻擊,且可能導致發現加密金鑰和即時插入,亦即 BLUFFS。(CVE-2023-24023)

- 在 Linux 核心的 Netfilter 子系統中發現一個缺陷。sctp_mt_check 未驗證 flag_count 欄位。本機特權 (CAP_NET_ADMIN) 攻擊者可利用此缺陷觸發超出邊界讀取,進而導致當機或資訊洩漏。(CVE-2023-39193)

- 在 Linux 核心中,下列弱點已解決:net:bridge:使用 DEV_STATS_INC() syzbot/KCSAN 報告 br_handle_frame_finish() 中發生資料爭用 [1] 此函式可從多個 cpu 執行而無互斥。採用 SMP safe DEV_STATS_INC() 以更新 dev->stats 欄位。處理 dev->stats.tx_dropped 的更新。[1] 錯誤:KCSAN:在 br_handle_frame_finish / br_handle_frame_finish 讀寫 0xffff8881374b2178 (共 8 位元組) 中發生資料爭用,在 cpu 1 上發生中斷時發生:
br_handle_frame_finish+0xd4f/0xef0 net/bridge/br_input.c:189 br_nf_hook_thresh+0x1ed/0x220 br_nf_pre_routing_finish_ipv6+0x50f/0x540 NF_HOOK include/linux/netfilter.h:304 [inline] br_nf_pre_routing_ipv6+0x1e3/0x2a0 net/bridge/br_netfilter_ipv6.c: 178 br_nf_pre_routing+0x526/0xba0 net/bridge/br_netfilter_hooks.c:508 nf_hook_entry_hookfn include/linux/netfilter.h:144 [inline] nf_hook_bridge_pre net/bridge/br_input.c:272 [inline] br_handle_frame+0x4c9/0x940 net/bridge/ br_input.c:417 __netif_receive_skb_core+0xa8a/0x21e0 net/core/dev.c:5417
__netif_receive_skb_one_core net/core/dev.c:5521 [inline] __netif_receive_skb+0x57/0x1b0 net/core/dev.c:5637 process_backlog+0x21f/0x380 net/core/dev.c:5965 __napi_poll+0x60/0x3b0 net/core/dev.c:6527 napi_poll net/core/dev.c:6594 [inline] net_rx_action+0x32b/0x750 net/core/dev.c:6727
__do_softirq+0xc1/0x265 kernel/softirq.c:553 run_ksoftirqd+0x17/0x20 kernel/softirq.c:921 smpboot_thread_fn+0x30a/0x4a0 kernel/smpboot.c:164 kthread+0x1d7/0x210 kernel/kthread.c:388 ret_from_fork+0x48/0x60 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:304 read-write to 0xffff8881374b2178 of 8 bytes by interrupt on cpu 0:
br_handle_frame_finish+0xd4f/0xef0 net/bridge/br_input.c:189 br_nf_hook_thresh+0x1ed/0x220 br_nf_pre_routing_finish_ipv6+0x50f/0x540 NF_HOOK include/linux/netfilter.h:304 [inline] br_nf_pre_routing_ipv6+0x1e3/0x2a0 net/bridge/br_netfilter_ipv6.c: 178 br_nf_pre_routing+0x526/0xba0 net/bridge/br_netfilter_hooks.c:508 nf_hook_entry_hookfn include/linux/netfilter.h:144 [inline] nf_hook_bridge_pre net/bridge/br_input.c:272 [inline] br_handle_frame+0x4c9/0x940 net/bridge/ br_input.c:417 __netif_receive_skb_core+0xa8a/0x21e0 net/core/dev.c:5417
__netif_receive_skb_one_core net/core/dev.c:5521 [inline] __netif_receive_skb+0x57/0x1b0 net/core/dev.c:5637 process_backlog+0x21f/0x380 net/core/dev.c:5965 __napi_poll+0x60/0x3b0 net/core/dev.c:6527 napi_poll net/core/dev.c:6594 [inline] net_rx_action+0x32b/0x750 net/core/dev.c:6727
__do_softirq+0xc1/0x265 kernel/softirq.c:553 do_softirq+0x5e/0x90 kernel/softirq.c:454
__local_bh_enable_ip+0x64/0x70 kernel/softirq.c:381 __raw_spin_unlock_bh include/linux/spinlock_api_smp.h:167 [inline] _raw_spin_unlock_bh+0x36/0x40 kernel/locking/spinlock.c:210 spin_unlock_bh include/linux/spinlock.h:396 [inline] batadv_tt_local_purge+0x1a8/0x1f0 net/batman-adv/translation-table.c:1356 batadv_tt_purge+0x2b/0x630 net/batman-adv/translation-table.c:3560 process_one_work kernel/workqueue.c:2630 [inline] process_scheduled_works+0x5b8/0xa30 kernel/workqueue.c:2703 worker_thread+0x525/0x730 kernel/workqueue.c:2784 kthread+0x1d7/0x210 kernel/kthread.c:388 ret_from_fork+0x48/0x60 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:304 value changed: 0x00000000000d7190 -> 0x00000000000d7191 Reported by Kernel Concurrency Sanitizer on: CPU: 0 PID: 14848 Comm: kworker/u4:11 Not tainted 6.6.0-rc1-syzkaller-00236-gad8a69f361b9 #0 (CVE-2023-52578)

- 在具有裝置檔案「/dev/dri/renderD128 (or Dxxx)」的 Linux 核心中,在 GPU 元件的 drivers/gpu/vmxgfx/vmxgfx_execbuf.c 的 vmwgfx 驅動程式中發現 NULL 指標解除參照弱點。此缺陷允許具有系統使用者帳戶的本機攻擊者取得權限,進而造成系統拒絕服務 (DoS)。
(CVE-2022-38096)

- 1.9.30 版之前的 Linux 版 Intel(R) Ethernet Controller RDMA 驅動程式中存在存取控制不當弱點,未經驗證的使用者可藉此透過網路存取造成權限提升。
(CVE-2023-25775)

- 在 Linux 核心 6.5.9 及之前版本中發現一個問題。在爭用 SQ 執行緒時,可發生 io_uring/fdinfo.c io_uring_show_fdinfo NULL 指標解除參照。(CVE-2023-46862)

- 在 Linux 核心中,下列弱點已解決:net:修正 neigh_periodic_work() 中可能發生的儲存區損毀從清單。在查看包括 neigh_periodic_work() 的 syzbot 報告時,我發現在從清單中刪除 RCU 受保護項目期間我忘記新增註釋。讀取器使用 rcu_deference(*np),我們需要在寫入器端使用 rcu_assign_pointer() 或 WRITE_ONCE(),以防止儲存區中斷。我使用 rcu_assign_pointer() 來獲得 lockdep 支援,這是在 neigh_flush_dev() 中所做的選擇。 (CVE-2023-52522)

- 在 Linux 核心中發現釋放後使用瑕疵,這是 unix 記憶體回收行程在刪除 SKB 與 SKB 佇列所在通訊端上的 unix_stream_read_generic() 爭用時發生爭用問題所導致。
(CVE-2023-6531)

- 在 Linux 核心的 GSM 0710 tty multiplexor 中發現爭用情形。當兩個執行緒在啟用 gsm 行原則的情況下對相同 tty 檔案描述符號執行 GSMIOC_SETCONF ioctl 時,會發生此問題,且可導致 gsm_dlci 結構在重新啟動 gsm mux 時出現釋放後使用問題。沒有權限的本機使用者可利用此缺陷提升自己在系統上的權限。(CVE-2023-6546)

- 在 Linux 核心的 ipv4 堆疊中發現 NULL 指標解除參照瑕疵。假設在呼叫 __ip_options_compile 之前,通訊端緩衝區 (skb) 已與裝置相關聯,但如果 skb 經 ipvs 重新路由,則並非總是如此。具有 CAP_NET_ADMIN 特權的本機使用者可利用此問題造成系統當機。(CVE-2023-42754)

- 在 Linux 核心 6.0.10 以及之前所有版本中發現一個問題。net/bluetooth/l2cap_core.c 的 l2cap_config_req 存在可透過 L2CAP_CONF_REQ 封包觸發的整數換行弱點。(CVE-2022-45934)

- Linux 核心的 ipv4: igmp 元件中有一個釋放後使用弱點,可遭惡意利用來提升本機權限。攻擊者可惡意利用爭用情形,造成在 RCU 讀取鎖定物件上錯誤註冊一個計時器,而該物件已由另一個執行緒釋放。建議升級過去的 commit e2b706c691905fe78468c361aaabc719d0a496f1。(CVE-2023-6932)

- 在 Linux 核心 6.2.8 及更低版本中,由於 amp_init1[] 和 amp_init2[] 沒有本應該有的故意無效元素,net/bluetooth/hci_sync.c 允許超出邊界存取。
(CVE-2023-28866)

- 在 Linux 核心的 QXL 驅動程式中發現爭用情形。qxl_mode_dumb_create() 函式會將 qxl_gem_object_create_with_handle() 傳回的 qobj 解除參照,但控點是唯一保有其參照的控點。此瑕疵可讓攻擊者猜測傳回的處理值並觸發釋放後使用問題,進而可能導致拒絕服務或權限提升。(CVE-2023-39198)

- 在 Linux 核心中,下列弱點已解決: netfilter:nf_tables:當超過 255 個元素到期時修正 memleak 當超過 255 個元素到期時,我們應該切換到新的 gc 容器結構。這絕不會發生以下情況:u8 類型會在到達邊界之前換行,且 nft_trans_gc_space() 會一律傳回 true。這表示我們回收了初始的 gc 容器結構,且失去了對之前元素的追踪。在我們將其傳遞至 call_rcu 之後,請勿解除參照「gc」。(CVE-2023-52581)

- Linux 核心的 netfilter: nf_tables 元件中有一個釋放後使用弱點,可遭惡意利用來提升本機權限。在釋放之前,nft_setelem_catchall_deactivate() 函式會檢查全能集元素在目前的世代中是否處於作用中狀態,而非在新一代中,但該函式只會在新一代中將其標示為非作用,因而可能多次釋放該元素,進而導致一個重複釋放弱點。我們建議升級過去的 commit b1db244ffd041a49ecc9618e8feb6b5c1afcdaa7。(CVE-2024-1085)

- 在 Linux 核心中,已解決下列弱點:tls:修正 async 通知和通訊端關閉之間的爭用。提交執行緒 (稱為 recvmsg/sendmsg) 可能會在非同步 crypto 處置程式呼叫 complete() 後立即退出,因此任何超過該點的程式碼會存在接觸已釋放資料的風險。盡量避免一起使用鎖定和額外旗標誌。讓主執行緒保留一個額外的參照,如此我們可以完全依賴原子參照計數器進行同步。也不要求重新初始化完成,我們現在會嚴格控製完成觸發的時間。(CVE-2024-26583)

- 攻擊者可利用 Linux 核心中「效能事件」系統元件中的堆積超出邊界寫入弱點來提升本機權限。perf_event 的 read_size 可能會溢位,導致 perf_read_group() 中出現堆積超出邊界增加或寫入。建議升級之前的認可 382c27f4ed28f803b1f1473ac2d8db0afc795a1b。(CVE-2023-6931)

- 在 Linux 核心的 Netfilter 子系統中發現一個缺陷。nfnl_osf_add_callback 函式並未驗證使用者模式控制的 opt_num 欄位。本機特權 (CAP_NET_ADMIN) 攻擊者可利用此缺陷觸發超出邊界讀取,進而導致當機或資訊洩漏。(CVE-2023-39189)

- 在 Linux 核心中,下列弱點已解決:i2c: i801:修正區塊處理程序呼叫交易 根據 Intel 資料表,軟體必須重設區塊緩衝區索引兩次,才能進行區塊處理程序呼叫交易:一次是在將傳出資料寫入至緩衝區之前,第二次是在從緩衝區讀取傳入資料之前。驅動程式目前缺少第二次重設,導致讀取了錯誤的區塊緩衝區部分。 (CVE-2024-26593)

- 在 6.6.8 之前的 Linux 核心中發現一個問題。由於 vcc_recvmsg 爭用情形,net/atm/ioctl.c 中的 do_vcc_ioctl 有釋放後使用情形弱點。(CVE-2023-51780)

- 已解決 Linux 核心中的下列弱點:tls:修正 tx 工作排程和通訊端關閉之間的爭用問題。與上一個提交相似,提交執行緒 (稱為 recvmsg/sendmsg) 可能會在非同步 crypto 處置程式呼叫 complete() 後立即退出。重新排序呼叫 complete() 前的工作排程。首先,這似乎更符合邏輯,因為這與提交執行緒的執行順序相反。(CVE-2024-26585)

- 藍牙核心規範 1.0B 版至 5.2 版中的藍牙舊型 BR/EDR PIN 程式碼配對可能允許未經驗證的附近裝置偽造對等裝置的 BD_ADDR,進而在不知道 PIN 的情況下完成配對。(CVE-2020-26555)

- 在 Linux 核心的 vc_screen 中,發現 drivers/tty/vt/vc_screen.c 的 vcs_read 中存在釋放後使用瑕疵。此問題允許具有本機使用者存取權的攻擊者造成系統當機或洩漏核心內部資訊。(CVE-2023-3567)

- 在 Linux 核心 6.4.2 及其之前版本的 USB 子系統中發現一個問題。drivers/usb/core/sysfs.c 的 read_descriptors 中存在一個超出邊界和損毀問題。(CVE-2023-37453)

- 在 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/core:修正 ETH_P_1588 流量解剖器。當將大小超過 256 位元組且後跟 0xff 模式的 PTP 乙太網路原始框架傳送至 __skb_flow_dissect 時,nhoff 值計算錯誤。例如:hdr->message_length 採用錯誤值 (0xffff),且不會復制實際標頭長度。在此情況下,「nhoff」值遭到覆寫,且 PTP 標頭未正確解剖。這會導致核心損毀。 net/core: flow_dissector net/core flow dissector nhoff = 0x0000000e net/core flow dissector hdr->message_length = 0x0000ffff net/core flow dissector nhoff = 0x0001000d (u16 overflow) ... skb linear: 00000000: 00 a0 c9 00 00 00 00 a0 c9 00 00 00 88 skb frag: 00000000: f7 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff Using the size of the ptp_header struct will allow the corrected calculation of the nhoff value. net/core flow dissector nhoff = 0x0000000e net/core flow dissector nhoff = 0x00000030 (sizeof ptp_header) ... skb linear:
00000000: 00 a0 c9 00 00 00 00 a0 c9 00 00 00 88 f7 ff ff skb linear:00000010:ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff skb linear:00000020:ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff skb frag:
00000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff Kernel trace: [ 74.984279] ------------[ cut here ]------------ [ 74.989471] kernel BUG at include/linux/skbuff.h:2440! [ 74.995237] invalid opcode:
0000 [#1] PREEMPT SMP NOPTI [ 75.001098] CPU: 4 PID: 0 Comm: swapper/4 Tainted: G U 5.15.85-intel-ese-standard-lts #1 [ 75.011629] Hardware name: Intel Corporation A-Island (CPU:AlderLake)/A-Island (ID:06), BIOS SB_ADLP.01.01.00.01.03.008.D-6A9D9E73-dirty Mar 30 2023 [ 75.026507] RIP:
0010:eth_type_trans+0xd0/0x130 [ 75.031594] Code: 03 88 47 78 eb c7 8b 47 68 2b 47 6c 48 8b 97 c0 00 00 00 83 f8 01 7e 1b 48 85 d2 74 06 66 83 3a ff 74 09 b8 00 04 00 00 eb ab <0f> 0b b8 00 01 00 00 eb a2 48 85 ff 74 eb 48 8d 54 24 06 31 f6 b9 [ 75.052612] RSP: 0018:ffff9948c0228de0 EFLAGS: 00010297 [ 75.058473] RAX:
00000000000003f2 RBX: ffff8e47047dc300 RCX: 0000000000001003 [ 75.066462] RDX: ffff8e4e8c9ea040 RSI:
ffff8e4704e0a000 RDI: ffff8e47047dc300 [ 75.074458] RBP: ffff8e4704e2acc0 R08: 00000000000003f3 R09:
0000000000000800 [ 75.082466] R10: 000000000000000d R11: ffff9948c0228dec R12: ffff8e4715e4e010 [75.090461] R13: ffff9948c0545018 R14: 0000000000000001 R15: 0000000000000800 [ 75.098464] FS:
0000000000000000(0000) GS:ffff8e4e8fb00000(0000) knlGS:0000000000000000 [ 75.107530] CS: 0010 DS: 0000 ES:
0000 CR0: 0000000080050033 [ 75.113982] CR2: 00007f5eb35934a0 CR3: 0000000150e0a002 CR4: 0000000000770ee0 [ 75.121980] PKRU: 55555554 [ 75.125035] Call Trace: [ 75.127792] <IRQ> [ 75.130063] ? eth_get_headlen+0xa4/0xc0 [ 75.134472] igc_process_skb_fields+0xcd/0x150 [ 75.139461] igc_poll+0xc80/0x17b0 [ 75.143272] __napi_poll+0x27/0x170 [ 75.147192] net_rx_action+0x234/0x280 [75.151409] __do_softirq+0xef/0x2f4 [ 75.155424] irq_exit_rcu+0xc7/0x110 [ 75.159432] common_interrupt+0xb8/0xd0 [ 75.163748] </IRQ> [ 75.166112] <TASK> [ 75.168473] asm_common_interrupt+0x22/0x40 [ 75.173175] RIP: 0010:cpuidle_enter_state+0xe2/0x350 [ 75.178749] Code: 85 c0 0f 8f 04 02 00 00 31 ff e8 39 6c 67 ff 45 84 ff 74 12 9c 58 f6 c4 02 0f 85 50 02 00 00 31 ff e8 52 b0 6d ff fb 45 85 f6 <0f> 88 b1 00 00 00 49 63 ce 4c 2b 2c 24 48 89 c8 48 6b d1 68 48 c1 [ 75.199757] RSP:
0018:ffff9948c013bea8 EFLAGS: 00000202 [ 75.205614] RAX: ffff8e4e8fb00000 RBX: ffffb948bfd23900 RCX:
000000000000001f [ 75.213619] RDX: 0000000000000004 RSI: ffffffff94206161 RDI: ffffffff94212e20 [75.221620] RBP: 0000000000000004 R08: 000000117568973a R09: 0000000000000001 [ 75.229622] R10:
000000000000afc8 R11: ffff8e4e8fb29ce4 R12: ffffffff945ae980 [ 75.237628] R13: 000000117568973a R14:
0000000000000004 R15: 0000000000000000 [ 75.245635] ? ---truncated--- (CVE-2023-52580)

- Linux 核心的 netfilter: nf_tables 元件中有一個釋放後使用弱點,可遭惡意利用來提升本機權限。nft_verdict_init() 函式允許將正值視為勾點判定中的放置錯誤,因此當發出與 NF_ACCEPT 類似的放置錯誤的 NF_DROP 時,nf_hook_slow() 函式可造成重複釋放弱點。我們建議升級上一個 commit f342de4e2f33e0e39165d8639387aa6c19dff660。(CVE-2024-1086)

- 在 Linux 核心中,下列弱點已解決:ip6_tunnel:修復 ip6_tnl_parse_tlv_enc_lim() 中的 NEXTHDR_FRAGMENT 處理 syzbot 指出 [1] NEXTHDR_FRAGMENT 處理已中斷。
只有在我們提取足夠的位元組至 skb->head 時,才能讀取 frag_off。目前我們可能會存取記憶體。[1] BUG: KMSAN: uninit-value in ip6_tnl_parse_tlv_enc_lim+0x94f/0xbb0 ip6_tnl_parse_tlv_enc_lim+0x94f/0xbb0 ipxip6_tnl_xmit net/ipv6/ip6_tunnel.c:1326 [inline] ip6_tnl_start_xmit+0xab2/0x1a70 net/ipv6/ip6_tunnel.c:1432 __netdev_start_xmit include /linux/netdevice.h:4940 [內嵌] netdev_start_xmit include/linux/netdevice.h:4954 [內嵌] xmit_one net/core/dev.c:3548 [內嵌] dev_hard_start_xmit+0x247/0xa10 net/core/dev.c:3564
__dev_queue_xmit+0x33b8/0x5130 net/core/dev.c:4349 dev_queue_xmit include/linux/netdevice.h:3134 [內嵌] neigh_connected_output+0x569/0x660 net/core/neighbour.c:1592 neigh_output include/net/neighbour.h:542 [內嵌] ip6_finish_output2+0x23a9/0x2b30 net/ipv6/ip6_output.c:137 ip6_finish_output+0x855/0x12b0 net/ipv6/ip6_output.c:222 NF_HOOK_COND include/linux/netfilter.h:303 [內嵌] ip6_output+0x323/0x610 net/ipv6/ip6_output.c:243 dst_output include/net/dst.h:451 [內嵌] ip6_local_out+0xe9/0x140 net/ipv6/output_core.c:155 ip6_send_skb net/ipv6/ip6_output.c:1952 [內嵌] ip6_push_pending_frames +0x1f9/0x560 net/ipv6/ip6_output.c:1972 rawv6_push_pending_frames+0xbe8/0xdf0 net/ipv6/raw.c:582 rawv6_sendmsg+0x2b66/0x2e70 net/ipv6/raw.c:920 inet_sendmsg+0x105/0x190 net/ipv4/ af_inet.c:847 sock_sendmsg_nosec net/socket.c:730 [內嵌] __sock_sendmsg net/socket.c:745 [內嵌] ____sys_sendmsg+0x9c2/0xd60 net/socket.c:2584 ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2638
__sys_sendmsg net/socket.c:2667 [內嵌] __do_sys_sendmsg net/socket.c:2676 [內嵌] __se_sys_sendmsg net/socket.c:2674 [內嵌] __x64_sys_sendmsg+0x307/0x490 net/socket.c:2674 do_syscall_x64 arch/x86/ entry/common.c:52 [內嵌] do_syscall_64+0x44/0x110 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x63/0x6b Uninit 建立於:slab_post_alloc_hook+0x129/0xa70 mm/slab.h:768 slab_alloc_node mm /slub.c:3478 [內嵌] __kmem_cache_alloc_node+0x5c9/0x970 mm/slub.c:3517
__do_kmalloc_node mm/slab_common.c:1006 [內嵌] __kmalloc_node_track_caller+0x118/0x3c0 mm/slab_common.c:1027 kmalloc_reserve+0x249/0x4a0 net/core/skbuff.c:582 pskb_expand_head+0x226/0x1a00 net/core/skbuff.c: 2098 __pskb_pull_tail+0x13b/0x2310 net/core/skbuff.c:2655 pskb_may_pull_reason include/linux/skbuff.h:2673 [內嵌] pskb_may_pull include/linux/skbuff.h:2681 [內嵌] ip6_tnl_parse_tlv_enc_lim+0x901/0xbb0 net/ipp// ip6_tunnel.c:408 ipxip6_tnl_xmit net/ipv6/ip6_tunnel.c:1326 [內嵌] ip6_tnl_start_xmit+0xab2/0x1a70 net/ipv6/ip6_tunnel.c:1432 __netdev_start_xmit include/linux/netdevice.h:4940 [內嵌] netdev_start_xmit/linux/ netdevice.h:4954 [內嵌] xmit_one net/core/dev.c:3548 [內嵌] dev_hard_start_xmit+0x247/0xa10 net/core/dev.c:3564
__dev_queue_xmit+0x33b8/0x5130 net/core/dev.c:4349 dev_queue_xmit include/linux/netdevice.h:3134 [內嵌] neigh_connected_output+0x569/0x660 net/core/neighbour.c:1592 neigh_output include/net/neighbour.h:542 [內嵌] ip6_finish_output2+0x23a9/0x2b30 net/ipv6/ip6_output.c:137 ip6_finish_output+0x855/0x12b0 net/ipv6/ip6_output.c:222 NF_HOOK_COND include/linux/netfilter.h:303 [內嵌] ip6_output+0x323/0x610 net/ipv6/ip6_output.c:243 dst_output include/net/dst.h:451 [內嵌] ip6_local_out+0xe9/0x140 net/ipv6/output_core.c:155 ip6_send_skb net/ipv6/ip6_output.c:1952 [內嵌] ip6_push_pending_frames +0x1f9/0x560 net/ipv6/ip6_output.c:1972 rawv6_push_pending_frames+0xbe8/0xdf0 net/ipv6/raw.c:582 rawv6_sendmsg+0x2b66/0x2e70 net/ipv6/raw.c:920 inet_sendmsg+0x105/0x190 net/ipv4/ af_inet.c:847 sock_sendmsg_nosec net/socket.c:730 [內嵌] __sock_sendmsg net/socket.c:745 [內嵌] ____sys_sendmsg+0x9c2/0xd60 net/socket.c:2584 ___sys_sendmsg+0x28d/0x3c0 net/socket.c:2638
__sys_sendmsg net/socket.c:2667 [內嵌] __do_sys_sendms ---truncated--- (CVE-2024-26633)

- 在 Linux 核心的 nf_tables 中,發現 net/netfilter/nft_dynset.c 的 nft_dynset_init() 存在 Null 指標解除參照弱點。具有 CAP_NET_ADMIN 使用者特權的本機攻擊者可藉由此問題造成拒絕服務。(CVE-2023-6622)

- 在 Linux Kernel 的 SMB Client 子元件中,fs/smb/client/smb2ops.c 的 receive_encrypted_standard 有一個超出邊界記憶體讀取缺陷。發生此問題的原因是 memcpy 長度存在整數反向溢位弱點,這會導致拒絕服務。(CVE-2024-0565)

- 在 6.6.8 及更低版本的 Linux 核心中,net/bluetooth/af_bluetooth.c 中的 bt_sock_recvmsg 存在釋放後使用情形,這是因為 bt_sock_ioctl 爭用情形所致。(CVE-2023-51779)

- 在 Linux 核心中,下列弱點已解決:perf/x86/lbr:篩選 vsyscall 位址 我們發現,在 LBR 取樣作用中的情況下進行 vsyscall 會發生不穩定的情況。如果針對 perf 採樣中斷 vsyscall (NMI),則可能會發生此呼叫序列 (最近的在頂端):
__insn_get_emulate_prefix() insn_get_emulate_prefix() insn_get_prefixes() insn_get_opcode() decode_branch_type() get_branch_type() intel_pmu_lbr_filter() intel_pmu_handle_irq() perf_event_nmi_handler() Within __insn_get_emulate_prefix() at frame 0, a macro is called:
peek_nbyte_next(insn_byte_t, insn, i) Within this macro, this dereference occurs: (insn)->next_byte Inspecting registers at this point, the value of the next_byte field is the address of the vsyscall made, for example the location of the vsyscall version of gettimeofday() at 0xffffffffff600000. 存取 vsyscall 區域中的位址時,會因為未處理的頁面錯誤而觸發 oops。若要修正此錯誤,可在判斷分支類型時篩選 vsyscall。如果發現核心位址位於 vsyscall 區域中,此修補程式將會傳回 none 分支。(CVE-2023-52476)

- 在 Linux 核心中,下列弱點已解決: team:團隊裝置類型變更時,修正 null-ptr-deref 使用重現器取得 null-ptr-deref 錯誤 [1]。BUG: kernel NULL pointer dereference, address: 0000000000000228 ... RIP: 0010:vlan_dev_hard_header+0x35/0x140 [8021q] ... Call Trace: <TASK> ? __die+0x24/0x70 ? page_fault_oops+0x82/0x150 ? exc_page_fault+0x69/0x150 ? asm_exc_page_fault+0x26/0x30 ? vlan_dev_hard_header+0x35/0x140 [8021q] ? vlan_dev_hard_header+0x8e/0x140 [8021q] neigh_connected_output+0xb2/0x100 ip6_finish_output2+0x1cb/0x520 ? nf_hook_slow+0x43/0xc0 ? ip6_mtu+0x46/0x80 ip6_finish_output+0x2a/0xb0 mld_sendpack+0x18f/0x250 mld_ifc_work+0x39/0x160 process_one_work+0x1e6/0x3f0 worker_thread+0x4d/0x2f0 ? __pfx_worker_thread+0x10/0x10 kthread+0xe5/0x120 ?
__pfx_kthread+0x10/0x10 ret_from_fork+0x34/0x50 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1b/0x30 [1] $ teamd -t team0 -d -c '{runner: {name: loadbalance}}' $ ip link add name t-dummy type dummy $ ip link add link t-dummy name t-dummy.100 type vlan id 100 $ ip link add name t-nlmon type nlmon $ ip link set t-nlmon master team0 $ ip link set t-nlmon nomaster $ ip link set t-dummy up $ ip link set team0 up $ ip link set t-dummy.100 down $ ip link set t-dummy.100 master team0 When enslave a vlan device to team device and team device type is changed from non-ether to ether, header_ops of team device is changed to vlan_header_ops. 這是不正確的,而且會在 vlan_dev_hard_header() 中觸發 vlan->real_dev 的 null-ptr-deref,因為團隊裝置不是 vlan 裝置。快取 team_setup() 中的 eth_header_ops,然後在 team net 裝置的類型從非 ether 變更為 ether 時,將快取的 header_ops 指派給 header_ops 以修正錯誤。(CVE-2023-52574)

- 在 Linux 核心中,已解決下列弱點:net:tls:修正部分讀取和非同步解密的釋放後使用 tls_decrypt_sg 不會從 clear_skb 頁面取得參照,因此 tls_decrypt_done 中的 put_page() 會釋出它們,並且我們嘗試從部分讀取的 skb 讀取時,會在 process_rx_list 中觸發釋放後使用。(CVE-2024-26582)

- 在 Linux 核心中,下列弱點已修正:sched/membarrier:減少對 sys_membarrier 的頻繁呼叫。在某些系統中,sys_membarrier 的消耗非常大,導致整體速度變慢。因此,鎖定路徑可將存取序列化,從而防止以過高頻率呼叫此功能以及電腦超負荷執行。(CVE-2024-26602)

- 在 Linux 核心中,下列弱點已修復:gfs2:修復 gfs2_rgrp_dump 中的 NULL 指標解除參照 據 Syzkaller 報告,存取 gfs2_rgrp_dump() 中的 rgd->rd_rgl 時發生 NULL 指標解除參照。在 read_rindex_entry() 中建立 rgd->rd_gl 失敗時,可能會發生這種情況。在 gfs2_rgrp_dump() 中新增 NULL 指標檢查,以防止該情形發生。(CVE-2023-52448)

- 在 Linux 核心中,下列弱點已修正:netfilter:nf_tables:不允許匿名集逾時 不使用使用者空間,不允許這些參數。CVE-2023-52620)

請注意,Nessus 並未測試這些問題,而是僅依據應用程式自我報告的版本號碼作出判斷。

解決方案

更新受影響的套件。

另請參閱

https://linux.oracle.com/errata/ELSA-2024-2394.html

Plugin 詳細資訊

嚴重性: Critical

ID: 195036

檔案名稱: oraclelinux_ELSA-2024-2394.nasl

版本: 1.2

類型: local

代理程式: unix

已發布: 2024/5/6

已更新: 2024/5/30

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

風險資訊

VPR

風險因素: Critical

分數: 9.6

CVSS v2

風險因素: Medium

基本分數: 4.8

時間分數: 4.2

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

CVSS 評分資料來源: CVE-2020-26555

CVSS v3

風險因素: Critical

基本分數: 9.8

時間分數: 9.4

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

時間媒介: CVSS:3.0/E:H/RL:O/RC:C

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

弱點資訊

CPE: p-cpe:/a:oracle:linux:kernel-tools-libs-devel, p-cpe:/a:oracle:linux:rtla, p-cpe:/a:oracle:linux:kernel-devel, p-cpe:/a:oracle:linux:kernel-cross-headers, p-cpe:/a:oracle:linux:kernel-debug-modules, cpe:/a:oracle:linux:9:4:appstream_base, p-cpe:/a:oracle:linux:kernel-tools, p-cpe:/a:oracle:linux:rv, p-cpe:/a:oracle:linux:kernel-debug-devel, cpe:/a:oracle:linux:9::appstream, cpe:/o:oracle:linux:9, p-cpe:/a:oracle:linux:kernel-headers, p-cpe:/a:oracle:linux:kernel-debug-uki-virt, p-cpe:/a:oracle:linux:kernel-debug-modules-core, p-cpe:/a:oracle:linux:kernel-modules, p-cpe:/a:oracle:linux:kernel-debug-devel-matched, p-cpe:/a:oracle:linux:kernel-abi-stablelists, cpe:/a:oracle:linux:9::codeready_builder, p-cpe:/a:oracle:linux:kernel-devel-matched, p-cpe:/a:oracle:linux:kernel-debug, p-cpe:/a:oracle:linux:kernel-core, p-cpe:/a:oracle:linux:kernel-modules-core, p-cpe:/a:oracle:linux:kernel-uki-virt, p-cpe:/a:oracle:linux:libperf, p-cpe:/a:oracle:linux:kernel-debug-modules-extra, p-cpe:/a:oracle:linux:python3-perf, p-cpe:/a:oracle:linux:bpftool, p-cpe:/a:oracle:linux:kernel-debug-core, cpe:/o:oracle:linux:9:4:baseos_base, p-cpe:/a:oracle:linux:perf, p-cpe:/a:oracle:linux:kernel-modules-extra, cpe:/o:oracle:linux:9::baseos_latest, p-cpe:/a:oracle:linux:kernel-tools-libs, p-cpe:/a:oracle:linux:kernel

必要的 KB 項目: Host/local_checks_enabled, Host/RedHat/release, Host/RedHat/rpm-list, Host/OracleLinux

可被惡意程式利用: true

可輕鬆利用: Exploits are available

修補程式發佈日期: 2024/5/2

弱點發布日期: 2021/5/24

CISA 已知遭惡意利用弱點到期日: 2024/6/20

可惡意利用

Core Impact

參考資訊

CVE: CVE-2020-26555, CVE-2022-0480, CVE-2022-38096, CVE-2022-45934, CVE-2023-24023, CVE-2023-25775, CVE-2023-28464, CVE-2023-28866, CVE-2023-31083, CVE-2023-3567, CVE-2023-37453, CVE-2023-39189, CVE-2023-39193, CVE-2023-39194, CVE-2023-39198, CVE-2023-4133, CVE-2023-42754, CVE-2023-42756, CVE-2023-45863, CVE-2023-46862, CVE-2023-51043, CVE-2023-51779, CVE-2023-51780, CVE-2023-52434, CVE-2023-52448, CVE-2023-52476, CVE-2023-52489, CVE-2023-52522, CVE-2023-52529, CVE-2023-52574, CVE-2023-52578, CVE-2023-52580, CVE-2023-52581, CVE-2023-52610, CVE-2023-52620, CVE-2023-6040, CVE-2023-6121, CVE-2023-6176, CVE-2023-6531, CVE-2023-6546, CVE-2023-6622, CVE-2023-6915, CVE-2023-6931, CVE-2023-6932, CVE-2024-0565, CVE-2024-0841, CVE-2024-1085, CVE-2024-1086, CVE-2024-26582, CVE-2024-26583, CVE-2024-26584, CVE-2024-26585, CVE-2024-26586, CVE-2024-26593, CVE-2024-26602, CVE-2024-26609, CVE-2024-26633

IAVA: 2023-A-0638-S