SUSE SLED12 / SLES12 セキュリティ更新 : kernel (SUSE-SU-2024:0925-1)

high Nessus プラグイン ID 192499

Language:

概要

リモートの SUSE ホストに 1 つ以上のセキュリティ更新がありません。

説明

リモートの SUSE Linux SLED12/ SLED_SAP12 / SLES12 / SLES_SAP12 ホストには、SUSE-SU-2024:0925-1 のアドバイザリに記載された複数の脆弱性の影響を受けるパッケージがインストールされています。

- Linux カーネルでは、次の脆弱性が解決されています。i2c: 潜在的な use-after-free を修正します。adap 構造は使用後にのみ解放されます。このパッチは、put_device() をわずかに下へ移動して use-after-free を回避します。[wsa: コードにコメントを追加、修正タグを追加] (CVE-2019-25162)

- Linux カーネルでは、次の脆弱性が解決されています。media: dvbdev: dvb_media_device_free() のメモリリークを修正します。dvb_media_device_free() はメモリをリークしています。include/media/media-device.h に記載されているとおり、NULL に設定する前に「dvbdev->adapter->conn」を解放します。media_entity インスタンス自体は、必要に応じてドライバーによって明示的に解放する必要があります。(CVE-2020-36777)

- Linux カーネルでは、次の脆弱性が解決されています。i2c: cadence。pm_runtime_get_sync が失敗したときの参照漏洩を修正します。関数 cdns_i2c_master_xfer および cdns_reg_slave で戻るときの PM 参照カウントが増分されません。ただし、pm_runtime_get_sync は、失敗した場合でも pm 使用率カウンターを増分します。put 操作を忘れると、ここで参照漏洩が発生します。これを pm_runtime_resume_and_get に置き換えて、使用カウンターのバランスを保ってください。(CVE-2020-36784)

- 5.12.7までの Linux カーネルの kernel/bpf/verifier.c は、ポインター算術演算 (別名 CID-bb01a1bba579) のために間違った制限を強制します。これが悪用されてカーネルメモリで領域外の読み取りと書き込みが行われ、ローカルの権限昇格が引き起こされる可能性があります。特に、まれなケースとして、off reg がマスキング方向の変更を引き起こし、不適切な最終的な aux-> alu_limit が引き起こされることがあります。
(CVE-2021-33200)

- Linux カーネルでは、次の脆弱性が解決されています。HID: usbhid: hid_submit_ctrl の情報漏洩を修正します。hid_submit_ctrl() では、レポートの長さ計算の方法に、report->size がゼロになる可能性が考慮されません。syzkaller 再生装置を実行している場合、サイズが 0 のレポートにより、hid_submit_ctrl) が transfer_buffer_length を 16384 として計算します。この urb が usb コアレイヤーに渡されると、KMSAN が 16384 バイトの情報漏洩を報告します。これを修正するには、まず hid_report_len() を修正し、除算に DIV_ROUND_UP を使用してレポートサイズがゼロの場合に対応させます。次にこれを hid_submit_ctrl() から呼び出します。(CVE-2021-46906)

