Ubuntu 14.04 LTS / 16.04 LTS : Linux カーネル (Azure) の脆弱性 (USN-6777-2)

high Nessus プラグイン ID 197518

概要

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

説明

リモートの Ubuntu 14.04 LTS / 16.04 LTS ホストには、USN-6777-2 のアドバイザリに記載された複数の脆弱性の影響を受けるパッケージがインストールされています。

- Linux カーネルで、次の脆弱性が解決されています。nbd: flush_workqueue の NULL ポインターを修正します 最初に /dev/nbdX を開くと、onfig_refs は 1 になり、nbd_device のポインターは依然として NULL です。/dev/nbdX を切断してから、null recv_workq を参照します。nbd_genl_disconnect の config_refs による保護は役に立ちません。[ 656.366194] バグ: カーネル NULL ポインターデリファレンス、アドレス:
0000000000000020 [ 656.368943] #PF: カーネルモードでのスーパーバイザー書き込みアクセス [ 656.369844] #PF:
error_code(0x0002) - ページを表示しない [ 656.370717] PGD 10cc87067 P4D 10cc87067 PUD 1074b4067 PMD 0 [656.371693] Oops: 0002 [#1] SMP [ 656.372242] CPU: 5 PID: 7977 Comm: nbd-client が汚染されていない 5.11.0-rc5-00040-g76c057c84d28 #1 [ 656.373661] ハードウェア名: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20190727_073836-buildvm-ppc64le-16.ppc.fedoraproject.org-3.fc31 04/01/2014 [ 656.375904] RIP:
0010:mutex_lock+0x29/0x60 [ 656.376627] コード: 00 0f 1f 44 00 00 55 48 89 fd 48 83 05 6f d7 fe 08 01 e8 7a c3 ff ff 48 83 05 6a d7 fe 08 01 31 c0 65 48 8b 14 25 00 6d 01 00 <f0> 48 0f b1 55 d [ 656.378934] RSP:
0018:ffffc900005eb9b0 EFLAGS: 00010246 [ 656.379350] RAX: 0000000000000000 RBX: 0000000000000000 RCX:
00000000000000000 [ 656.379915] RDX: ffff888104cf2600 RSI: ffffffffaae8f452 RDI: 0000000000000020 [656.380473] RBP: 0000000000000020 R08: 0000000000000000 R09: ffff88813bd6b318 [ 656.381039] R10:
00000000000000c7 R11: fefefefefefefeff R12: ffff888102710b40 [ 656.381599] R13: ffffc900005eb9e0 R14:
ffffffffb2930680 R15: ffff88810770ef00 [ 656.382166] FS: 00007fdf117ebb40(0000) GS:ffff88813bd40000(0000) knlGS:0000000000000000 [ 656.382806] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 656.383261] CR2:
0000000000000020 CR3: 0000000100c84000 CR4: 00000000000006e0 [ 656.383819] DR0: 0000000000000000 DR1:
0000000000000000 DR2: 0000000000000000 [ 656.384370] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400 [ 656.384927] 呼び出しトレース: [ 656.385111] flush_workqueue+0x92/0x6c0 [ 656.385395] nbd_disconnect_and_put+0x81/0xd0 [ 656.385716] nbd_genl_disconnect+0x125/0x2a0 [ 656.386034] genl_family_rcv_msg_doit.isra.0+0x102/0x1b0 [ 656.386422] genl_rcv_msg+0xfc/0x2b0 [ 656.386685] ? nbd_ioctl+0x490/0x490 [ 656.386954] ? genl_family_rcv_msg_doit.isra.0+0x1b0/0x1b0 [ 656.387354] netlink_rcv_skb+0x62/0x180 [ 656.387638] genl_rcv+0x34/0x60 [ 656.387874] netlink_unicast+0x26d/0x590 [656.388162] netlink_sendmsg+0x398/0x6c0 [ 656.388451] ? netlink_rcv_skb+0x180/0x180 [ 656.388750]
____sys_sendmsg+0x1da/0x320 [ 656.389038] ? ____sys_recvmsg+0x130/0x220 [ 656.389334]
___sys_sendmsg+0x8e/0xf0 [ 656.389605] ? ___sys_recvmsg+0xa2/0xf0 [ 656.389889] ? handle_mm_fault+0x1671/0x21d0 [ 656.390201] __sys_sendmsg+0x6d/0xe0 [ 656.390464]
__x64_sys_sendmsg+0x23/0x30 [ 656.390751] do_syscall_64+0x45/0x70 [ 656.391017] entry_SYSCALL_64_after_hwframe+0x44/0xa9 修正するには、if (nbd->recv_workq) を nbd_disconnect_and_put() に追加してください。(CVE-2021-46981)

