Fedora 40 : kernel (2024-92664ae6fe)

medium Nessus プラグイン ID 197577

Language:

概要

リモートの Fedora ホストに 1 つ以上のセキュリティ更新プログラムがありません。

説明

リモートの Fedora 40 ホストには、FEDORA-2024-92664ae6fe のアドバイザリに記載された複数の脆弱性の影響を受けるパッケージがインストールされています。

- 一部の Intel(R) 第 4 または第 5 世代 Xeon(R) プロセッサ用の Intel(R) DSA および Intel(R) IAA における安全でない非同期化を伴うハードウェアロジックにより、認証されたユーザーがローカルアクセスを介してサービス拒否を引き起こすことができる可能性があります。(CVE-2024-21823)

- Linux カーネルでは、次の脆弱性が解決されました。firewire: nosy: パケットコンテンツをフェッチするときに user_length が考慮されるようになりました。packet_buffer_get が提供された user_length を尊重するようになりました。ヘッドパケットの長さが user_length を超える場合、packet_buffer_get は 0 を返すようにすることで、データが読み取られておらず、より大きなバッファサイズが必要であることをユーザーに通知するようになりました。ユーザースペースのオーバーフローを防止します。(CVE-2024-27401)

- Linux カーネルで、次の脆弱性が解決されました。drm/amdgpu: amdgpu_ttm_move() v2 の呼び出し順序が再度修正されました。これにより、drm/amdgpu: fix ftrace イベント amdgpu_bo_move が常に同じヒープ上を移動する状態が元に戻ります。ここでの基本的な問題は、移動後に古い場所がもはや利用できなくなることです。
いくつかの修正が提案されましたが、基本的には、実際に移動する前に移動通知を呼び出す必要があります。これは、この方法でのみ DMA-buf と VM 移動通知の順序を知ることができるためです。また、移動前に削除カウンターを更新しないように統計処理を修正します。v2: 欠落している NULL チェックを追加 (CVE-2024-27400)