- Linux カーネルでは、次の脆弱性が解決されています。netfilter: nft_limit: nft_limit_init div_u64() が u64 を u32 で除算する除算エラーを回避します。nft_limit_init() は u64 を u64 で除算するので、適切な math 関数 (div64_u64) を使用します。除算エラー: 0000 [#1] PREEMPT SMP KASAN CPU: 1 PID: 8390 Comm: syz-executor188 Not tainted 5.12.0-rc4-syzkaller #0 ハードウェア名: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 RIP: 0010:div_u64_rem include/linux/math64.h:28 [inline] RIP: 0010:div_u64 include/linux/math64.h:127 [inline] RIP: 0010:nft_limit_init+0x2a2/0x5e0 net/netfilter/nft_limit.c:85 Code: ef 4c 01 eb 41 0f 92 c7 48 89 de e8 38 a5 22 fa 4d 85 ff 0f 85 97 02 00 00 e8 ea 9e 22 fa 4c 0f af f3 45 89 ed 31 d2 4c 89 f0 <49> f7 f5 49 89 c6 e8 d3 9e 22 fa 48 8d 7d 48 48 b8 00 00 00 00 00 RSP: 0018:ffffc90009447198 EFLAGS: 00010246 RAX: 0000000000000000 RBX: 0000200000000000 RCX: 0000000000000000 RDX: 0000000000000000 RSI: ffffffff875152e6 RDI: 0000000000000003 RBP:
ffff888020f80908 R08: 0000200000000000 R09: 0000000000000000 R10: ffffffff875152d8 R11: 0000000000000000 R12: ffffc90009447270 R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 FS:
000000000097a300(0000) GS:ffff8880b9d00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033 CR2: 00000000200001c4 CR3: 0000000026a52000 CR4: 00000000001506e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400 呼出しトレース: nf_tables_newexpr net/netfilter/nf_tables_api.c:2675 [inline] nft_expr_init+0x145/0x2d0 net/netfilter/nf_tables_api.c:2713 nft_set_elem_expr_alloc+0x27/0x280 net/netfilter/nf_tables_api.c:5160 nf_tables_newset+0x1997/0x3150 net/netfilter/nf_tables_api.c:4321 nfnetlink_rcv_batch+0x85a/0x21b0 net/netfilter/nfnetlink.c:456 nfnetlink_rcv_skb_batch net/netfilter/nfnetlink.c:580 [inline] nfnetlink_rcv+0x3af/0x420 net/netfilter/nfnetlink.c:598 netlink_unicast_kernel net/netlink/af_netlink.c:1312 [inline] netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1338 netlink_sendmsg+0x856/0xd90 net/netlink/af_netlink.c:1927 sock_sendmsg_nosec net/socket.c:654 [inline] sock_sendmsg+0xcf/0x120 net/socket.c:674 ____sys_sendmsg+0x6e8/0x810 net/socket.c:2350 ___sys_sendmsg+0xf3/0x170 net/socket.c:2404 __sys_sendmsg+0xe5/0x1b0 net/socket.c:2433 do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46 entry_SYSCALL_64_after_hwframe+0x44/0xae (CVE-2021-46915)

- Linux カーネルでは、次の脆弱性が解決されています。locking/qrwlock。queued_write_lock_slowpath() の順序を修正します。このコードが wait_lock を保持した状態で実行されている間、リーダーが wait_lock を保留しなくてもロックを取得できます。ライター側は、atomic_cond_read_acquire() で値をチェックしてループしますが、実際には順序付けされていない compare-and-exchange が正常に完了した場合にのみ、ロックを取得します。このため、取得と cmpxchg の間のウィンドウが ABA 問題にさらされ、ロック取得に続く読み取りが、書き込みロックが実際に取得される前に投機的に値を監視できるようになります。epoll で、読み取りロックが保持されている間にリーダーが xchg を行うが、書き込みはその下からの値の変更を見ることができるという問題が見られました。ライター | リーダー
-------------------------------------------------------------------------------- ep_scan_ready_list() | |- write_lock_irq() | |- queued_write_lock_slowpath() | |- atomic_cond_read_acquire() | | read_lock_irqsave(&ep->lock, flags); --> (ロック解除前に値を監視) | chain_epi_lockless() | | epi->next = xchg(&ep->ovflist, epi); | | read_unlock_irqrestore(&ep->lock, flags); | | | atomic_cmpxchg_relaxed() | |-- READ_ONCE(ep->ovflist); | コアは、atomic_cmpxchg_relaxed() の前に ovflist の読み取りを命令できます。cmpxchg を取得セマンティクスを使用するように切り替えることでこの問題に対処し、同時に、atomic_cond_read を切り替えて、緩和されたセマンティクスを使用するようにすることができます。[peterz: try_cmpxchg() を使用] (CVE-2021-46921)

- Linux カーネルでは、次の脆弱性が解決されています。NFC: st21nfca: デバイスプローブのメモリ漏洩を修正し、削除します。「phy->pending_skb」はデバイスプローブで割り当てられても、エラー処理のパスで解放されず、パスは削除されません。これにより、次のようなメモリリークが発生します。未参照オブジェクト 0xffff88800bc06800 (size 512): comm 8, pid 11775, jiffies 4295159829 (age 9.032s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<00000000d66c09ce>] __kmalloc_node_track_caller+0x1ed/0x450 [<00000000c93382b3>] kmalloc_reserve+0x37/0xd0 [<000000005fea522c>] __alloc_skb+0x124/0x380 [<0000000019f29f9a>] st21nfca_hci_i2c_probe+0x170/0x8f2 エラー内の 'pending_skb' を解放して削除し、これを修正します。(CVE-2021-46924)

- Linux カーネルでは、次の脆弱性が解決されています。sctp: call_rcu を使用してエンドポイントを解放します。このパッチでは、call_rcu() を呼び出すことでエンドポイントの解放を遅らせ、sctp_sock_dump() 内の別の use-after-free の問題を修正します: BUG: KASAN: use-after-free in __lock_acquire+0x36d9/0x4c20 Call Trace:
__lock_acquire+0x36d9/0x4c20 kernel/locking/lockdep.c:3218 lock_acquire+0x1ed/0x520 kernel/locking/lockdep.c:3844 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:135 [inline]
_raw_spin_lock_bh+0x31/0x40 kernel/locking/spinlock.c:168 spin_lock_bh include/linux/spinlock.h:334 [inline] __lock_sock+0x203/0x350 net/core/sock.c:2253 lock_sock_nested+0xfe/0x120 net/core/sock.c:2774 lock_sock include/net/sock.h:1492 [inline] sctp_sock_dump+0x122/0xb20 net/sctp/diag.c:324 sctp_for_each_transport+0x2b5/0x370 net/sctp/socket.c:5091 sctp_diag_dump+0x3ac/0x660 net/sctp/diag.c:527
__inet_diag_dump+0xa8/0x140 net/ipv4/inet_diag.c:1049 inet_diag_dump+0x9b/0x110 net/ipv4/inet_diag.c:1065 netlink_dump+0x606/0x1080 net/netlink/af_netlink.c:2244 __netlink_dump_start+0x59a/0x7c0 net/netlink/af_netlink.c:2352 netlink_dump_start include/linux/netlink.h:216 [inline] inet_diag_handler_cmd+0x2ce/0x3f0 net/ipv4/inet_diag.c:1170 __sock_diag_cmd net/core/sock_diag.c:232 [inline] sock_diag_rcv_msg+0x31d/0x410 net/core/sock_diag.c:263 netlink_rcv_skb+0x172/0x440 net/netlink/af_netlink.c:2477 sock_diag_rcv+0x2a/0x40 net/core/sock_diag.c:274 この問題は、アソシエーションがピールオフされたときに発生し、旧 sk は asoc->base.sk による取得後、lock_sock(sk) の呼び出し前に解放されます。
sk ホルダーとして sk を解放することを防ぐには、lock_sock() を呼び出す際に ep を動作させておく必要があります。このパッチは、call_rcu() を使用し、sock_put と ep free を sctp_endpoint_destroy_rcu() に移動します。これにより、sctp_transport_traverse_process() の rcu_read_lock で ep を安全に保留できます。sctp_endpoint_hold() が true を返した場合、この ep がまだアクティブであり、保留していたもので、ダンプを続行できることを意味します。false を返した場合、この ep は無効であり、rcu_read_unlock の後に解放できるためスキップします。sctp_sock_dump() で sk をロックした後、この ep が tsp->asoc->ep と異なる場合は、ダンプ中に、この asoc が lock_sock() を呼び出す前にピールオフされており、sk をスキップする必要があることを意味します。この ep が tsp->asoc->ep と同じである場合、この asoc ではピールオフは発生せず、lock_sock により、今後も release_sock までピールオフが発生しないことを意味します。ポートの解放は call_rcu() を呼び出す前に sctp_endpoint_destroy() で発生するため、エンドポイントの解放を遅延させてもポートのリリースは遅延しません。また、call_rcu() によってエンドポイントを解放すると、sctp_assocs_seq_show() および sctp_rcv() の asoc->base.sk による sk へのアクセスが安全になります。
Jones 氏にこの問題の提起を感謝します。v1->v2: 変更ログを改善します。Jakub 氏が述べたとおり、kfree(ep) を sctp_endpoint_destroy_rcu() に追加します。(CVE-2021-46929)

- Linux カーネルでは、次の脆弱性が解決されています。Input: appletouch - デバイス登録前に作業を初期化します。Syzbot が __flush_work() で警告を報告しました。この警告は、work->func == NULL によって発生します。これは、作業の初期化が行われていないことを意味します。これは、input_dev->close() が cancel_work_sync(&dev->work) を呼び出しますが、dev->work の初期化が _after_ input_register_device() 呼び出しで起こるために発生する可能性があります。したがって、このパッチでは、入力デバイスを登録する前に dev->work 初期化を移動します (CVE-2021-46932)

- Linux カーネルでは、次の脆弱性が解決されています。ACPI: GTDT: watchdow プローブエラーでは割り込みマッピングは破損されません。無効なファームウェアプロパティのためにドライバープローブが失敗する場合、GTDT ドライバーは、以前にマップした割り込みのマッピングを解除します。ただし、割り込みのマッピングが実際に成功したかどうかはチェックされません。さらに、GIC SGI 範囲と重複する不正な割り込み番号がファームウェアによって報告された場合、IPI のマッピングが解除され、Dann Frazier 氏による報告のとおり続いて fireworks が発生する可能性があります。ドライバーを修正して動作をわずかに正し、マッピング解除の前に割り込みがマッピングされているかどうかを実際にチェックします。(CVE-2021-46953)

- Linux カーネルでは、次の脆弱性が解決されています。bpf: 負の dst レジスタでのマスキング否定ロジックを修正します。off_reg が dst レジスタにある場合の否定ロジックは正しくなく、加算を単に減算、あるいはその逆に反転することはできません。修正としては、最後のビット単位の and-op を無条件で off_reg から AX に対して実行し、次にポインターを src から dst に移動し、最終的に AX を元のポインター算術演算のソースとして使用し、反転によって正しい結果が得られるようにします。即時ベースの操作ではないため、定数のブラインディングでこれを保持している場合は、その間の単一の非 AX mov が可能です。(CVE-2021-46974)

- Linux カーネルで、次の脆弱性が解決されています。i40e: i40e_client_subtask() のメモリ解放後使用 (Use After Free) を修正します。現在、i40e_client_del_instance の呼び出しではオブジェクト pf->cinst が解放されますが、pf->cinst->lan_info が解放後にアクセスされています可能性があります。欠落している return を追加することで、これを修正します。Addresses-Coverity: (解放後のポインターからの読み取り) (CVE-2021-46991)

- Linux カーネルで、次の脆弱性が解決されています。netfilter: nftables: nft_hash_packets() でのオーバーフローを回避します。32 ビット変数に格納されているバケットの数。nft_hash_buckets() でオーバーフローが発生しないようにする必要があります。syzbot は size == 0x40000000 を挿入し、次のように報告しました。UBSAN: ./include/linux/log2.h:57:13 シフト指数 64 の領域外シフトが 64 ビットタイプの「long unsigned int」に対して大きすぎる。CPU: 1 PID: 29539 Comm: syz-executor.4。汚染されていない 5.12.0-rc7-syzkaller #0。ハードウェア名: Google Google Compute Engine/Google Compute Engine、BIOS Google 01/01/2011 呼び出しトレース: __dump_stack lib/dump_stack.c:79 [inline] dump_stack+0x141/0x1d7 lib/dump_stack.c:120 ubsan_epilogue+0xb/0x5a lib/ubsan.c:148 __ubsan_handle_shift_out_of_bounds.cold+0xb1/0x181 lib/ubsan.c:327 __roundup_pow_of_two include/linux/log2.h:57 [inline] nft_hash_buckets net/netfilter/nft_set_hash.c:411 [inline] nft_hash_estimate.cold+0x19/0x1e net/netfilter/nft_set_hash.c:652 nft_select_set_ops net/netfilter/nf_tables_api.c:3586 [inline] nf_tables_newset+0xe62/0x3110 net/netfilter/nf_tables_api.c:4322 nfnetlink_rcv_batch+0xa09/0x24b0 net/netfilter/nfnetlink.c:488 nfnetlink_rcv_skb_batch net/netfilter/nfnetlink.c:612 [inline] nfnetlink_rcv+0x3af/0x420 net/netfilter/nfnetlink.c:630 netlink_unicast_kernel net/netlink/af_netlink.c:1312 [inline] netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1338 netlink_sendmsg+0x856/0xd90 net/netlink/af_netlink.c:1927 sock_sendmsg_nosec net/socket.c:654 [inline] sock_sendmsg+0xcf/0x120 net/socket.c:674 ____sys_sendmsg+0x6e8/0x810 net/socket.c:2350 ___sys_sendmsg+0xf3/0x170 net/socket.c:2404
__sys_sendmsg+0xe5/0x1b0 net/socket.c:2433 do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46 (CVE-2021-46992)

- Linux カーネルでは、次の脆弱性が解決されています。net:emac/emac-mac: emac_mac_tx_buf_send の use-after-free を修正します。emac_mac_tx_buf_send で、これが emac_tx_fill_tpd(..,skb,..) を呼び出します。emac_tx_fill_tpd() でエラーが発生した場合、skb は dev_kfree_skb(skb) を介して emac_tx_fill_tpd() のエラーブランチで解放されます。ただし、解放された skb は引き続き skb->len を介して netdev_sent_queue(,skb->len) に使用されています。emac_tx_fill_tpd() が skb->len の値を変更していないことを確認できたため、使用中のパッチにより、想定される解放の前に skb->len が「len」に割り当てられ、後で skb->len の代わりに「len」が使用されます。(CVE-2021-47013)

- Linux カーネルでは、次の脆弱性が解決されています。bus: qcom: 戻る前に子ノードを配置します。戻る前に子ノードを配置し、参照カウントの漏洩の可能性を修正します。一般に、子の参照カウントは for_each_available_child_of_node() マクロで自動的に増減されますが、ループ本体でループが破損している場合は手動でカウントする必要があります。(CVE-2021-47054)

- Linux カーネルでは、次の脆弱性が解決されています。RDMA/rxe: 無効な lkey が提供された場合に CQE エラーを返します。RXE に、LOCAL_WRITE エラーの WQE ステータスの更新がありません。これにより、明らかに間違った lkey でアトミック操作が送信された場合に、次のカーネルパニックが発生していました。[leonro@vm ~]$ mkt test test_atomic_invalid_lkey (tests.test_atomic.AtomicTest) ... WARNING: CPU: 5 PID: 263 at drivers/infiniband/sw/rxe/rxe_comp.c:740 rxe_completer+0x1a6d/0x2e30 [rdma_rxe] Modules linked in:
crc32_generic rdma_rxe ip6_udp_tunnel udp_tunnel rdma_ucm rdma_cm ib_umad ib_ipoib iw_cm ib_cm mlx5_ib ib_uverbs ib_core mlx5_core ptp pps_core CPU: 5 PID: 263 Comm: python3 Not tainted 5.13.0-rc1+ #2936 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org04/01/2014 RIP: 0010:rxe_completer+0x1a6d/0x2e30 [rdma_rxe] Code: 03 0f 8e 65 0e 00 00 3b 93 10 06 00 00 0f 84 82 0a 00 00 4c 89 ff 4c 89 44 24 38 e8 2d 74 a9 e1 4c 8b 44 24 38 e9 1c f5 ff ff <0f> 0b e9 0c e8 ff ff b8 05 00 00 00 41 bf 05 00 00 00 e9 ab e7 ff RSP: 0018:ffff8880158af090 EFLAGS: 00010246 RAX:
0000000000000000 RBX: ffff888016a78000 RCX: ffffffffa0cf1652 RDX: 1ffff9200004b442 RSI: 0000000000000004 RDI: ffffc9000025a210 RBP: dffffc0000000000 R08: 00000000ffffffea R09: ffff88801617740b R10:
ffffed1002c2ee81 R11: 0000000000000007 R12: ffff88800f3b63e8 R13: ffff888016a78008 R14: ffffc9000025a180 R15: 000000000000000c FS: 00007f88b622a740(0000) GS:ffff88806d540000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f88b5a1fa10 CR3: 000000000d848004 CR4: 0000000000370ea0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6:
00000000fffe0ff0 DR7: 0000000000000400 Call Trace: rxe_do_task+0x130/0x230 [rdma_rxe] rxe_rcv+0xb11/0x1df0 [rdma_rxe] rxe_loopback+0x157/0x1e0 [rdma_rxe] rxe_responder+0x5532/0x7620 [rdma_rxe] rxe_do_task+0x130/0x230 [rdma_rxe] rxe_rcv+0x9c8/0x1df0 [rdma_rxe] rxe_loopback+0x157/0x1e0 [rdma_rxe] rxe_requester+0x1efd/0x58c0 [rdma_rxe] rxe_do_task+0x130/0x230 [rdma_rxe] rxe_post_send+0x998/0x1860 [rdma_rxe] ib_uverbs_post_send+0xd5f/0x1220 [ib_uverbs] ib_uverbs_write+0x847/0xc80 [ib_uverbs] vfs_write+0x1c5/0x840 ksys_write+0x176/0x1d0 do_syscall_64+0x3f/0x80 entry_SYSCALL_64_after_hwframe+0x44/0xae (CVE-2021-47076)

- Linux カーネルでは、次の脆弱性が解決されています。scsi: qedf: qedf_update_link_speed() にポインターチェックを追加します。次のトレースが確認されました。[ 14.042059] 呼び出しトレース: [ 14.042061] <IRQ> [14.042068] qedf_link_update+0x144/0x1f0 [qedf] [ 14.042117] qed_link_update+0x5c/0x80 [qed] [ 14.042135] qed_mcp_handle_link_change+0x2d2/0x410 [qed] [ 14.042155] ? qed_set_ptt+0x70/0x80 [qed] [ 14.042170] ? qed_set_ptt+0x70/0x80 [qed] [ 14.042186] ? qed_rd+0x13/0x40 [qed] [ 14.042205] qed_mcp_handle_events+0x437/0x690 [qed] [ 14.042221] ? qed_set_ptt+0x70/0x80 [qed] [ 14.042239] qed_int_sp_dpc+0x3a6/0x3e0 [qed] [ 14.042245] tasklet_action_common.isra.14+0x5a/0x100 [ 14.042250]
__do_softirq+0xe4/0x2f8 [ 14.042253] irq_exit+0xf7/0x100 [ 14.042255] do_IRQ+0x7f/0xd0 [ 14.042257] common_interrupt+0xf/0xf [ 14.042259] </IRQ> API qedf_link_update() が QED から呼び出されていますが、その時点では shost_data は初期化されていません。このため、supported_speeds の更新中に shost_data を逆参照しようとすると、NULL ポインターデリファレンスが発生します。shost_data を逆参照する前の NULL ポインターチェックを追加します。
(CVE-2021-47077)

- Linux カーネルでは、次の脆弱性が解決されています。RDMA/rxe: 作成に失敗した場合、すべての QP フィールドをクリアします。rxe_qp_do_cleanup() は正しく作成されたものについては、QP の有効なポインター値を利用しますが、rxe_qp_from_init() が失敗した場合はガベージが入力され、次のエラーが発生します。
refcount_t: underflow; use-after-free. WARNING: CPU: 1 PID: 12560 at lib/refcount.c:28 refcount_warn_saturate+0x1d1/0x1e0 lib/refcount.c:28 Modules linked in: CPU: 1 PID: 12560 Comm: syz-executor.4 Not tainted 5.12.0-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 RIP: 0010:refcount_warn_saturate+0x1d1/0x1e0 lib/refcount.c:28 Code: e9 db fe ff ff 48 89 df e8 2c c2 ea fd e9 8a fe ff ff e8 72 6a a7 fd 48 c7 c7 e0 b2 c1 89 c6 05 dc 3a e6 09 01 e8 ee 74 fb 04 <0f> 0b e9 af fe ff ff 0f 1f 84 00 00 00 00 00 41 56 41 55 41 54 55 RSP:
0018:ffffc900097ceba8 EFLAGS: 00010286 RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000 RDX: 0000000000040000 RSI: ffffffff815bb075 RDI: fffff520012f9d67 RBP: 0000000000000003 R08:
0000000000000000 R09: 0000000000000000 R10: ffffffff815b4eae R11: 0000000000000000 R12: ffff8880322a4800 R13: ffff8880322a4940 R14: ffff888033044e00 R15: 0000000000000000 FS: 00007f6eb2be3700(0000) GS:ffff8880b9d00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2:
00007fdbe5d41000 CR3: 000000001d181000 CR4: 00000000001506e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace:
__refcount_sub_and_test include/linux/refcount.h:283 [inline] __refcount_dec_and_test include/linux/refcount.h:315 [inline] refcount_dec_and_test include/linux/refcount.h:333 [inline] kref_put include/linux/kref.h:64 [inline] rxe_qp_do_cleanup+0x96f/0xaf0 drivers/infiniband/sw/rxe/rxe_qp.c:805 execute_in_process_context+0x37/0x150 kernel/workqueue.c:3327 rxe_elem_release+0x9f/0x180 drivers/infiniband/sw/rxe/rxe_pool.c:391 kref_put include/linux/kref.h:65 [inline] rxe_create_qp+0x2cd/0x310 drivers/infiniband/sw/rxe/rxe_verbs.c:425 _ib_create_qp drivers/infiniband/core/core_priv.h:331 [inline] ib_create_named_qp+0x2ad/0x1370 drivers/infiniband/core/verbs.c:1231 ib_create_qp include/rdma/ib_verbs.h:3644 [inline] create_mad_qp+0x177/0x2d0 drivers/infiniband/core/mad.c:2920 ib_mad_port_open drivers/infiniband/core/mad.c:3001 [inline] ib_mad_init_device+0xd6f/0x1400 drivers/infiniband/core/mad.c:3092 add_client_context+0x405/0x5e0 drivers/infiniband/core/device.c:717 enable_device_and_get+0x1cd/0x3b0 drivers/infiniband/core/device.c:1331 ib_register_device drivers/infiniband/core/device.c:1413 [inline] ib_register_device+0x7c7/0xa50 drivers/infiniband/core/device.c:1365 rxe_register_device+0x3d5/0x4a0 drivers/infiniband/sw/rxe/rxe_verbs.c:1147 rxe_add+0x12fe/0x16d0 drivers/infiniband/sw/rxe/rxe.c:247 rxe_net_add+0x8c/0xe0 drivers/infiniband/sw/rxe/rxe_net.c:503 rxe_newlink drivers/infiniband/sw/rxe/rxe.c:269 [inline] rxe_newlink+0xb7/0xe0 drivers/infiniband/sw/rxe/rxe.c:250 nldev_newlink+0x30e/0x550 drivers/infiniband/core/nldev.c:1555 rdma_nl_rcv_msg+0x36d/0x690 drivers/infiniband/core/netlink.c:195 rdma_nl_rcv_skb drivers/infiniband/core/netlink.c:239 [inline] rdma_nl_rcv+0x2ee/0x430 drivers/infiniband/core/netlink.c:259 netlink_unicast_kernel net/netlink/af_netlink.c:1312 [inline] netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1338 netlink_sendmsg+0x856/0xd90 net/netlink/af_netlink.c:1927 sock_sendmsg_nosec net/socket.c:654 [inline] sock_sendmsg+0xcf/0x120 net/socket.c:674 ____sys_sendmsg+0x6e8/0x810 net/socket.c:2350
___sys_sendmsg+0xf3/0x170 net/socket.c:2404 __sys_sendmsg+0xe5/0x1b0 net/socket.c:2433 do_syscall_64+0x3a/0xb0 arch/x86/entry/common.c:47 entry_SYSCALL_64_after_hwframe+0 ---truncated--- (CVE-2021-47078)

- sock.c の lock_sock_nested では、競合状態によるメモリ解放後使用 (Use-After-Free) の可能性があります。これにより、システム実行権限が必要なローカルでの権限昇格が引き起こされる可能性があります。ユーザー操作が不要な悪用が可能です。製品: Android。バージョン: Android kernel。Android ID: A-174846563References: Upstream kernel (CVE-2022-20154)

- Linux カーネルでは、以下の脆弱性が解決されています。vt: バッファで char を削除するときのメモリオーバーラッピングを修正します。長い行を削除する際に、メモリオーバーラッピングのコピーが発生します。宛先バッファがソースバッファと重複する場合、memcpy はその動作を保証しないため、scr_memcpyw が memcpy に対して最適化されていると、このメモリ重複コピーによってデータが破損する可能性があります。memcpy は結果が確定的ではないハードウェアアクセラレーションを利用するため、ラインバッファは常に破損しているとは限りません。
scr_memcpyw の scr_memmovew への置き換えを利用し、この問題を修正します。(CVE-2022-48627)

- 一部の Intel(R) Atom(R) プロセッサの一部のレジスタファイルからの一時的な実行後のマイクロアーキテクチャ状態を介した情報漏洩により、認証されたユーザーがローカルアクセスを介して情報漏洩を可能にする可能性があります。(CVE-2023-28746)

- 6.3.8までの Linux カーネルで問題が発見されました。drivers/net/ethernet/renesas/ravb_main.c の ravb_remove に、メモリ解放後使用 (Use-After-Free) が見つかりました。(CVE-2023-35827)

- 6.5.9 より前の Linux カーネルには、net/nfc/nci/spi.c の send_acknowledge に NULL ポインターデリファレンスがあります。(CVE-2023-46343)

- ルーターは、大きすぎて次のホップに送信できない IPv6 パケットに遭遇すると、ICMP6 大きすぎるパケット (PTB) メッセージを送信者に返します。送信者はこの更新された Maximum Transmission Unit (MTU) をキャッシュし、その後同じホストにルーティングするときにこの値を超えないようにします。(CVE-2023-52340)

- 6.7.4 までの Linux カーネルの drivers/md/dm-table.c 内の dm_table_create は、dm_ioctl.target_count 構造のチェックがないため、(alloc_targets で) INT_MAX バイトを超えて割り当てようとして、クラッシュする可能性があります。(CVE-2023-52429)

- Linux カーネルで、以下の脆弱性が解決されています。apparmor: 解析されたプロファイル名が空の場合にクラッシュを回避します。unpack_profile() でパックされたプロファイルを処理する際に、profile :ns::samba-dcerpcd /usr/lib*/samba/{,samba/}samba-dcerpcd {...} のように記述されます。文字列 :samba-dcerpcd が完全修飾名として解凍され、aa_splitn_fqname() に渡されます。aa_splitn_fqname() は、名前空間のみを含むものとして :samba-dcerpcd を扱います。したがって、tmpname に対して NULL を返しますが、tmpns は非 NULL です。新しいプロファイル名が現在 NULL であるため、後で aa_alloc_profile() がクラッシュします。一般保護違反、おそらく非標準アドレス 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN NOPTI KASAN: 範囲 [0x0000000000000000-0x0000000000000007] の null-ptr-deref CPU: 6 PID: 1657 Comm: apparmor_parser 汚染されていない 6.7.0-rc2-dirty #16 ハードウェア名: QEMU Standard PC (i440FX + PIIX、1996)、BIOS rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014 RIP: 0010:strlen+0x1e/0xa0 呼び出しトレース: <TASK> ? strlen+0x1e/0xa0 aa_policy_init+0x1bb/0x230 aa_alloc_profile+0xb1/0x480 unpack_profile+0x3bc/0x4960 aa_unpack+0x309/0x15e0 aa_replace_profiles+0x213/0x33c0 policy_update+0x261/0x370 profile_replace+0x20e/0x2a0 vfs_write+0x2af/0xe00 ksys_write+0x126/0x250 do_syscall_64+0x46/0xf0 entry_SYSCALL_64_after_hwframe+0x6e/0x76 </TASK> ---[ end trace 0000000000000000 ]--- RIP:
0010:strlen+0x1e/0xa0 aa_splitn_fqname() のこのような動作は予期されるものであり、呼び出される他の場所 (aa_remove_profiles など) でチェックされるようです。次のプロファイルのない ns 名が内部で許可されているという明示的なコメントがあります。AFAICS、解凍された名前が「samba-dcerpcd - ユーザー空間から渡される」のような形式になることを妨げるものはありません。このような場合、プロファイルセット全体の置換を拒否し、EPROTO および説明メッセージをユーザーに通知します。Linux Verification Center (linuxtesting.org) による発見。
(CVE-2023-52443)

- Linux カーネルでは、次の脆弱性が解決されています。メディア: pvrusb2: コンテキスト切断時のメモリ解放後使用 (Use After Free) を修正します。モジュールがロードされると、pvr2_context_thread_func 関数をターゲットとする kthread が作成されます。これにより、pvr2_context_destroy を呼び出し、コンテキストオブジェクトで kfree() を呼び出す可能性があります。ただし、これは usb hub_event ハンドラーがドライバーに通知できるようになる前に発生する可能性があります。このパッチは、syzbot により報告される無効な読み取りの前に、コンテキスト切断コールスタック内でのサニティチェックを追加します。(CVE-2023-52445)

- Linux カーネルでは、次の脆弱性が解決されています。mtd: ftl notifier によって引き起こされた gluebi NULL ポインターデリファレンスを修正します。ftl.ko と gluebi.ko の両方がロードされている場合、ftl の通知子が、gluebi_read() の gluebi->desc' にアクセスを試みる際に、NULL ポインターデリファレンスをトリガーします。ubi_gluebi_init ubi_register_volume_notifier ubi_enumerate_volumes ubi_notify_all gluebi_notify nb->notifier_call() gluebi_create mtd_device_register mtd_device_parse_register add_mtd_device blktrans_notify_add not->add() ftl_add_mtd tr->add_mtd() scan_header mtd_read mtd_read_oob mtd_read_oob_std gluebi_read mtd->read() gluebi->desc - NULL Detailed の複製情報はリンク [1] で入手可能です。通常の場合、gluebi_get_device() で gluebi->desc を取得し、gluebi_read() で gluebi->desc にアクセスします。ただし、gluebi_get_device() が ftl_add_mtd() プロセスで事前に実行されないため、NULL ポインターデリファレンスが発生します。gluebi モジュールのソリューションは、ftl または mtdblock との連携を考慮せずに、UBI ボリュームで jffs2 を実行することです [2]。したがって、MTD_UBIVOLUME タイプの mtd パーティションを作成した後にgluebi が mtdblock デバイスを作成しないようにすることで、この問題を回避できます。(CVE-2023-52449)

- Linux カーネルで、次の脆弱性が解決されています。powerpc/pseries/memhp: drmem 配列の終端を超えたアクセスを修正します。LMB 検索が特定の DRC インデックスによるエントリと一致しない場合、dlpar_memory_remove_by_index() が drmem lmb 配列の境界を超えてアクセスする可能性があります。検索が失敗すると、カーソルは &drmem_info->lmbs[drmem_info->n_lmbs] を指したままになります。これは、配列の最後の有効なエントリの後の 1 要素です。関数の末尾にあるデバッグメッセージは、このポインターを逆参照します。
pr_debug(%llx\n、lmb->base_addr でメモリをホットリムーブすることに失敗しました)。これは、検査の結果見つかり、KASAN で確認されました。pseries-hotplug-mem: LMB をホットリムーブしようとします、drc index 1234 ================================================================== BUG: KASAN: dlpar_memory+0x298/0x1658 の slab-out-of-bounds タスク bash/949 dump_stack_lvl+0xa4/0xfc (信頼できない) による addr c000000364e97fd0 でのサイズ 8 の読み取り
__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 Allocated by task 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 バグのあるアドレスは、13kloc のサイズ 131072 のキャッシュ kmalloc-128k に属する c000000364e80000 のオブジェクトに属します。バグのあるアドレスは、割り当てられた 98256 バイトの領域[c000000364e80000、c000000364e97fd0) の右の 0 バイトに配置されています ================================================================== 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: error: 'strncat' specified bound 1024 equals destination size [-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() と同じように動作することを期待していました。これは、ソースバッファの長さではなく、宛先バッファのサイズを 3 番目の引数として使用します。その結果、割り当てられたバッファのサイズはチェックされません。これを strlcat() に変更します。[ bp: コンパイラ出力をトリミングし、コミットメッセージを修正。] (CVE-2023-52464)

- Linux カーネルでは、次の脆弱性が解決されています。入力: powermate: powermate_config_complete の use-after-free を修正します。syzbot が powermate ドライバー内で use-after-free のバグ [1] を検出しました。これはデバイスが切断されたときに発生し、メモリが powermate_device 構造体から解放されます。
kfree とそのコールバックが呼び出された後に非同期コントロールメッセージが完了すると、ロックが存在しなくなるためバグが発生します。デバイスの切断時に、pm->config で usb_kill_urb() を使用して、進行中のリクエストをキャンセルします。[1] (https://syzkaller.appspot.com/bug?extid=0434ac83f907a1dbdd1e(CVE-2023-52475)

- Linux カーネルで、次の脆弱性が解決されています。HID: logitech-hidpp: レシーバー USB 切断時のカーネルクラッシュを修正。hidpp_connect_event() は競合状態にある時 4 回の time-of-check vs time-of-use (TOCTOU) の競合状態が発生します。hidpp_connect_event() は主に作業キューから実行されますが、probe() でも実行されます。hidpp_connect_event() を実行しているスレッドがハードウェアで待機しているときに、デバイス接続パケットがハードウェアによって受信された場合は、probe() から 2 番目のスレッドで実行中の hidpp_connect_event() が作業キューから開始されます。これは以下の競合を開きます (以下のコードは簡略化されています)。1. プロトコルの取得 + 印刷 (無害な競合): if (!hidpp->protocol_major) {hidpp_root_get_protocol_version() hidpp->protocol_major = response.rap.params[0 ];この競合は実際に、接続された HID++ [] デバイスに添付された abrt 出力の dmesg で確認できます rhbz#2227968: [ 3064.624215] logitech-hidpp-device 0003:046D:4071.0049: HID++ 4.5。[3064.658184] logitech-hidpp-device 0003:046D:4071.0049:HID++ 4.5 デバイスが接続されました。追加のロギングを追加してテストしたところ、この後 2 つのスレッドが順番に hw アクセス mutex (send_mutex) を取得するため、他のすべての TOCTOU のケースで ping-pong を行うことができます。(無害な競合) : if (hidpp->name == hdev->name) { ... hidpp->name = new_name; 3. バッテリーの power_suspend クラスの初期化 (問題あり!): hidpp_initialize_battery() { if (hidpp->battery.ps) が 0 を返します。probe_battery(); /* ブロック、スレッドが順番にこれを実行します */ hidpp->battery.desc.properties = devm_kmemdup(dev, hidpp_battery_props, cnt, GFP_KERNEL); hidpp->battery.ps = devm_power_ emerge_register(&hidpp->hid_dev->dev, &hidpp->battery.desc, cfg); 4. 遅延した input_device の作成 (問題がある可能性があります): if (hidpp->delayed_input) return; hidpp->delayed_input = hidpp_allocate_input(hdev);ここでの本当に大きな問題は 3 です。競合状態になると、次のシーケンスになります。hidpp->battery.desc.properties = devm_kmemdup(dev, hidpp_battery_props, cnt, GFP_KERNEL);
hidpp->battery.ps = devm_power_supply_register(&hidpp->hid_dev->dev, &hidpp->battery.desc, cfg); ...
hidpp->battery.desc.properties = devm_kmemdup(dev, hidpp_battery_props, cnt, GFP_KERNEL);
hidpp->battery.ps = devm_power_supply_register(&hidpp->hid_dev->dev, &hidpp->battery.desc, cfg); そのため、同じバッテリーに対して 2 つの電源を登録しました。ユーザー空間の pov からは少し異常に見えますが、これは大きな問題ではありません。方法をご覧ください。1. これはすべて devm-maganaged です。2. hidpp->battery.desc 構造体は 2 つの電源で共有されています。3. hidpp->battery.desc.properties は 2 番目の devm_kmemdup() の結果を指し示しています。そのためレシーバーの USB 切断時に use-after-free が発生します。1. 最後に登録された電源クラスのデバイスが登録解除されます。2. 最後の devm_kmemdup() 呼び出しからのメモリが解放され、hidpp->battery.desc.properties が解放されたメモリを指すようになります。3. 最初に登録された電源クラスのデバイスが登録解除されます。これによって remove uevent もユーザー空間へ送信され、power_ emerge_uevent() が呼び出され、uevent データが入力されます。4. power_ emerge_uevent() は、hidpp->battery.desc.properties を使用します。これは次のように、解放されたメモリを指します。Sep 22 20:01:35 eric kernel: BUG: unable to handle page fault for address: ffffb2140e017f08 ... Sep 22 20:01:35 eric kernel: Workqueue: usb_hub_wq hub_event Sep 22 20:01:35 eric kernel: RIP:
0010:power_ emerge_uevent+0xee/0x1d0 ... Sep 22 20:01:35 eric kernel: ? asm_exc_page_fault+0x26/0x30 Sep 22 20:01:35 eric kernel: ? power_supply_uevent+0xee/0x1d0 Sep 22 20:01:35 eric kernel: ? power_supply_uevent+0x10d/0x1d0 Sep 22 20:01:35 eric kernel: dev_uevent+0x10f/0x2d0 Sep 22 20:01:35 eric kernel: kobject_uevent_env+0x291/0x680 Sep 22 20:01:35 eric kernel: ---truncated--- (CVE-2023-52478)

- Linux カーネルでは、次の脆弱性が解決されています。x86/srso: Hygon プロセッサに SRSO 緩和策を追加します。Hygon プロセッサにも存在する投機的リターンスタックのオーバーフローの脆弱性に対して緩和策を追加します。(CVE-2023-52482)

- Linux カーネルで、次の脆弱性が解決されました。net: nfc: nfc_llcp_sock_get() および nfc_llcp_sock_get_sn() の競合を修正します。Sili Luo 氏が、UAF につながる、nfc_llcp_sock_get() の競合を報告しました。ロックを保持している間にルックアップで見つかったソケットの参照の取得は、ロックを解放する前に行う必要があります。nfc_llcp_sock_get_sn() にも同様の問題があります。最後に、nfc_llcp_recv_snl() は、nfc_llcp_sock_from_sn() が見つけたソケットが消えないようにする必要があります。(CVE-2023-52502)

- Linux カーネルでは、次の脆弱性が解決されています。wifi: mac80211: 潜在的なキーの use-after-free を修正します。ieee80211_key_link() が ieee80211_gtk_rekey_add() によって呼び出されますが、KRACK 保護 (同一キーの再インストール) のために 0 が返されると、ieee80211_gtk_rekey_add() はそのまま潜在的な use-after-free のキーにポインターを返します。これは独自に KRACK 保護されている WoWLAN rekey オフロードの場合にのみ iwlwifi によって呼び出されるため、通常は発生しませんが、修正が推奨されます。そのためには、エラーコードを返し、それを cfg80211 境界でのみ実行できるようにし、ieee80211_gtk_rekey_add() の不適切な呼び出し元のエラーを残すように変換します。(CVE-2023-52530)

- Linux カーネルでは、次の脆弱性が解決されています。wifi: iwlwifi: mvm: メモリ破損の問題を修正します。数行上では、スペースが sizeof(struct iwl_nvm_data) + sizeof(struct ieee80211_channel) + sizeof(struct ieee80211_rate) に対して kzalloc() されます。「mvm->nvm_data」は「struct iwl_nvm_data」であるため問題ありません。この構造の最後には、「channels」flex 配列があります。各要素のタイプは「struct ieee80211_channel」です。したがって、この配列には 1 つの要素のみが割り当てられます。次の場合に実行します。
mvm->nvm_data->bands[0].channels = mvm->nvm_data->channels; 「channels」flex 配列の最初の要素をポイントします。これで問題ありません。ただし、(u8 *) キャストのために mvm->nvm_data->bands[0].bitrates = (void
*)((u8 *)mvm->nvm_data->channels + 1) を実行する場合、flex 配列の開始アドレスに 1 のみを追加します。直後に割り当てられた「struct ieee80211_rate」を指し示す場合と同じです。ポインター演算が想定どおりに動作するように偽のキャスティングを削除します。(CVE-2023-52531)

- Linux カーネルでは、次の脆弱性が解決されています。net: mana: TX CQE エラー処理を修正します。未知の TX CQE エラータイプ (おそらく新しいハードウェアのもの) については引き続き SKB を解放し、キューの末尾等を更新します。そうでない場合、説明に誤りが生じます。また、破損したパケットのインジェクションによって TX エラーがトリガーされる可能性があるため、WARN_ONCE をレート制限したエラーログに置き換えます。(CVE-2023-52532)

- Linux カーネルでは、次の脆弱性が解決されています。team: チームのデバイスタイプが変更される際に、null-ptr-deref を修正します。再生装置 [1] で次のように null-ptr-deref バグを取得します。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 チームデバイスに vlan デバイスをスレーブし、チームデバイスのタイプが non-ether から ether に変更されると、チームデバイスの header_ops が vlan_header_ops に変更されます。これは正しくなく、チームデバイスが vlan デバイスではないため、vlan_dev_hard_header() で vlan->real_dev に対して null-ptr-deref が発生します。team_setup() で eth_header_ops をキャッシュしてから、タイプが non-ether から ether に変更されたときに、キャッシュされた header_ops をチームネットデバイスの header_ops に割り当てて、バグを修正します。(CVE-2023-52574)

- Linux カーネルでは、次の脆弱性が解決されています。KVM: s390: fpc レジスターの設定を修正します kvm_arch_vcpu_ioctl_set_fpu() により、ゲスト cpu の浮動小数点コントロール (fpc) レジスターを設定できます。新しい値は、一時的に fpc レジスターにロードされることで、有効性がテストされます。これにより、ホストプロセスの fpc レジスターの破損が発生する可能性があります。値が fpc レジスターに一時的にロードされているときに割り込みが発生し、割り込みコンテキスト内で浮動小数点またはベクトルレジスターが使用されている場合、現在の fp/vx レジスターは save_fpu_regs() で保存され、それらがユーザー空間に属しており、ユーザー空間に戻るときに fp/vx レジスタにロードされると想定しています。test_fp_ctl() は、元のユーザー空間/ホストプロセスの fpc レジスタ値を復元しますが、ユーザー空間に戻る際に破棄されます。その結果、ホストプロセスは、ゲスト cpu に使用されることになっている値で、間違って実行し続けます。
テストを削除するだけでこれを修正できます。SIE コンテキストが入力される直前に、無効な値を処理する別のテストがあります。これにより、動作が変更されます。ioctl が -EINVAL で失敗するのではなく、無効な値が受け入れられます。このインターフェースが今後使用されない可能性が高いこと、さらに、これはメモリマップドインターフェースに実装された同じ動作であるため、これは許容可能であると思われます (無効な値をゼロに置換) - kvm-s390.c の sync_regs() を参照してください。(CVE-2023-52597)

- 拒否された理由: この CVE ID は、CVE Numbering Authority により拒否または撤回されました。
(CVE-2023-52605)

- Linux カーネルの Netfilter サブシステムで欠陥が発見されました。問題は nft_byteorder_eval() 関数にあり、コードがループを繰り返して「dst」配列に書き込みます。各反復で 8 バイトが書き込まれますが、「dst」は u32 の配列であるため、各要素には 4 バイト分のスペースしかありません。つまり、反復するたびに前の要素の一部が上書きされ、この u32 の配列が破損してしまいます。この欠陥により、ローカルユーザーがサービス拒否を引き起こしたり、NetFilter の機能を破壊したりする可能性があります。(CVE-2024-0607)

- Linux カーネルの Open vSwitch サブコンポーネントで、脆弱性が報告されました。この欠陥は、コードプッシュの再帰操作が再帰的にコードブロックを呼び出すときに発生します。OVS モジュールがスタックの深さを検証しないため、多くのフレームをプッシュし、スタックオーバーフローが発生します。その結果、クラッシュまたはその他の関連する問題が発生する可能性があります。(CVE-2024-1151)

- 6.7.1 までの Linux カーネルの net/rds/af_rds.c の rds_recv_track_latency に、RDS_MSG_RX_DGRAM_TRACE_MAX の比較に off-by-one のエラーがあり、領域外アクセスが発生する可能性があります。(CVE-2024-23849)

- 6.7.1 までの Linux カーネルの drivers/md/dm-ioctl.c の copy_params は、param_kernel->data_size チェックがないため、INT_MAX バイトを超える割り当てを試みてクラッシュする可能性があります。これは、ctl_ioctl に関連しています。(CVE-2024-23851)

- Linux カーネルでは、次の脆弱性が解決されています。tls: tx 作業スケジュールとソケットクローズの間の競合を修正します。以前のコミットと同様、送信中のスレッド (recvmsg/sendmsg) が、非同期暗号ハンドラーが complete() を呼び出すとすぐに終了する可能性があります。complete() を呼び出す前に作業のスケジュールを並べ替えます。これは、送信スレッドが行うことの逆の順序であるため、第一に、より論理的に思えます。(CVE-2024-26585)

- Linux カーネルでは、次の脆弱性が解決されています: mlxsw: spectrum_acl_tcam: エラーパスの NULL ポインターデリファレンスを修正します。ACL グループに領域を添付することに失敗した後にエラーパスから mlxsw_sp_acl_tcam_region_destroy() を呼び出すと、「region->group->tcam」で NULL ポインターデリファレンスになります [1]。mlxsw_sp_acl_to_tcam() を使用して 'tcam' ポインターを取得します。[1] BUG: kernel NULL pointer dereference, address: 0000000000000000 [...] RIP: 0010:mlxsw_sp_acl_tcam_region_destroy+0xa0/0xd0 [...] Call Trace: mlxsw_sp_acl_tcam_vchunk_get+0x88b/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-26595)

- Linux カーネルで、次の脆弱性は解決されています。phy: ti: phy-omap-usb2: SRP の NULL ポインターデリファレンスを修正します phy-omap-usb2 と連動する外部 phy が send_srp() を実装しない場合でも、まだそれを呼び出そうとする可能性があります。これは、ウェイクアップをトリガーするアイドル状態のイーサネットガジェットで発生する可能性があります。例: configfs-gadget.g1 gadget.0: ECM 一時停止 configfs-gadget.g1 gadget.0: ポート一時停止。
ウェイクアップをトリガーしています... 実行時に仮想アドレス 00000000 でカーネル NULL ポインターデリファレンスを処理できません ... PC は musb_gadget_wakeup+0x1d4/0x254 [musb_hdrc] で 0x0 LR です ... musb_gadget_wakeup [musb_hdrc] from usb_gadget_wakeup+0x1c/0x3c [udc_core] usb_gadget_wakeup [udc_core] from eth_start_xmit+0x3b0/0x3d4 [u_ether] eth_start_xmit [u_ether] from dev_hard_start_xmit+0x94/0x24c dev_hard_start_xmit from sch_direct_xmit+0x104/0x2e4 sch_direct_xmit from __dev_queue_xmit+0x334/0xd88
__dev_queue_xmit from arp_solicit+0xf0/0x268 arp_solicit from neigh_probe+0x54/0x7c neigh_probe from
__neigh_event_send+0x22c/0x47c __neigh_event_send from neigh_resolve_output+0x14c/0x1c0 neigh_resolve_output from ip_finish_output2+0x1c8/0x628 ip_finish_output2 from ip_send_skb+0x40/0xd8 ip_send_skb from udp_send_skb+0x124/0x340 udp_send_skb from udp_sendmsg+0x780/0x984 udp_sendmsg from
__sys_sendto+0xd8/0x158 __sys_sendto from ret_fast_syscall+0x0/0x58 それらを呼び出す前に send_srp() と set_vbus() をチェックすることで、この問題を修正しましょう。USB 周辺機器のみの場合、これらは両方とも NULL になる可能性があります。
(CVE-2024-26600)

- Linux カーネルでは、次の脆弱性が解決されています。tomoyo: tomoyo_write_control() の UAF 書き込みバグを修正します。長い行の write() がリクエストされたとき、tomoyo_write_control() は head->write_buf を更新するので、head->io_sem が保留された後 head->write_buf を取得する必要があります。そうしないと、write() の同時リクエストが use-after-free-write と二重解放の問題を引き起こす可能性があります。(CVE-2024-26622)

Nessus はこれらの問題をテストしておらず、代わりにアプリケーションが自己報告するバージョン番号にのみ依存していることに注意してください。

ソリューション

影響を受けるパッケージを更新してください。

参考資料

https://bugzilla.suse.com/1050549

https://bugzilla.suse.com/1186484

https://bugzilla.suse.com/1200599

https://bugzilla.suse.com/1212514

https://bugzilla.suse.com/1213456

https://bugzilla.suse.com/1218450

https://bugzilla.suse.com/1218527

https://bugzilla.suse.com/1218915

https://bugzilla.suse.com/1219127

https://bugzilla.suse.com/1219146

https://bugzilla.suse.com/1219295

https://bugzilla.suse.com/1219653

https://bugzilla.suse.com/1219827

https://bugzilla.suse.com/1219835

https://bugzilla.suse.com/1220187

https://bugzilla.suse.com/1220238

https://bugzilla.suse.com/1220240

https://bugzilla.suse.com/1220241

https://bugzilla.suse.com/1220250

https://bugzilla.suse.com/1220330

https://bugzilla.suse.com/1220340

https://bugzilla.suse.com/1220344

https://bugzilla.suse.com/1220409

https://bugzilla.suse.com/1220421

https://bugzilla.suse.com/1220436

https://bugzilla.suse.com/1220444

https://bugzilla.suse.com/1220459

https://bugzilla.suse.com/1220468

https://bugzilla.suse.com/1220482

https://bugzilla.suse.com/1220526

https://bugzilla.suse.com/1220570

https://bugzilla.suse.com/1220575

https://bugzilla.suse.com/1220599

https://bugzilla.suse.com/1220607

https://bugzilla.suse.com/1220613

https://bugzilla.suse.com/1220638

https://bugzilla.suse.com/1220641

https://bugzilla.suse.com/1220649

https://bugzilla.suse.com/1220700

https://bugzilla.suse.com/1220735

https://bugzilla.suse.com/1220767

https://bugzilla.suse.com/1220796

https://bugzilla.suse.com/1220825

https://bugzilla.suse.com/1220831

https://bugzilla.suse.com/1220845

https://bugzilla.suse.com/1220860

https://bugzilla.suse.com/1220861

https://bugzilla.suse.com/1220863

https://bugzilla.suse.com/1220870

https://bugzilla.suse.com/1220930

https://bugzilla.suse.com/1220931

https://bugzilla.suse.com/1220932

https://bugzilla.suse.com/1220957

https://bugzilla.suse.com/1221039

https://bugzilla.suse.com/1221040

https://bugzilla.suse.com/1221287

http://www.nessus.org/u?8f52227e

https://www.suse.com/security/cve/CVE-2019-25162

https://www.suse.com/security/cve/CVE-2020-36777

https://www.suse.com/security/cve/CVE-2020-36784

https://www.suse.com/security/cve/CVE-2021-33200

https://www.suse.com/security/cve/CVE-2021-46906

https://www.suse.com/security/cve/CVE-2021-46915

https://www.suse.com/security/cve/CVE-2021-46921

https://www.suse.com/security/cve/CVE-2021-46924

https://www.suse.com/security/cve/CVE-2021-46929

https://www.suse.com/security/cve/CVE-2021-46932

https://www.suse.com/security/cve/CVE-2021-46953

https://www.suse.com/security/cve/CVE-2021-46974

https://www.suse.com/security/cve/CVE-2021-46991

https://www.suse.com/security/cve/CVE-2021-46992

https://www.suse.com/security/cve/CVE-2021-47013

https://www.suse.com/security/cve/CVE-2021-47054

https://www.suse.com/security/cve/CVE-2021-47076

https://www.suse.com/security/cve/CVE-2021-47077

https://www.suse.com/security/cve/CVE-2021-47078

https://www.suse.com/security/cve/CVE-2022-20154

https://www.suse.com/security/cve/CVE-2022-48627

https://www.suse.com/security/cve/CVE-2023-28746

https://www.suse.com/security/cve/CVE-2023-35827

https://www.suse.com/security/cve/CVE-2023-46343

https://www.suse.com/security/cve/CVE-2023-52340

https://www.suse.com/security/cve/CVE-2023-52429

https://www.suse.com/security/cve/CVE-2023-52443

https://www.suse.com/security/cve/CVE-2023-52445

https://www.suse.com/security/cve/CVE-2023-52449

https://www.suse.com/security/cve/CVE-2023-52451

https://www.suse.com/security/cve/CVE-2023-52464

https://www.suse.com/security/cve/CVE-2023-52475

https://www.suse.com/security/cve/CVE-2023-52478

https://www.suse.com/security/cve/CVE-2023-52482

https://www.suse.com/security/cve/CVE-2023-52502

https://www.suse.com/security/cve/CVE-2023-52530

https://www.suse.com/security/cve/CVE-2023-52531

https://www.suse.com/security/cve/CVE-2023-52532

https://www.suse.com/security/cve/CVE-2023-52574

https://www.suse.com/security/cve/CVE-2023-52597

https://www.suse.com/security/cve/CVE-2023-52605

https://www.suse.com/security/cve/CVE-2024-0607

https://www.suse.com/security/cve/CVE-2024-1151

https://www.suse.com/security/cve/CVE-2024-23849

https://www.suse.com/security/cve/CVE-2024-23851

https://www.suse.com/security/cve/CVE-2024-26585

https://www.suse.com/security/cve/CVE-2024-26595

https://www.suse.com/security/cve/CVE-2024-26600

https://www.suse.com/security/cve/CVE-2024-26622

プラグインの詳細

深刻度: High

ID: 192499

ファイル名: suse_SU-2024-0925-1.nasl

バージョン: 1.1

タイプ: local

エージェント: unix

公開日: 2024/3/23

更新日: 2024/4/18

サポートされているセンサー: Agentless Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Frictionless Assessment Azure, Nessus Agent, Nessus

リスク情報

VPR

リスクファクター: Medium

スコア: 6.7

CVSS v2

リスクファクター: High

基本値: 7.2

現状値: 5.3

ベクトル: CVSS2#AV:L/AC:L/Au:N/C:C/I:C/A:C

CVSS スコアのソース: CVE-2021-33200

CVSS v3

リスクファクター: High

基本値: 7.8

現状値: 6.8

ベクトル: CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

現状ベクトル: CVSS:3.0/E:U/RL:O/RC:C

CVSS スコアのソース: CVE-2023-52464

脆弱性情報

CPE: cpe:/o:novell:suse_linux:12, p-cpe:/a:novell:suse_linux:kernel-default-base, p-cpe:/a:novell:suse_linux:kernel-default-kgraft-devel, p-cpe:/a:novell:suse_linux:kernel-macros, p-cpe:/a:novell:suse_linux:kernel-default-devel, p-cpe:/a:novell:suse_linux:cluster-md-kmp-default, p-cpe:/a:novell:suse_linux:gfs2-kmp-default, p-cpe:/a:novell:suse_linux:kernel-default, p-cpe:/a:novell:suse_linux:kernel-devel, p-cpe:/a:novell:suse_linux:kernel-default-extra, p-cpe:/a:novell:suse_linux:kernel-obs-build, p-cpe:/a:novell:suse_linux:kernel-syms, p-cpe:/a:novell:suse_linux:ocfs2-kmp-default, p-cpe:/a:novell:suse_linux:kernel-default-kgraft, p-cpe:/a:novell:suse_linux:dlm-kmp-default, p-cpe:/a:novell:suse_linux:kernel-source, p-cpe:/a:novell:suse_linux:kernel-default-man, p-cpe:/a:novell:suse_linux:kgraft-patch-4_12_14-122_201-default

必要な KB アイテム: Host/local_checks_enabled, Host/cpu, Host/SuSE/release, Host/SuSE/rpm-list

エクスプロイトの容易さ: No known exploits are available

パッチ公開日: 2024/3/18

脆弱性公開日: 2021/5/27

参照情報

CVE: CVE-2019-25162, CVE-2020-36777, CVE-2020-36784, CVE-2021-33200, CVE-2021-46906, CVE-2021-46915, CVE-2021-46921, CVE-2021-46924, CVE-2021-46929, CVE-2021-46932, CVE-2021-46953, CVE-2021-46974, CVE-2021-46991, CVE-2021-46992, CVE-2021-47013, CVE-2021-47054, CVE-2021-47076, CVE-2021-47077, CVE-2021-47078, CVE-2022-20154, CVE-2022-48627, CVE-2023-28746, CVE-2023-35827, CVE-2023-46343, CVE-2023-52340, CVE-2023-52429, CVE-2023-52443, CVE-2023-52445, CVE-2023-52449, CVE-2023-52451, CVE-2023-52464, CVE-2023-52475, CVE-2023-52478, CVE-2023-52482, CVE-2023-52502, CVE-2023-52530, CVE-2023-52531, CVE-2023-52532, CVE-2023-52574, CVE-2023-52597, CVE-2023-52605, CVE-2024-0607, CVE-2024-1151, CVE-2024-23849, CVE-2024-23851, CVE-2024-26585, CVE-2024-26595, CVE-2024-26600, CVE-2024-26622

SuSE: SUSE-SU-2024:0925-1