- 6.5.10 までの Linux カーネルの brcm80211 コンポーネントでは、デバイスの取り外し (ホットプラグで USB を切断) コードに brcmf_cfg80211_detach のメモリ解放後使用 (use-after-free) があります。ローカルアクセス権を持つ攻撃者が物理的に接近した場合、この状況が現実のシナリオで悪用される可能性があります。これは、drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c の brcmf_cfg80211_escan_timeout_worker に関連しています。
(CVE-2023-47233)

- Linux カーネルでは、以下の脆弱性が解決されています。uio: uio_open core-1 core-2 におけるメモリ解放後使用 (Use After Free) の修正 ------------------------------------------------------- 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 は idev を kfree します。しかし、core-1 device_unregister、put_device の後、かつ kfree を行う前に、core-2 は get_device することがあります。1. core-1 が idev を kfree した後、core-2 は idev に対してメモリ解放後使用 (Use After Free) を実行します。2. core-2 が uio_release および put_device を行う場合、idev が二重解放されます。この問題に対処するために、minor_lock で idev atomic および inc idev 参照を取得できます。
(CVE-2023-52439)

- Linux カーネルで、以下の脆弱性が解決されています。net: nfc: llcp: デバイスリストを変更する際にロックが追加されます デバイスリストを変更する際には、デバイスリストに関連するロックを保持する必要があります そうしないと、syzbot が発見したとおり、リストが破損する可能性があります。(CVE-2023-52524)

- 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 カーネルでは、次の脆弱性が解決されています。nilfs2: nilfs_gccache_submit_read_data() のメモリ解放後使用 (Use After Free) の可能性を修正します nilfs_gccache_submit_read_data() で、brelse(bh) は、nilfs_dat_translate() の呼び出しが失敗したときに bh の参照カウントを削除するために呼び出されます。参照カウントが 0 に達し、その所有者ページのロックが解除されると、bh が解放される可能性があります。ただし、bh->b_page はページをその後に配置するために逆参照されており、メモリ解放後使用 (Use After Free) のバグが発生する可能性があります。このパッチでは、ロックを解除してページを配置した後に、 リリース操作が移動します。注: 問題の関数は GC でのみ呼び出され、現在のユーザーランドツールと組み合わせた場合、DAT を使用したアドレス変換はその関数では発生しないため、この問題を引き起こすコードパスは実行されません。ただし、ユーザーランドの GC ライブラリを意図的に変更するか、GC ioctl を直接呼び出すことで、そのコードパスを実行することができます。[[email protected]: コミットログに注記を追加] (CVE-2023-52566)

- Linux カーネルでは、次の脆弱性が解決されています。ceph: dget() の誤用によるデッドロックまたはデッドコードを修正します denty とその親の間のロック順序が正しくありません。親が最初にロックを取得することを常に確認する必要があります。しかし、このデッドコードは使用されることはなく、親ディレクトリは常に呼び出し元から設定されるため、削除してしまいましょう。(CVE-2023-52583)

- Linux カーネルでは、次の脆弱性が解決されています。jfs: dbAdjTree の array-index-out-of-bounds を修正します。現在、dmt_stree にアクセスする際に、dbAdjTree にバインドチェックがありません。必要なチェックを追加するために、次のコミットで提案されているようにサイズを決定するために必要な bool is_ctl が追加されました。https://lore.kernel.org/linux-kernel-mentees/[email protected]/ (CVE-2023-52601)

- Linux カーネルでは、次の脆弱性が解決されています。jfs: slab-out-of-bounds を修正します。dtSearch の読み取りの現在ページのソートされたエントリテーブルで現在のページを検索しているときに、領域外のアクセスがあります。エラーを修正するために境界チェックを追加しました。Dave: リターンコードを -EIO に設定 (CVE-2023-52602)