- Linux カーネルでは、次の脆弱性が解決されています: Bluetooth: l2cap: l2cap_chan_timeout の null-ptr-deref を修正。l2cap_chan_timeout() と l2cap_chan_del() の間には競合状態があります。l2cap_chan_del() を使用してチャネルを削除する場合、chan->conn は null に設定されます。しかし、l2cap_chan_timeout() の mutex_lock() で、conn が再びデリファレンスされる可能性があります。その結果、NULL ポインターデリファレンスのバグが発生します。POC によってトリガーされる KASAN レポートは次の通りです。[ 472.074580] ================================================================== [ 472.075284] BUG: KASAN: null-ptr-deref in mutex_lock+0x68/0xc0 [ 472.075308] Write of size 8 at addr 0000000000000158 by task kworker/0:0/7 [ 472.075308] [ 472.075308] CPU: 0 PID: 7 Comm: kworker/0:0 Not tainted 6.9.0-rc5-00356-g78c0094a146b #36 [ 472.075308] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu4 [ 472.075308] Workqueue: events l2cap_chan_timeout [ 472.075308] Call Trace: [ 472.075308] <TASK> [ 472.075308] dump_stack_lvl+0x137/0x1a0 [ 472.075308] print_report+0x101/0x250 [ 472.075308] ? __virt_addr_valid+0x77/0x160 [ 472.075308] ? mutex_lock+0x68/0xc0 [ 472.075308] kasan_report+0x139/0x170 [ 472.075308] ? mutex_lock+0x68/0xc0 [ 472.075308] kasan_check_range+0x2c3/0x2e0 [ 472.075308] mutex_lock+0x68/0xc0 [ 472.075308] l2cap_chan_timeout+0x181/0x300 [ 472.075308] process_one_work+0x5d2/0xe00 [ 472.075308] worker_thread+0xe1d/0x1660 [ 472.075308] ? pr_cont_work+0x5e0/0x5e0 [ 472.075308] kthread+0x2b7/0x350 [472.075308] ? pr_cont_work+0x5e0/0x5e0 [ 472.075308] ? kthread_blkcg+0xd0/0xd0 [ 472.075308] ret_from_fork+0x4d/0x80 [ 472.075308] ? kthread_blkcg+0xd0/0xd0 [ 472.075308] ret_from_fork_asm+0x11/0x20 [ 472.075308] </TASK> [ 472.075308] ================================================================== [472.094860] Disabling lock debugging due to kernel taint [ 472.096136] BUG: kernel NULL pointer dereference, address: 0000000000000158 [ 472.096136] #PF: supervisor write access in kernel mode [472.096136] #PF: error_code(0x0002) - not-present page [ 472.096136] PGD 0 P4D 0 [ 472.096136] Oops: 0002 [#1] PREEMPT SMP KASAN NOPTI [ 472.096136] CPU: 0 PID: 7 Comm: kworker/0:0 Tainted: G B 6.9.0-rc5-00356-g78c0094a146b #36 [ 472.096136] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu4 [ 472.096136] Workqueue: events l2cap_chan_timeout [472.096136] RIP: 0010:mutex_lock+0x88/0xc0 [ 472.096136] Code: be 08 00 00 00 e8 f8 23 1f fd 4c 89 f7 be 08 00 00 00 e8 eb 23 1f fd 42 80 3c 23 00 74 08 48 88 [ 472.096136] RSP: 0018:ffff88800744fc78 EFLAGS:
00000246 [ 472.096136] RAX: 0000000000000000 RBX: 1ffff11000e89f8f RCX: ffffffff8457c865 [ 472.096136] RDX: 0000000000000001 RSI: 0000000000000008 RDI: ffff88800744fc78 [ 472.096136] RBP: 0000000000000158 R08:
ffff88800744fc7f R09: 1ffff11000e89f8f [ 472.096136] R10: dffffc0000000000 R11: ffffed1000e89f90 R12:
dffffc0000000000 [ 472.096136] R13: 0000000000000158 R14: ffff88800744fc78 R15: ffff888007405a00 [472.096136] FS: 0000000000000000(0000) GS:ffff88806d200000(0000) knlGS:0000000000000000 [ 472.096136] CS:
0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 472.096136] CR2: 0000000000000158 CR3: 000000000da32000 CR4: 00000000000006f0 [ 472.096136] Call Trace: [ 472.096136] <TASK> [ 472.096136] ? __die_body+0x8d/0xe0 [ 472.096136] ? page_fault_oops+0x6b8/0x9a0 [ 472.096136] ? kernelmode_fixup_or_oops+0x20c/0x2a0 [472.096136] ? do_user_addr_fault+0x1027/0x1340 [ 472.096136] ? _printk+0x7a/0xa0 [ 472.096136] ? mutex_lock+0x68/0xc0 [ 472.096136] ? add_taint+0x42/0xd0 [ 472.096136] ? exc_page_fault+0x6a/0x1b0 [472.096136] ? asm_exc_page_fault+0x26/0x30 [ 472.096136] ? mutex_lock+0x75/0xc0 [ 472.096136] ? mutex_lock+0x88/0xc0 [ 472.096136] ? mutex_lock+0x75/0xc0 [ 472.096136] l2cap_chan_timeo ---truncated--- (CVE-2024-27399)

