CVE-2024-42096
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: x86: profile_pc() funksiyasında stek əməliyyatlarının dayandırılması 'profile_pc()' funksiyası taymer əsaslı profilləmə üçün istifadə olunur ki, bu artıq çox aktual deyil, lakin həmçinin stek düzülüşünə əsaslanan və mütləq şəkildə etibarlı olmayan fərziyyələrə söykənir. Əslində, kod spinlock-larda keçirilən vaxtı spinlock-un özünə yox, çağıran tərəfə yazmağa çalışır. Konsept olaraq bunu dəstəkləsəm də, günümüzdə taymerlər vasitəsilə ciddi profilləmə aparılmadığı üçün bu, kodun mürəkkəbliyinə və ya KASAN xəbərdarlıqlarına dəyməz. Və kod həqiqətən yalnız ən sadə hallarda doğru olan stek düzülüşündən asılıdır. Müəyyən bir mərhələdə (ehtimal ki, 32-bit və 64-bit kodları birləşdiriləndə) şərh itmişdi, lakin orada belə qeyd olunmuşdu: Fərz edin ki, kilidləmə funksiyasının ya stek freymi yoxdur, ya da PUSHF-dən götürülmüş eflags surəti var. Bu, kodun niyə kor-koranə stek göstəricisindən bir və ya iki söz yüklədiyini və sonra onların eflags və ya geri dönüş pc-si olub-olmadığını yoxlamaq üçün dəyərlərə minimum baxış keçirdiyini izah edir: Kernel ünvanlarından fərqli olaraq, Eflags-da 22-ci və daha yuxarı bitlər həmişə sıfırlanmış olur. Lakin bu təməl stek düzülüşü fərziyyəsi, kodu mürəkkəbləşdirə biləcək və stek freyminə səbəb olacaq heç bir kilid sazlamasının (lock debugging və s.) olmadığını fərz edir. Bu, illərdir syzkaller [1] və digərləri [2] tərəfindən bildirilən KASAN xətalarına səbəb olur. Bunun üçün artıq heç bir real praktiki səbəb qalmadığından, sadəcə kod silindi. Yalnız tarixi maraq üçün, 2006-cı ildən bu koda aid bəzi öncəki commit-lər: 0cb91a229364 ("i386: Account spinlocks to the caller during profiling for !FP kernels") 31679f38d886 ("Simplify profile_pc on x86-64") və 2009-cu ildən kodun birləşdirilməsi: ef4512882dbe ("x86: time_32/64.c unify profile_pc") lakin bu məsələnin əsasları əslində git ağacından daha əvvələ gedib çıxır.
Necə düzəltmək olar
- linux linux_kernel4.19.317, 5.4.279, 5.10.221, 5.15.162, 6.1.97, 6.6.37, 6.9.8 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 | v < 4.19.317, 4.20 ≤ v < 5.4.279, 5.5 ≤ v < 5.10.221, 5.11 ≤ v < 5.15.162, 5.16 ≤ v < 6.1.97, 6.2 ≤ v < 6.6.37, 6.7 ≤ v < 6.9.8, 6.10 | 4.19.317, 5.4.279, 5.10.221, 5.15.162, 6.1.97, 6.6.37, 6.9.8 |
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.