- Linux カーネルでは、次の脆弱性は解決されています。FS:JFS:UBSAN: dbAdjTree 内の array-index-out-of-boundsin Syzkaller は次の問題を報告しました。UBSAN: 1 in fs/jfs/jfs_dmap.c:2867:6 内の array-index-out-of-bounds インデックス 196694 がタイプ「s8[1365]」( 別名「signed char[1365]」) の範囲外です CPU: 1 PID: 109 Comm: jfsCommit 汚染なし 6.6.0-rc3-syzkaller #0 ハードウェア名: Google Google Compute Engine/Google Compute Engine、BIOS Google 08/04/2023 呼び出しトレース: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1e7/0x2d0 lib/dump_stack.c:106 ubsan_epilogue lib/ubsan.c:217 [inline]
__ubsan_handle_out_of_bounds+0x11c/0x150 lib/ubsan.c:348 dbAdjTree+0x474/0x4f0 fs/jfs/jfs_dmap.c:2867 dbJoin+0x210/0x2d0 fs/jfs/jfs_dmap.c:2834 dbFreeBits+0x4eb/0xda0 fs/jfs/jfs_dmap.c:2331 dbFreeDmap fs/jfs/jfs_dmap.c:2080 [inline] dbFree+0x343/0x650 fs/jfs/jfs_dmap.c:402 txFreeMap+0x798/0xd50 fs/jfs/jfs_txnmgr.c:2534 txUpdateMap+0x342/0x9e0 txLazyCommit fs/jfs/jfs_txnmgr.c:2664 [inline] jfs_lazycommit+0x47a/0xb70 fs/jfs/jfs_txnmgr.c:2732 kthread+0x2d3/0x370 kernel/kthread.c:388 ret_from_fork+0x48/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:304 </TASK> ================================================================================ カーネルパニック - 同期していません: UBSAN: panic_on_warn set ... CPU: 1 PID: 109 Comm: jfsCommit Not tainted 6.6.0-rc3-syzkaller #0 ハードウェア名: Google Google Compute Engine/Google Compute Engine、BIOS Google 08/04/2023 呼び出しトレース:
<TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1e7/0x2d0 lib/dump_stack.c:106 panic+0x30f/0x770 kernel/panic.c:340 check_panic_on_warn+0x82/0xa0 kernel/panic.c:236 ubsan_epilogue lib/ubsan.c:223 [inline] __ubsan_handle_out_of_bounds+0x13c/0x150 lib/ubsan.c:348 dbAdjTree+0x474/0x4f0 fs/jfs/jfs_dmap.c:2867 dbJoin+0x210/0x2d0 fs/jfs/jfs_dmap.c:2834 dbFreeBits+0x4eb/0xda0 fs/jfs/jfs_dmap.c:2331 dbFreeDmap fs/jfs/jfs_dmap.c:2080 [inline] dbFree+0x343/0x650 fs/jfs/jfs_dmap.c:402 txFreeMap+0x798/0xd50 fs/jfs/jfs_txnmgr.c:2534 txUpdateMap+0x342/0x9e0 txLazyCommit fs/jfs/jfs_txnmgr.c:2664 [inline] jfs_lazycommit+0x47a/0xb70 fs/jfs/jfs_txnmgr.c:2732 kthread+0x2d3/0x370 kernel/kthread.c:388 ret_from_fork+0x48/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x11/0x20 arch/x86/entry/entry_64.S:304 </TASK> カーネルオフセット: 86400 秒後に再起動が無効にされます.. この問題は、lp の値が stree の最大サイズである CTLTREESIZE よりも大きくなると発生します。単純なチェックを追加することで、この問題を解決できます。Dave: この関数は void を返すため、エラーを適切に処理するには、より侵入的なコードを再編成する必要があります。そこで、よりクリーンなオプションが欠如している Osama 氏のパッチを use WARN_ON_ONCE で修正しました。パッチは syzbot を介してテストされます。(CVE-2023-52604)

