- Yama var
- Son 7 gün
CVE-2026-98959
Linux btrfs çekirdek: xattr değiştirirken dosya sistemi bozulması
- Yayımlandı
- Güncellendi
- 24 Eki 2026
- Açık yaşı
- 5 gün
- Kaydı açan
- Linux
Yönetici özeti
Bu açık, sunucularda kullanılan Linux çekirdeğinde veri bozulmasına ve sistemin durmasına yol açabilecek bir risk oluşturuyor. Uzaktan ve kimlik doğrulaması olmadan istismar edilebildiği için öncelikli olarak ele alınmalı. Güncelleme yapılana kadar etkilenen sunucular dikkatle izlenmelidir.
ÖzetTürkçe
Linux çekirdeğinin btrfs dosya sisteminde, aynı dizin öğesinde birden fazla genişletilmiş öznitelik (xattr) bulunduğunda ve bunlardan birinin değeri farklı boyutta değiştirildiğinde, yeni veri yapısı tam olarak başlatılmıyor. Bu durum, ağaç denetleyicisi tarafından yakalanan dosya sistemi bozulmasına ve işlemin iptal edilmesine yol açıyor. Etkilenen sürümler, veri kaynağında belirtilen Linux çekirdek dallarıdır.
Saldırgan ne yapabilir?
Bir saldırgan, veri kaynağındaki CVSS vektörüne göre ağ üzerinden ve kimlik doğrulaması olmadan dosya sistemi meta verilerini bozarak veri bütünlüğünü ve sistemin erişilebilirliğini etkileyebilir. Çekirdek uyarıları ve işlem iptalleri sistemin kararsızlaşmasına neden olabilir.
Kaynaktaki açıklama (İngilizce)
In the Linux kernel, the following vulnerability has been resolved:
btrfs: fix xattr replace when multiple xattrs are packed in the same item
If we have a btrfs_dir_item item that packs multiple xattrs and then we
replace the value of one of them (with the setxattr(2) family of syscalls)
with another value of a different size, we end up not having a fully
initialized btrfs_dir_item, resulting in a corruption that the tree
checker will detect at extent buffer writeback time.
This is because in btrfs_setxattr() when we find a btrfs_dir_item with
multiple xattrs (due to the crc32c hash of their name being the same)
we delete one of the xattr items (btrfs_dir_item) and then insert a new
one, but the deletion and insertion results in shifting existing data in
the leaf and therefore when the new value of a xattr has a different size,
the new btrfs_dir_item is placed in a leaf section that was not
initialized and we only copy the value's data and set the value's length
in the new btrfs_dir_item, without setting the name, the name's length,
the key (which must be all zeroes for xattrs), flags (BTRFS_FT_XATTR) and
transaction ID.
The following script reproduces the issue:
$ cat test.sh
#!/bin/bash
DEV=/dev/sdi
MNT=/mnt/sdi
mkfs.btrfs -f $DEV
mount $DEV $MNT
touch $MNT/testfile
# Add two xattrs that, on btrfs, have the same hash (crc32c) for their
# name and therefore are packed into the same btrfs_dir_item.
setfattr -n user.foobar -v 123 $MNT/testfile
setfattr -n user.WvG1c1Td -v qwerty $MNT/testfile
# Verify the xattrs are present.
echo "xattrs before:"
getfattr --absolute-names --dump $MNT/testfile
# Now replace the value of the foobar xattr with a significantly larger
# value.
setfattr -n user.foobar -v abcdefghijklmnopqrstuvwxyz $MNT/testfile
# Check the xattrs have the expected values.
echo "xattrs after:"
getfattr --absolute-names --dump $MNT/testfile
umount $MNT
Running it:
$ ./test.sh
(...)
xattrs before:
# file: /mnt/sdi/testfile
user.WvG1c1Td="qwerty"
user.foobar="123"
xattrs after:
# file: /mnt/sdi/testfile
user.WvG1c1Td="qwerty"
So the "user.foobar" xattr is missing and there was a transaction abort
when unmounting the fs with the following traces in dmesg:
$ dmesg
[869800.159271] BTRFS warning (device sdi): access to eb bytenr 30474240 len 16384 out of range start 16015 len 25964
[869800.159293] ------------[ cut here ]------------
[869800.159296] WARNING: fs/btrfs/extent_io.c:4408 at report_eb_range+0x44/0x60 [btrfs], CPU#8: getfattr/2605179
[869800.168961] Modules linked in: btrfs dm_thin_pool (...)
[869800.190527] CPU: 8 UID: 0 PID: 2605179 Comm: getfattr Tainted: G W 7.3.0-rc3-btrfs-next-244+ #1 PREEMPT(full)
[869800.193726] Tainted: [W]=WARN
[869800.194502] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org 04/01/2014
[869800.197576] RIP: 0010:report_eb_range+0x44/0x60 [btrfs]
[869800.198985] Code: 48 8b 7b 18 (...)
[869800.203531] RSP: 0018:ffffce4541937d58 EFLAGS: 00010246
[869800.204609] RAX: 0000000000000000 RBX: ffff8dde054b8738 RCX: 0000000000000000
[869800.206137] RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffffffc04c92a0
[869800.207645] RBP: 0000000000003e8f R08: 0000000000000000 R09: 3fffffffffefffff
[869800.226175] R10: ffffce4541937a88 R11: 0000000000000003 R12: 000000000000656c
[869800.227594] R13: ffff8dde14be800f R14: 000000000000656c R15: 0000000000000069
[869800.229097] FS: 00007f59023bb780(0000) GS:ffff8de5788ed000(0000) knlGS:0000000000000000
[869800.231137] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[869800.232321] CR2: 0000558dc45e6a78 CR3: 0000000765b16004 CR4: 0000000000370ef0
[869800.233783] Call Trace:
[869800.234330] <TASK>
[869800.234791] read_extent_buffer+0x4d/0x100 [btrfs]
[869800.235898] btrfs_listxattr+0x199/0x240 [btrfs]
[869800.236912] vfs_listxattr+0x51/0
---truncated---
Ne yapmalı?
- Linux çekirdeğini, veri kaynağında düzeltilmiş olarak belirtilen dallardan (3.11, 3.13, 3.15 ve 3.19) biri ya da daha yeni bir kararlı sürüme yükseltin. Veri kaynağına göre 6.6.160, 6.12.113, 6.18.57 ve 7.2.11 ve üzeri sürümler etkilenmiyor. Üretici
- Güncelleme yapılana kadar btrfs dosya sistemi kullanan sunucularda genişletilmiş öznitelik değiştirme işlemlerini kısıtlayın ve bu sunuculara erişimi yalnızca güvenilir kullanıcılarla sınırlayın. Genel öneri
- Güncelleme sonrasında çalışan çekirdek sürümünü doğrulayın ve sistem günlüklerinde btrfs ile ilgili uyarı veya hata kayıtlarının bulunmadığını kontrol edin. Genel öneri
Ek önlemler
- Btrfs dosya sistemlerinde düzenli yedekleme alın ve geri yükleme işlemlerini test edin. Genel öneri
- Çekirdek günlüklerini (dmesg) ve dosya sistemi hata kayıtlarını düzenli olarak izleyin. Genel öneri
Etkilenen sürümler1 yazılım
| Yazılım | Etkilenen | Düzeltildiği sürüm |
|---|---|---|
| Linux | ≥ 3.10.83, < 3.11 | 3.11 |
| ≥ 3.12.45, < 3.13 | 3.13 | |
| ≥ 3.14.47, < 3.15 | 3.15 | |
| ≥ 3.18.19, < 3.19 | 3.19 | |
| 3.19 | – | |
| < 3.19 Etkilenmiyor | – | |
| ≥ 6.6.160 Etkilenmiyor | – | |
| ≥ 6.12.113 Etkilenmiyor | – | |
| ≥ 6.18.57 Etkilenmiyor | – | |
| ≥ 7.2.11 Etkilenmiyor | – |
Kaynaklar7 kaynak
- CVE.org kaydı
- NVD kaydı
- git.kernel.org/…ble/c/7a53bb4668b319fc6c8a3ce2c21635125c7d2712 Diğer
- git.kernel.org/…ble/c/5877d7138cc4359d26fd7b010eedfd1b3162348f Diğer
- git.kernel.org/…ble/c/a97114b9b00ed3d05156f3b2ddbf797296260389 Diğer
- git.kernel.org/…ble/c/c1803697a60f22743aa28ad522f805e92d45e3f0 Diğer
- git.kernel.org/…ble/c/858bee1c77857aabcc2327cd32dd8266332de332 Diğer
Kayıt geçmişi
- Yayımlandı
İlgili açıklar
Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.