CVE-2024-50118

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: btrfs: sert ro gereksinimleri varsa ro->rw yeniden yapılandırmasını reddet [BUG] Syzbot şu çökmeyi raporlamaktadır: BTRFS info (device loop0 state MCS): disabling free space tree BTRFS info (device loop0 state MCS): clearing compat-ro feature flag for FREE_SPACE_TREE (0x1) BTRFS info (device loop0 state MCS): clearing compat-ro feature flag for FREE_SPACE_TREE_VALID (0x2) Oops: general protection fault, probably for non-canonical address 0xdffffc0000000003: 0000 [#1] PREEMPT SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000018-0x000000000000001f] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014 RIP: 0010:backup_super_roots fs/btrfs/disk-io.c:1691 [inline] RIP: 0010:write_all_supers+0x97a/0x40f0 fs/btrfs/disk-io.c:4041 Call Trace: <TASK> btrfs_commit_transaction+0x1eae/0x3740 fs/btrfs/transaction.c:2530 btrfs_delete_free_space_tree+0x383/0x730 fs/btrfs/free-space-tree.c:1312 btrfs_start_pre_rw_mount+0xf28/0x1300 fs/btrfs/disk-io.c:3012 btrfs_remount_rw fs/btrfs/super.c:1309 [inline] btrfs_reconfigure+0xae6/0x2d40 fs/btrfs/super.c:1534 btrfs_reconfigure_for_mount fs/btrfs/super.c:2020 [inline] btrfs_get_tree_subvol fs/btrfs/super.c:2079 [inline] btrfs_get_tree+0x918/0x1920 fs/btrfs/super.c:2115 vfs_get_tree+0x90/0x2b0 fs/super.c:1800 do_new_mount+0x2be/0xb40 fs/namespace.c:3472 do_mount fs/namespace.c:3812 [inline] __do_sys_mount fs/namespace.c:4020 [inline] __se_sys_mount+0x2d6/0x3c0 fs/namespace.c:3997 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f [NEDEN] Yeni mount API'leri için farklı alt bölümlerin (subvolume) farklı RO/RW bayraklarıyla bağlanmasını desteklemek amacıyla, btrfs bu özelliği desteklemek için iki geçici çözüm getirmiştir: - Farklı bir alt bölüm bağlanıyorsa mount seçeneği/özellik kontrollerini atla - İlk bağlantı RO ise dosya sistemini RW olarak yeniden yapılandır Bu ikisi birleştiğinde şu senaryo oluşabilir: - Dosya sistemi ro,rescue=all,clear_cache,space_cache=v1 ile bağlanır. rescue=all, dosya sistemini sert salt okunur (hard read-only) olarak işaretler, böylece v2 önbellek temizleme işlemi gerçekleşmez. - Aynı dosya sisteminin bir alt bölümü rw olarak bağlanır. btrfs_get_tree_subvol() fonksiyonuna girilir ancak yeni fc RW olduğu ve orijinal dosya sisteminden farklı olduğu için fc_mount() EBUSY döndürür. Ardından mevcut fs_info bilgisini alabilmek için önce RO bayrağını değiştiren btrfs_reconfigure_for_mount() fonksiyonuna girilir ve ardından dosya sistemi RW olarak yeniden yapılandırılır. - Yeniden yapılandırma sırasında seçenek/özellik kontrolü atlanır. Bu durum, v2 önbellek temizlemenin yeniden başlatılacağı ve tekrar v1 önbelleğe dönüştürüleceği anlamına gelir. Bu işlem dosya sistemi yazmalarını tetikler ve orijinal dosya sistemi "rescue=all" seçeneğine sahip olduğundan, csum ağacı okuması atlanır. Bu durum nihayetinde süper blok geri yazımında (writeback) NULL işaretçi referansına (NULL pointer dereference) neden olur. [ÇÖZÜM] Farklı alt bölüm RO/RW bayraklarının neden olduğu yeniden yapılandırmalar için, uygun sert RO gereksinimlerinin karşılandığından emin olmak adına her zaman btrfs_check_options() fonksiyonunun çalıştırılması sağlanmıştır. Aslında btrfs_check_options() fonksiyonu çok karmaşık kontroller yapmamakta; yalnızca sert RO gereksinimlerini ve bazı özellik bağımlılıklarını kontrol etmektedir, dolayısıyla mount yeniden yapılandırması için bu kontrolün yapılmamasının özel bir nedeni yoktur.

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın5 Kas 2024
İlk görülme5 Kas 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.11.6 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel6.8 ≤ v < 6.11.6, 6.126.11.6

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.

CVE-2024-50118 · Linux Kernel · Dark Radar