- Linux カーネルでは、次の脆弱性は解決されています。tcp: accept_queue のスピンロックを 1 回必ず初期化してください。syz の再現 C プログラムをローカルで実行すると、次の問題が発生します。
pvqspinlock: ロック 0xffff9d181cd5c660 には破損した値 0x0! があります。警告: CPU: 19 PID: 21160 at
__pv_queued_spin_unlock_slowpath (kernel/locking/qspinlock_paravirt.h:508) ハードウェア名:Red Hat KVM、BIOS 0.5.101/01/2011 RIP: 0010:__pv_queued_spin_unlock_slowpath (kernel/locking/qspinlock_paravirt.h:508) コード: 73 56 3a ff 90 c3 cc cc cc cc 8b 05 bb 1f 48 01 85 c0 74 05 c3 cc cc cc cc 8b 17 48 89 fe 48 c7 c7 30 20 ce 8f e8 ad 56 42 ff <0f> 0b c3 cc cc cc cc 0f 0b 0f 1f 40 00 90 90 90 90 90 90 90 90 90 RSP:
0018:ffffa8d200604cb8 EFLAGS: 00010282 RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff9d1ef60e0908 RDX: 00000000ffffffd8 RSI: 0000000000000027 RDI: ffff9d1ef60e0900 RBP: ffff9d181cd5c280 R08:
0000000000000000 R09: 00000000ffff7fff R10: ffffa8d200604b68 R11: ffffffff907dcdc8 R12: 0000000000000000 R13: ffff9d181cd5c660 R14: ffff9d1813a3f330 R15: 0000000000001000 FS: 00007fa110184640(0000) GS:ffff9d1ef60c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2:
0000000020000000 CR3: 000000011f65e000 CR4: 00000000000006f0 呼び出しトレース: <IRQ> _raw_spin_unlock (kernel/locking/spinlock.c:186) inet_csk_reqsk_queue_add (net/ipv4/inet_connection_sock.c:1321) inet_csk_complete_hashdance (net/ipv4/inet_connection_sock.c:1358) tcp_check_req (net/ipv4/tcp_minisocks.c:868) tcp_v4_rcv (net/ipv4/tcp_ipv4.c:2260) ip_protocol_deliver_rcu (net/ipv4/ip_input.c:205) ip_local_deliver_finish (net/ipv4/ip_input.c:234) __netif_receive_skb_one_core (net/core/dev.c:5529) process_backlog (./include/linux/rcupdate.h:779) __napi_poll (net/core/dev.c:6533) net_rx_action (net/core/dev.c:6604) __do_softirq (./arch/x86/include/asm/jump_label.h:27) do_softirq (kernel/softirq.c:454 kernel/softirq.c:441) </IRQ> <TASK> __local_bh_enable_ip (kernel/softirq.c:381)
__dev_queue_xmit (net/core/dev.c:4374) ip_finish_output2 (./include/net/neighbour.h:540 net/ipv4/ip_output.c:235) __ip_queue_xmit (net/ipv4/ip_output.c:535) __tcp_transmit_skb (net/ipv4/tcp_output.c:1462) tcp_rcv_synsent_state_process (net/ipv4/tcp_input.c:6469) tcp_rcv_state_process (net/ipv4/tcp_input.c:6657) tcp_v4_do_rcv (net/ipv4/tcp_ipv4.c:1929) __release_sock (./include/net/sock.h:1121 net/core/sock.c:2968) release_sock (net/core/sock.c:3536) inet_wait_for_connect (net/ipv4/af_inet.c:609) __inet_stream_connect (net/ipv4/af_inet.c:702) inet_stream_connect (net/ipv4/af_inet.c:748) __sys_connect (./include/linux/file.h:45 net/socket.c:2064) __x64_sys_connect (net/socket.c:2073 net/socket.c:2070 net/socket.c:2070) do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:82) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:129) RIP:
0033:0x7fa10ff05a3d コード: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 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 8b 0d ab a3 0e 00 f7 d8 64 89 01 48 RSP: 002b:00007fa110183de8 EFLAGS: 00000202 ORIG_RAX: 000000000000002a RAX: ffffffffffffffda RBX:
0000000020000054 RCX: 00007fa10ff05a3d RDX: 000000000000001c RSI: 0000000020000040 RDI: 0000000000000003 RBP: 00007fa110183e20 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000202 R12: 00007fa110184640 R13: 0000000000000000 R14: 00007fa10fe8b060 R15: 00007fff73e23b20 </TASK> 問題を引き起こすプロセスは次のように分析されます。Thread A Thread B tcp_v4_rcv //receive ack TCP packet inet_shutdown tcp_check_req tcp_disconnect //disconnect sock ... tcp_set_state(sk、TCP_CLOSE) inet_csk_complete_hashdance ... inet_csk_reqsk_queue_add ---truncated--- (CVE-2024-26614)