- Linux カーネルで、以下の脆弱性が解決されています。Bluetooth: sco_sock_timeout により引き起こされるメモリ解放後使用 (use-after-free) のバグの修正。sco 接続が確立され、その後 sco ソケットが解放されると、timeout_work がスケジューリングされ、sco の切断がタイムアウトかどうかを判断します。sock は後で割り当て解除されますが、sco_sock_timeout で再びデリファレンスされます。その結果、メモリ解放後使用 (Use After Free) のバグが発生します。根本原因は次の通りです。Cleanup Thread | Worker Thread sco_sock_release | sco_sock_close | __sco_sock_close | sco_sock_set_timer | schedule_delayed_work | sco_sock_kill | (wait a time) sock_put(sk) //FREE | sco_sock_timeout | sock_hold(sk) //USE POC によってトリガーされる KASAN レポートは以下の通りです。[ 95.890016] ================================================================== [ 95.890496] BUG: KASAN: slab-use-after-free in sco_sock_timeout+0x5e/0x1c0 [ 95.890755] Write of size 4 at addr ffff88800c388080 by task kworker/0:0/7 ... [ 95.890755] Workqueue: events sco_sock_timeout [ 95.890755] Call Trace: [ 95.890755] <TASK> [ 95.890755] dump_stack_lvl+0x45/0x110 [ 95.890755] print_address_description+0x78/0x390 [ 95.890755] print_report+0x11b/0x250 [ 95.890755] ?
__virt_addr_valid+0xbe/0xf0 [ 95.890755] ? sco_sock_timeout+0x5e/0x1c0 [ 95.890755] kasan_report+0x139/0x170 [ 95.890755] ? update_load_avg+0xe5/0x9f0 [ 95.890755] ? sco_sock_timeout+0x5e/0x1c0 [ 95.890755] kasan_check_range+0x2c3/0x2e0 [ 95.890755] sco_sock_timeout+0x5e/0x1c0 [ 95.890755] process_one_work+0x561/0xc50 [ 95.890755] worker_thread+0xab2/0x13c0 [ 95.890755] ? pr_cont_work+0x490/0x490 [ 95.890755] kthread+0x279/0x300 [95.890755] ? pr_cont_work+0x490/0x490 [ 95.890755] ? kthread_blkcg+0xa0/0xa0 [ 95.890755] ret_from_fork+0x34/0x60 [ 95.890755] ? kthread_blkcg+0xa0/0xa0 [ 95.890755] ret_from_fork_asm+0x11/0x20 [95.890755] </TASK> [ 95.890755] [ 95.890755] Allocated by task 506: [ 95.890755] kasan_save_track+0x3f/0x70 [ 95.890755] __kasan_kmalloc+0x86/0x90 [ 95.890755] __kmalloc+0x17f/0x360 [95.890755] sk_prot_alloc+0xe1/0x1a0 [ 95.890755] sk_alloc+0x31/0x4e0 [ 95.890755] bt_sock_alloc+0x2b/0x2a0 [ 95.890755] sco_sock_create+0xad/0x320 [ 95.890755] bt_sock_create+0x145/0x320 [ 95.890755]
__sock_create+0x2e1/0x650 [ 95.890755] __sys_socket+0xd0/0x280 [ 95.890755] __x64_sys_socket+0x75/0x80 [95.890755] do_syscall_64+0xc4/0x1b0 [ 95.890755] entry_SYSCALL_64_after_hwframe+0x67/0x6f [ 95.890755] [95.890755] Freed by task 506: [ 95.890755] kasan_save_track+0x3f/0x70 [ 95.890755] kasan_save_free_info+0x40/0x50 [ 95.890755] poison_slab_object+0x118/0x180 [ 95.890755]
__kasan_slab_free+0x12/0x30 [ 95.890755] kfree+0xb2/0x240 [ 95.890755] __sk_destruct+0x317/0x410 [95.890755] sco_sock_release+0x232/0x280 [ 95.890755] sock_close+0xb2/0x210 [ 95.890755] __fput+0x37f/0x770 [ 95.890755] task_work_run+0x1ae/0x210 [ 95.890755] get_signal+0xe17/0xf70 [ 95.890755] arch_do_signal_or_restart+0x3f/0x520 [ 95.890755] syscall_exit_to_user_mode+0x55/0x120 [ 95.890755] do_syscall_64+0xd1/0x1b0 [ 95.890755] entry_SYSCALL_64_after_hwframe+0x67/0x6f [ 95.890755] [ 95.890755] The buggy address belongs to the object at ffff88800c388000 [ 95.890755] which belongs to the cache kmalloc-1k of size 1024 [ 95.890755] The buggy address is located 128 bytes inside of [ 95.890755] freed 1024-byte region [ffff88800c388000, ffff88800c388400) [ 95.890755] [ 95.890755] The buggy address belongs to the physical page: [ 95.890755] page: refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff88800c38a800 pfn:0xc388 [ 95.890755] head: order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0 [ 95.890755] ano ---truncated--- (CVE-2024-27398)

- Linux カーネルで、次の脆弱性が解決されています。dyndbg: >control パーサーの古い BUG_ON を修正します。2009 年以降の BUG_ON を修正します。到達できていないように見える場合 (実際には見えません) でも、それを削除して pr_err を実行し、代わりに -EINVAL を返すことで確認します。(CVE-2024-35947)

