CVE-2023-54121

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: btrfs: btrfs_drop_extent_map_range funksiyasında yanlış bölünmə düzəldildi İstehsalat mühitində extent_map kodunda, xüsusilə ikinci bölünmə üçün add_extent_mapping() çağırılmalı olduğu zaman btrfs_drop_extent_map_range() funksiyasında müxtəlif WARN_ON() xətaları müşahidə olunurdu. Aşağıdakı extent map strukturunu nəzərə alın: PINNED [0 16K) [32K, 48K) Və sonra skip_pinned == true olmaqla [0, 36K) üçün btrfs_drop_extent_map_range çağırılır. İlkin dövr belə olacaq: start = 0 end = 36K len = 36K Biz [0, 16k) extentini tapacağıq, lakin o PINNED olduğu üçün onu ötürəcəyik, burada bu kod işləyir: start = em_end; if (end != (u64)-1) len = start + len - em_end; Burada em_end 16K-dır, buna görə də indi dəyərlər belədir: start = 16K len = 16K + 36K - 16K = 36K Halbuki len 20K olmalı idi. Bu, növbəti extent [32K, 48K) tapıldıqda problem yaradır; biz [36K, 48k) hissəsini saxlamaq üçün bu extenti bölməliyik, lakin bölünmə kodu belə görünür: split->start = start + len; split->len = em_end - (start + len); Bu halda bizdə: em_end = 48K split->start = 16K + 36K // bu 16K + 20K olmalı idi split->len = 48K - (16K + 36K) // 16K + 36K 52K olduğu üçün burada daşma baş verir Və indi ağacda potensial olaraq extent map-dəki digər girişlərlə üst-üstə düşən etibarsız bir extent_map var. Hətta üst-üstə düşmə olmadığı halda belə, split->start səhv təyin ediləcək ki, bu da bloklarla bağlı bütün hesablamalarda problemlərə səbəb olacaq. Əslində bu dövrdə len-ə ehtiyac yoxdur, son nöqtə kimi sadəcə end istifadə edə bilərik və yalnız ötürülməli olan pinned extent tapdıqda start dəyərini artıra bilərik. Etibarsız extent map daxil edilməsinin qarşısını almaq üçün məntiq bu şəkildə tənzimləndi. skip_pinned yalnız relocate halında istifadə olunur, ona görə də avtomatik relocate aktiv olduqda çox tez-tez baş verə bilən hallar istisna olmaqla, bu nisbətən nadir hadisədir.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux
Dərc24 dek 2025
İlk görülmə24 dek 2025

Necə düzəltmək olar

Yeniləyin
  • Linux Linux9f68e2105dd96cf0fafffffafb2337fbd0fbae1f, b43a4c99d878cf5e59040e45c96bb0a8358bfb3b, c962098ca4af146f2625ed64399926a098752c9c, 2.6.33 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
Linux Linux55ef68990029fcd8d04d42fc184aa7fb18cf309e ≤ v < 9f68e2105dd96cf0fafffffafb2337fbd0fbae1f, 55ef68990029fcd8d04d42fc184aa7fb18cf309e ≤ v < b43a4c99d878cf5e59040e45c96bb0a8358bfb3b, 55ef68990029fcd8d04d42fc184aa7fb18cf309e ≤ v < c962098ca4af146f2625ed64399926a098752c9c, c87afd35a28b2661a2626a1b28e9fd69adcad9f9, 2.6.32.19 ≤ v < 2.6.33, 2.6.339f68e2105dd96cf0fafffffafb2337fbd0fbae1f, b43a4c99d878cf5e59040e45c96bb0a8358bfb3b, c962098ca4af146f2625ed64399926a098752c9c, 2.6.33

Versiyanızı yoxlayın

Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.

Intelligence 360 paketində

Attack Surface Management

Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.