- 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)

- Linux カーネルで、以下の脆弱性は解決されています。llc: ETH_P_TR_802_2 のサポートをドロップします。
syzbot は、下記の uninit-value のバグを報告しました。[0] llc は ETH_P_802_2 (0x0004) をサポートしており、以前は ETH_P_TR_802_2 (0x0011) をサポートしていました。syzbot は後者を悪用してバグを引き起こしました。write$tun(r0, &(0x7f0000000040)={@val={0x0, 0x11}, @val, @mpls={[], @llc={@snap={0xaa, 0x1, ')', 90e5dd}}}}, 0x16) llc_conn_handler() は、llc_pdu_decode_sa()/llc_pdu_decode_da() で skb に基づいてローカル変数 {saddr,daddr}.mac を初期化し、それらを __llc_lookup() に渡します。ただし、初期化は skb->protocol が htons(ETH_P_802_2) である場合にのみ行われます。そうでない場合、__llc_lookup_established() と
__llc_lookup_listener() がガベージを読み込みます。初期化の欠落は、コミット 211ed865108e より前に存在しました (net: トークンリングの特別処理のインスタンスをすべて削除します)。トークンリングスタッフを追い出すための部分を削除しましたが、ETH_P_TR_802_2 パケットが llc_rcv() に忍び込むことができるようにドアを閉じるのを忘れていました。
llc_tr_packet_type を削除して、非推奨を完了させてください。[0]: BUG: KMSAN: uninit-value in
__llc_lookup_established+0xe9d/0xf90 __llc_lookup_established+0xe9d/0xf90 __llc_lookup net/llc/llc_conn.c:611 [inline] llc_conn_handler+0x4bd/0x1360 net/llc/llc_conn.c:791 llc_rcv+0xfbb/0x14a0 net/llc/llc_input.c:206 __netif_receive_skb_one_core net/core/dev.c:5527 [inline]
__netif_receive_skb+0x1a6/0x5a0 net/core/dev.c:5641 netif_receive_skb_internal net/core/dev.c:5727 [inline] netif_receive_skb+0x58/0x660 net/core/dev.c:5786 tun_rx_batched+0x3ee/0x980 drivers/net/tun.c:1555 tun_get_user+0x53af/0x66d0 drivers/net/tun.c:2002 tun_chr_write_iter+0x3af/0x5d0 drivers/net/tun.c:2048 call_write_iter include/linux/fs.h:2020 [inline] new_sync_write fs/read_write.c:491 [inline] vfs_write+0x8ef/0x1490 fs/read_write.c:584 ksys_write+0x20f/0x4c0 fs/read_write.c:637
__do_sys_write fs/read_write.c:649 [inline] __se_sys_write fs/read_write.c:646 [inline]
__x64_sys_write+0x93/0xd0 fs/read_write.c:646 do_syscall_x64 arch/x86/entry/common.c:51 [inline] do_syscall_64+0x44/0x110 arch/x86/entry/common.c:82 entry_SYSCALL_64_after_hwframe+0x63/0x6b Local variable daddr created at: llc_conn_handler+0x53/0x1360 net/llc/llc_conn.c:783 llc_rcv+0xfbb/0x14a0 net/llc/llc_input.c:206 CPU: 1 PID: 5004 Comm: syz-executor994 Not tainted 6.6.0-syzkaller-14500-g1c41041124bd #0 ハードウェア名: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/09/2023 (CVE-2024-26635)

