CVE-2024-53096

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: mm: mmap_region() funksiyasının səhv yolundakı davranış problemi həll edildi mmap_region() funksiyası qarışıq idarəetmə axınına malikdir və problemlərin yaranmasına, natamam vəziyyətə, yaddaş sızmalarına və digər xoşagəlməz hallara səbəb ola biləcək çox sayda mexanizm olduğu üçün kifayət qədər risklidir. Mürəkkəbliyin böyük hissəsi VMA-nın xəritələnməsi prosesinin son mərhələsində xətaların idarə edilməsi cəhdlərindən qaynaqlanır ki, bu da son vaxtlar müşahidə olunan resurs sızmaları və tutarsız vəziyyət problemlərinin əsasını təşkil edir. Bu seriyadakı əvvəlki yamalardan istifadə edərək, bir sıra yoxlamaları kodun daha erkən mərhələlərinə köçürürük və əsas məntiqi statik daxili __mmap_region() funksiyasına daşıyaraq prosesi sadələşdiririk. Bu, hər hansı real iş görməzdən əvvəl bir sıra ilkin yoxlamalar aparmağa, yazıla bilən unmap yoxlamasını tələb olunduğu kimi şərtsiz geri qaytarmağa və həmçinin CONFIG_DEBUG_VM_MAPLE_TREE validasiyasını şərtsiz yerinə yetirməyə imkan verir. Biz burada bir neçə dəyişiklik etdik: 1. Fayl əsaslı yaddaş hook-unu çağırmazdan əvvəl iterator üçün yaddaşı öncədən ayırırıq, bu da bizə prosesdən erkən çıxmağa və mürəkkəb, xətalara meyilli close/free məntiqini tətbiq etməkdən qaçmağa imkan verir. Həm uğurlu, həm də xəta yollarında iterator vəziyyətini diqqətlə azad edirik. 2. Əhatəedici mmap_region() funksiyası mapping_map_writable() məntiqini erkən mərhələdə idarə edir. Əvvəllər mapping_map_writable() məntiqi yeni ayrılmış fayl əsaslı VMA-nın xəritələndiyi nöqtədə, müvafiq mapping_unmap_writable() isə uğurlu və xəta yollarında yerləşirdi. İndi bunu fayl əsaslı, paylaşılan yazıla bilən xəritələmə olduqda şərtsiz yerinə yetiririk. Lakin, əgər drayver flag-ləri dəyişib VM_MAYWRITE-ı ləğv edərsə, bu, yeni yerinə yetirdiyimiz seal yoxlamasını etibarsız etmir və biz hər halda wrapper-də sayğacı azaldırıq. Drayverin bunun əksini etməyə çalışmadığından əmin olmaq üçün debug assert yerinə yetiririk. 3. Biz həmçinin arch_validate_flags()-ı mmap_region() funksiyasına köçürürük. Bu yalnız arm64 və sparc64 üçün aktualdır və yoxlama yalnız ADI aktiv edilmiş SPARC üçün mənalıdır. Əgər drayver bu yoxlamanı etibarsız edərsə, bu arxitektura üçün xüsusi xəbərdarlıq əlavə edirik, baxmayaraq ki, kod sonda buna ehtiyac qalmayacaq şəkildə düzəldilməlidir. Bütün bu tədbirlər tətbiq edildikdən sonra, artıq xəta yollarında VMA-nı açıq şəkildə bağlamağa ehtiyac qalmır, çünki uğursuz ola biləcək bütün yoxlamaları hər hansı drayver mmap hook-u çağırılmamışdan əvvəl yerləşdiririk. Bu, bütöv bir xəta sinfini aradan qaldırır, kodu daha anlaşıqlı və daha davamlı edir.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc25 noy 2024
İlk görülmə25 noy 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.10.231, 5.15.174, 6.1.119, 6.6.63, 6.12 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel5.10.150 ≤ v < 5.10.231, 5.15.75 ≤ v < 5.15.174, 6.0.3 ≤ v < 6.1.119, 6.2 ≤ v < 6.6.63, 6.7 ≤ v < 6.12, 5.19.17, 6.125.10.231, 5.15.174, 6.1.119, 6.6.63, 6.12

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.

CVE-2024-53096 · Linux Kernel · Dark Radar