CVE-2026-64130
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: mm/page_alloc: init_on_free ilə böyük sıfır folionun teqlərinin (tags) inisializasiyasını düzəltmək Hazırda __GFP_ZEROTAGS semantikası bir qədər qeyri-adi olsa da, faktiki olaraq bu bayraq yalnız __GFP_ZERO və __GFP_SKIP_KASAN ilə birlikdə təyin edilir. Əgər biz init_on_free ilə işləyiriksə, allokasiya yolunda sıfırlamanı ötürmək üçün __free_pages_prepare() zamanı səhifələri sıfırlayacağıq. Lakin, __GFP_ZEROTAG təyin edilmiş halda allokasiya edildikdə, post_alloc_hook() nəticədə yalnız səhifə məzmununun təmizlənməsini deyil, həm də teq yaddaşının təmizlənməsini ötürəcək. __GFP_ZEROTAGS vasitəsilə teqlərin təmizlənməməsi, sonradan set_pte_at() vasitəsilə istifadəçi sahəsinə xəritələnəcək əksər səhifələr üçün əhəmiyyətsizdir: set_pte_at() və oxşar funksiyalar teqlərin hələ inisializasiya edilmədiyini (PG_mte_tagged təyin olunmayıb) aşkar edəcək və onları inisializasiya edəcəklər. Lakin, xüsusi kimi qeyd edilmiş PMD vasitəsilə xəritələnəcək böyük sıfır folio üçün bu inisializasiya yerinə yetirilməyəcək və nəticədə səhifələr üçün hələ də təyin edilmiş olan hansısa teqlər açıq qalacaq. Sənədlərdə (Documentation/arch/arm64/memory-tagging-extension.rst) qeyd olunub ki, səhifə ilk dəfə istifadəçi sahəsinə xəritələnəndə allokasiya teqləri 0-a təyin edilir. init_on_free aktiv olduqda, bu artıq böyük sıfır folio üçün keçərli deyil. Bu problem __GFP_ZEROTAGS-i __GFP_ZERO-dan ayırmaqla və tag_clear_highpages() funksiyasına səhifə məzmununu da təmizləmək istəyib-istəmədiyimizi ötürməklə düzəldilir. Daha aydın semantika yaratmaq üçün tag_clear_highpages() geri dönüş dəyərinin mənası tərsinə çevrilib. Səhifələr azad edilərkən 0-dan fərqli teqin təyin olunduğundan əmin olduqdan sonra, check_buffer_fill arm64/mte özünü-özü testini 2 MiB sahədən istifadə etmək üçün dəyişdirərək böyük sıfır folio ilə təkrar istehsal edildi (qeyd edin ki, yüklənmə zamanı biz faktiki olaraq teqləri inisializasiya etmirik, yalnız səhifə bayraqlarında KASAN_TAG_KERNEL təyin edirik). $ ./check_buffer_fill 1..20 ... not ok 17 Check initial tags with private mapping, sync error mode and mmap memory not ok 18 Check initial tags with private mapping, sync error mode and mmap/mprotect memory ... Bu kod daha çox təmizləməyə ehtiyac duyur; növbəti mərhələdə bunu həll edəcəyik, məsələn, __GFP_ZEROTAGS-i __GFP_SKIP_KASAN-dan ayıracağıq. [[email protected]: s/__GPF_ZERO/__GFP_ZERO/, David-in bildirişi əsasında]
Necə düzəltmək olar
- linux linux_kernel6.18.34, 7.0.11 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 6.18.1 ≤ v < 6.18.34, 6.19 ≤ v < 7.0.11, 6.18, 7.1 | 6.18.34, 7.0.11 |
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.
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.