- Linux カーネルでは、以下の脆弱性が解決されています。ext4: 不適切なエクステントにより発生するブロックのダブルフリーを修正します。move_len ext4_move_extents() で、moved_len はすべての move が正常に実行された場合にのみ更新され、move_len がゼロでない場合にのみ、orig_inode および donor_inode の事前割り当てを破棄します。一部のエクステントを正常に移動した後にループの終了に失敗した場合、moved_len は更新されずに 0 のままになるため、事前割り当てを破棄しません。移動されたエクステントが事前に割り当てられたエクステントと重複する場合、重複したエクステントは ext4_mb_release_inode_pa() および ext4_process_freed_data() で 2 回解放され (コミット 94d7c16cbbbd (ext4: EXT4_IOC_MOVE_EXT でブロックの二重解放を修正) に記載されているとおり)、bb_free が 2 回インクリメントされます。したがって、trim が実行されると、bb_free がゼロではなく bb_fragments がゼロであるため、mb_update_avg_fragment_size() でゼロ除算バグがトリガーされます。したがって、この問題を回避するには、エクステントを移動するたびに move_len を更新してください。(CVE-2024-26704)

- Linux カーネルでは、次の脆弱性が解決されています。ipv6: sr: 潜在的な use-after-free と null-ptr-deref を修正します 汎用 netlink ファミリーを登録する前に、サブシステムの pernet 操作構造を登録する必要があります。(CVE-2024-26735)

- Linux カーネルで、次の脆弱性が解決されています。Bluetooth: hci_error_reset の潜在的な use-after-free を回避します。HCI_EV_HARDWARE_ERROR イベントの処理中に、下層の BT コントローラーが応答しない場合、GPIO リセットメカニズムが hci_dev を解放し、 hci_error_reset での use-after-free につながります。Intel AX201 を搭載した ChromeOS デバイスで観察された呼び出しトレースは次のとおりです。
queue_work_on+0x3e/0x6c __hci_cmd_sync_sk+0x2ee/0x4c0 [bluetooth <HASH:3b4a6>] ? init_wait_entry+0x31/0x31
__hci_cmd_sync+0x16/0x20 [bluetooth <HASH:3b4a 6>] hci_error_reset+0x4f/0xa4 [bluetooth <HASH:3b4a 6>] process_one_work+0x1d8/0x33f worker_thread+0x21b/0x373 kthread+0x13a/0x152 ? pr_cont_work+0x54/0x54 ? kthread_blkcg+0x31/0x31 ret_from_fork+0x1f/0x30 このパッチは、クラッシュの可能性を回避するために HCI_EV_HARDWARE_ERROR イベントを処理している間、hci_dev の参照カウントを保持します。(CVE-2024-26801)

