CVE-2022-50778

Naməlum

Təsvir

Linux nüvəsində aşağıdakı boşluq aradan qaldırılmışdır: fortify: UBSAN_BOUNDS_LOCAL altında __compiletime_strlen() funksiyasının düzəldilməsi CONFIG_FORTIFY=y və CONFIG_UBSAN_LOCAL_BOUNDS=y aktiv olduqda, Android-in Uyğunluq Test Dəstinin (CTS) android.hardware.input.cts.tests testləri işə salınarkən çalışma zamanı panika (runtime panic) müşahidə olunur. Bu, hidinput_allocate() daxilindəki strlen() çağırışından qaynaqlanır. __compiletime_strlen() funksiyası __builtin_object_size() əsasında tətbiq edilmişdir, daha sonra NUL-sonlandırmanı yoxlamaq üçün massivə müraciət edir. __builtin_object_size()-nın bir xüsusiyyəti ondan ibarətdir ki, dəyərləri çalışma zamanı müəyyən edilən sətirlər üçün __builtin_object_size(str, 1 və ya 0), həmin ölçülər tərtib zamanı (compile time) təyin edilə bildikdə mümkün dəyərlərin maksimum ölçüsünü qaytarır. Misal: static const char *v = "FOO BAR"; static const char *y = "FOO BA"; unsigned long x (int z) { // 8 qaytarır, hansı ki: // max(__builtin_object_size(v, 1), __builtin_object_size(y, 1)) return __builtin_object_size(z ? v : y, 1); } Beləliklə, FORTIFY_SOURCE aktiv olduqda, __compiletime_strlen()-ın cari tətbiqi çalışma zamanı v-nin ölçüsündən istifadə edərək y-nin sonundan kənara müraciət etməyə çalışacaq. UBSAN_LOCAL_BOUNDS ilə birlikdə bu, xətaya (fault) səbəb olur. hidinput_allocate() funksiyasında dəyəri switch operatorundan asılı olan lokal C sətiri var, buna görə də __builtin_object_size(str, 1) maksimum sətir uzunluğunu hesablayır və digər bütün hallar sonuncu simvolun yoxlanılması zamanı xəta verir. Lokal dəyişən yalnız literal dəyərlərə malik ola bildiyi üçün, strlen()-ə çalışma zamanı çağırışları verməmək məqsədilə hidinput_allocate() təmizlənə bilərdi, beləliklə orada strlen çağırış nöqtəsini gücləndirməyə (fortify) ehtiyac qalmazdı. İdarəetmə axınından asılı halları filtrləmək üçün makronun əvvəlində indeks 0 üzrə __builtin_constant_p() yoxlamasını yerinə yetirin. FORTIFY_SOURCE daxili mexanizmlərinin gözlənilən davranış xüsusiyyətlərini yoxlamaq üçün KUnit testi əlavə edin.

CiddilikNaməlum
CVSS—
İstismar ehtimalı—
MəhsulLinux
Dərc24 dek 2025
İlk görülmə24 dek 2025

Necə düzəltmək olar

Yeniləyin
  • Linux Linuxed42391164e6839a48aaf4c53eefda516835e799, 5d59ad2bfb35fccfe2ad5e8bb8801f6224d3f7d4, d07c0acb4f41cc42a0d97530946965b3e4fa68c1 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
Linux Linux3009f891bb9f328945ebd5b71e12df7e2467f3dd ≤ v < ed42391164e6839a48aaf4c53eefda516835e799, 3009f891bb9f328945ebd5b71e12df7e2467f3dd ≤ v < 5d59ad2bfb35fccfe2ad5e8bb8801f6224d3f7d4, 3009f891bb9f328945ebd5b71e12df7e2467f3dd ≤ v < d07c0acb4f41cc42a0d97530946965b3e4fa68c1, 5.16ed42391164e6839a48aaf4c53eefda516835e799, 5d59ad2bfb35fccfe2ad5e8bb8801f6224d3f7d4, d07c0acb4f41cc42a0d97530946965b3e4fa68c1

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-2022-50778 · Linux · Dark Radar