- Linux カーネルで、次の脆弱性が解決されています。btrfs: すべてのメタデータブロックに WRITTEN が設定されていることを確認します。以前は、整合性チェックコードが有効になっている場合にのみ btrfs_check_leaf() を呼び出していました。これは、ヘッダーフラグに WRITTEN が設定されている場合にのみ、拡張リーフチェックを実行できることを意味します。これにより、チェックに隙間が生じます。これは、リーフに WRITTEN が設定されていない場合、ディスクが破損してしまう可能性があり、続いてエクステントバッファの外側のメモリにアクセスしないように、すべてのアイテムポインターを検証するために依存している拡張リーフチェックが実行されないことが原因です。しかし、732fab95abe2 (btrfs: check-integrity: CONFIG_BTRFS_FS_CHECK_INTEGRITY オプションの削除) 以降、btrfs_mark_buffer_dirty() から btrfs_check_leaf() を呼び出さなくなりました。これは、WRITTEN が設定されているブロックのみ、つまり書き込み中のブロック、または WRITTEN が設定されているはずの読み込み中ブロックに対してのみ呼び出されることを意味します。
WRITTEN が適切に設定されていることを確認するチェックを追加し、その後 __btrfs_check_leaf() が常にアイテムのチェックを行うようにします。これにより、一部のブロックで WRITTEN が設定されていない破損したファイルシステムから保護されます。これは、WRITTEN ビットを微調整するよう細工されたイメージで発生し、eb アクセサーの領域外アクセスとして KASAN によって報告されました。この例は、eb の末尾にある dir アイテムです。
[2.042] BTRFS warning (device loop1): bad eb member start: ptr 0x3fff start 30572544 member offset 16410 size 2 [2.040] general protection fault, probably for non-canonical address 0xe0009d1000000003: 0000 [#1] PREEMPT SMP KASAN NOPTI [2.537] KASAN: maybe wild-memory-access in range [0x0005088000000018-0x000508800000001f] [2.729] CPU: 0 PID: 2587 Comm: mount Not tainted 6.8.2 #1 [2.729] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 [2.621] RIP:
0010:btrfs_get_16+0x34b/0x6d0 [2.621] RSP: 0018:ffff88810871fab8 EFLAGS: 00000206 [2.621] RAX:
0000a11000000003 RBX: ffff888104ff8720 RCX: ffff88811b2288c0 [2.621] RDX: dffffc0000000000 RSI:
ffffffff81dd8aca RDI: ffff88810871f748 [2.621] RBP: 000000000000401a R08: 0000000000000001 R09:
ffffed10210e3ee9 [2.621] R10: ffff88810871f74f R11: 205d323430333737 R12: 000000000000001a [2.621] R13:
000508800000001a R14: 1ffff110210e3f5d R15: ffffffff850011e8 [2.621] FS: 00007f56ea275840(0000) GS:ffff88811b200000(0000) knlGS:0000000000000000 [2.621] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [2.621] CR2: 00007febd13b75c0 CR3: 000000010bb50000 CR4: 00000000000006f0 [2.621] Call Trace: [2.621] <TASK> [2.621] ? show_regs+0x74/0x80 [2.621] ? die_addr+0x46/0xc0 [2.621] ? exc_general_protection+0x161/0x2a0 [2.621] ? asm_exc_general_protection+0x26/0x30 [2.621] ? btrfs_get_16+0x33a/0x6d0 [2.621] ? btrfs_get_16+0x34b/0x6d0 [2.621] ? btrfs_get_16+0x33a/0x6d0 [2.621] ?
__pfx_btrfs_get_16+0x10/0x10 [2.621] ? __pfx_mutex_unlock+0x10/0x10 [2.621] btrfs_match_dir_item_name+0x101/0x1a0 [2.621] btrfs_lookup_dir_item+0x1f3/0x280 [2.621] ?
__pfx_btrfs_lookup_dir_item+0x10/0x10 [2.621] btrfs_get_tree+0xd25/0x1910 [ copy more details from report] (CVE-2024-35949)

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

ソリューション

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

参考資料

https://bodhi.fedoraproject.org/updates/FEDORA-2024-92664ae6fe

プラグインの詳細

深刻度: Medium

ID: 197577

ファイル名: fedora_2024-92664ae6fe.nasl

バージョン: 1.0

タイプ: local

エージェント: unix

公開日: 2024/5/22

更新日: 2024/5/22

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

リスク情報

VPR

リスクファクター: Medium

スコア: 6.7

CVSS v2

リスクファクター: Low

基本値: 2.1

現状値: 1.6

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

CVSS スコアのソース: CVE-2024-21823

CVSS v3

リスクファクター: Medium

基本値: 6.4

現状値: 5.6

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

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

脆弱性情報

CPE: cpe:/o:fedoraproject:fedora:40, p-cpe:/a:fedoraproject:fedora:kernel

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

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

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

脆弱性公開日: 2024/5/14

参照情報

CVE: CVE-2024-21823, CVE-2024-27398, CVE-2024-27399, CVE-2024-27400, CVE-2024-27401, CVE-2024-35947, CVE-2024-35949