- Linux カーネルでは、次の脆弱性が解決されています。netlink: __skb_datagram_iter の kernel-infoleak-after-free を修正します syzbot は、次の uninit-value アクセスの問題を報告しました [1]:
netlink_to_full_skb() は新しい「skb」を作成し、netlink_to_full_skb() の 1 番目の引数として渡された「skb->data」を新しい「skb」に配置します。データサイズは「len」として指定され、skb_put_data() に渡されます。
この「len」は、データオフセットではなくバッファオフセットである「skb->end」に基づいています。「skb->end」には、データとテールルームが含まれています。新しい「skb」が作成されたときに tailroom が初期化されないため、KMSAN はデータをコピーするときに初期化されていないメモリ領域を検出します。このパッチでは、len を「skb->end」から「skb->len」に修正することでこの問題を解決しています。これは実際のデータオフセットです。バグ: KMSAN: kernel-infoleak-after-free in instrument_copy_to_user include/linux/instrumented.h:114 [インライン] バグ: KMSAN: kernel-infoleak-after-free in copy_to_user_iter lib/iov_iter.c:24 [インライン] バグ: KMSAN: kernel-infoleak-after-free in iterate_ubuf include/linux/iov_iter.h:29 [インライン] バグ: KMSAN: kernel-infoleak-after-free in iterate_and_advance2 include/linux/iov_iter.h:245 [インライン] バグ: KMSAN: kernel-infoleak-after-free in iterate_and_advance include/linux/iov_iter.h:271 [インライン] バグ: KMSAN: kernel-infoleak-after-free in _copy_to_iter+0x364/0x2520 lib/iov_iter.c:186 instrument_copy_to_user include/linux/instrumented.h:114 [インライン] copy_to_user_iter lib/iov_iter.c:24 [インライン] iterate_ubuf include/linux/iov_iter.h:29 [インライン] iterate_and_advance2 include/linux/iov_iter.h:245 [インライン] iterate_and_advance include/linux/iov_iter.h:271 [インライン]
_copy_to_iter+0x364/0x2520 lib/iov_iter.c:186 copy_to_iter include/linux/uio.h:197 [インライン] simple_copy_to_iter+0x68/0xa0 net/core/datagram.c:532 __skb_datagram_iter+0x123/0xdc0 net/core/datagram.c:420 skb_copy_datagram_iter+0x5c/0x200 net/core/datagram.c:546 skb_copy_datagram_msg include/linux/skbuff.h:3960 [インライン] packet_recvmsg+0xd9c/0x2000 net/packet/af_packet.c:3482 sock_recvmsg_nosec net/socket.c:1044 [インライン] sock_recvmsg net/socket.c:1066 [インライン] sock_read_iter+0x467/0x580 net/socket.c:1136 call_read_iter include/linux/fs.h:2014 [インライン] new_sync_read fs/read_write.c:389 [インライン] vfs_read+0x8f6/0xe00 fs/read_write.c:470 ksys_read+0x20f/0x4c0 fs/read_write.c:613 __do_sys_read fs/read_write.c:623 [インライン] __se_sys_read fs/read_write.c:621 [インライン]
__x64_sys_read+0x93/0xd0 fs/read_write.c:621 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 was stored to memory at: skb_put_data include/linux/skbuff.h:2622 [インライン] netlink_to_full_skb net/netlink/af_netlink.c:181 [インライン] __netlink_deliver_tap_skb net/netlink/af_netlink.c:298 [インライン]
__netlink_deliver_tap+0x5be/0xc90 net/netlink/af_netlink.c:325 netlink_deliver_tap net/netlink/af_netlink.c:338 [インライン] netlink_deliver_tap_kernel net/netlink/af_netlink.c:347 [インライン] netlink_unicast_kernel net/netlink/af_netlink.c:1341 [インライン] netlink_unicast+0x10f1/0x1250 net/netlink/af_netlink.c:1368 netlink_sendmsg+0x1238/0x13d0 net/netlink/af_netlink.c:1910 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 は次の場所に作成されています: free_pages_prepare mm/page_alloc.c:1087 [インライン] free_unref_page_prepare+0xb0/0xa40 mm/page_alloc.c:2347 free_unref_page_list+0xeb/0x1100 mm/page_alloc.c:2533 release_pages+0x23d3/0x2410 mm/swap.c:1042 free_pages_and_swap_cache+0xd9/0xf0 mm/swap_state.c:316 tlb_batch_pages ---truncated--- (CVE-2024-26805)

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

ソリューション

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

参考資料

https://ubuntu.com/security/notices/USN-6777-2

プラグインの詳細

深刻度: High

ID: 197518

ファイル名: ubuntu_USN-6777-2.nasl

バージョン: 1.1

タイプ: local

エージェント: unix

公開日: 2024/5/20

更新日: 2024/5/23

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

リスク情報

VPR

リスクファクター: Medium

スコア: 6.7

CVSS v2

リスクファクター: Medium

基本値: 6.8

現状値: 5

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

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

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

脆弱性情報

CPE: cpe:/o:canonical:ubuntu_linux:14.04:-:lts, p-cpe:/a:canonical:ubuntu_linux:linux-image-4.15.0-1177-azure, cpe:/o:canonical:ubuntu_linux:16.04:-:lts

必要な KB アイテム: Host/cpu, Host/Debian/dpkg-l, Host/Ubuntu, Host/Ubuntu/release

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

パッチ公開日: 2024/5/20

脆弱性公開日: 2023/11/3

参照情報

CVE: CVE-2021-46981, CVE-2023-47233, CVE-2023-52439, CVE-2023-52524, CVE-2023-52530, CVE-2023-52566, CVE-2023-52583, CVE-2023-52601, CVE-2023-52602, CVE-2023-52604, CVE-2024-26614, CVE-2024-26622, CVE-2024-26635, CVE-2024-26704, CVE-2024-26735, CVE-2024-26801, CVE-2024-26805

USN: 6777-2