CVE-2022-50778

Belirsiz

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: fortify: UBSAN_BOUNDS_LOCAL altında __compiletime_strlen() işlevini düzelt CONFIG_FORTIFY=y ve CONFIG_UBSAN_LOCAL_BOUNDS=y etkinleştirildiğinde, Android'in Uyumluluk Test Paketi (CTS) android.hardware.input.cts.tests çalıştırılırken bir çalışma zamanı paniği gözlemlenmektedir. Bu durum hidinput_allocate() içindeki bir strlen() çağrısından kaynaklanmaktadır. __compiletime_strlen(), __builtin_object_size() üzerinden uygulanmakta ve ardından NUL sonlandırmasını kontrol etmek için bir dizi erişimi gerçekleştirmektedir. __builtin_object_size() işlevinin bir tuhaflığı, değerleri çalışma zamanına bağlı olan dizeler için, bu boyutlar derleme zamanında belirlenebildiğinde __builtin_object_size(str, 1 veya 0) işlevinin olası değerlerin maksimum boyutunu döndürmesidir. Örnek: static const char *v = "FOO BAR"; static const char *y = "FOO BA"; unsigned long x (int z) { // 8 döndürür, bu da şudur: // max(__builtin_object_size(v, 1), __builtin_object_size(y, 1)) return __builtin_object_size(z ? v : y, 1); } Dolayısıyla FORTIFY_SOURCE etkinleştirildiğinde, __compiletime_strlen() işlevinin mevcut uygulaması çalışma zamanında v boyutunu kullanarak y'nin sonunun ötesine erişmeye çalışacaktır. UBSAN_LOCAL_BOUNDS ile birleştiğinde bir hata oluşur. hidinput_allocate(), değeri bir switch deyimine bağlı olarak kontrol akışına bağlı olan yerel bir C dizesine sahiptir, bu nedenle __builtin_object_size(str, 1) maksimum dize uzunluğuna değerlendirilir ve diğer tüm durumlar son karakter kontrolünde hata verir. hidinput_allocate(), yerel değişken yalnızca değişmez değerler alabildiğinden ve bu nedenle strlen() çağrı noktasını fortify etmeye çalışmanın bir faydası olmadığından, çalışma zamanı strlen() çağrılarından kaçınmak için temizlenebilir. Kontrol akışına bağlı durumu filtrelemek için makroda daha erken bir aşamada dizin 0'a karşı bir __builtin_constant_p() kontrolü gerçekleştir. FORTIFY_SOURCE iç bileşenlerinin beklenen davranış özelliklerini kontrol etmek için bir KUnit testi ekle.

ÖnemBelirsiz
CVSS—
İstismar olasılığı—
ÜrünLinux
Yayın24 Ara 2025
İlk görülme24 Ara 2025

Nasıl düzeltilir

Güncelleyin
  • Linux Linuxed42391164e6839a48aaf4c53eefda516835e799, 5d59ad2bfb35fccfe2ad5e8bb8801f6224d3f7d4, d07c0acb4f41cc42a0d97530946965b3e4fa68c1 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linux3009f891bb9f328945ebd5b71e12df7e2467f3dd ≤ v < ed42391164e6839a48aaf4c53eefda516835e799, 3009f891bb9f328945ebd5b71e12df7e2467f3dd ≤ v < 5d59ad2bfb35fccfe2ad5e8bb8801f6224d3f7d4, 3009f891bb9f328945ebd5b71e12df7e2467f3dd ≤ v < d07c0acb4f41cc42a0d97530946965b3e4fa68c1, 5.16ed42391164e6839a48aaf4c53eefda516835e799, 5d59ad2bfb35fccfe2ad5e8bb8801f6224d3f7d4, d07c0acb4f41cc42a0d97530946965b3e4fa68c1

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.