CVE-2025-39735
Açıklama
Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: jfs: ea_get() fonksiyonundaki slab-out-of-bounds okuma hatası düzeltildi ea_get() içerisindeki "size_check" etiketi sırasında kod, genişletilmiş öznitelik listesi (xattr) boyutunun ea_size ile eşleşip eşleşmediğini kontrol eder. Eğer eşleşmiyorsa, "ea_get: invalid extended attribute" günlüğünü kaydeder ve print_hex_dump() fonksiyonunu çağırır. Burada, EALIST_SIZE(ea_buf->xattr) değeri INT_MAX (2,147,483,647) değerini aşan 4110417968 değerini döndürür. Ardından ea_size şu şekilde sınırlandırılır: int size = clamp_t(int, ea_size, 0, EALIST_SIZE(ea_buf->xattr)); clamp_t, ea_size değerini 0 ile 4110417968 arasında sınırlamayı amaçlasa da üst sınır bir int olarak işlendiğinden 2^31 - 1 üzerinde bir taşmaya neden olur. Bu durum "size" değişkeninin başa dönmesine ve negatif (-184549328) olmasına yol açar. Ardından "size", print_hex_dump() fonksiyonuna (print_hex_dump() içinde "len" olarak adlandırılır) size_t (işaretsiz bir tür) tipinde aktarılır; bu değer daha sonra "int remaining" adlı bir değişkene, ardından "int linelen" değişkenine atanır ve sonrasında hex_dump_to_buffer() fonksiyonuna iletilir. print_hex_dump() içindeki for döngüsü, len değerinin 18446744073525002176 olduğu durumda 0'dan len-1'e kadar yineler ve her yinelemede hex_dump_to_buffer() fonksiyonunu çağırır: for (i = 0; i < len; i += rowsize) { linelen = min(remaining, rowsize); remaining -= rowsize; hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, linebuf, sizeof(linebuf), ascii); ... } len değeri bozulduğu ve çok büyük olduğu için beklenen durdurma koşulu (i < len) etkili bir şekilde devre dışı kalır. Bu durum nihayetinde "ptr+i" değerinin, "ptr"nin gerçek sınırlarının sonuna yaklaşacak şekilde hex_dump_to_buffer() fonksiyonuna iletilmesine yol açar ve sonuçta hex_dump_to_buffer() içindeki aşağıdaki for döngüsünde bir sınır dışı erişim gerçekleşir: for (j = 0; j < len; j++) { if (linebuflen < lx + 2) goto overflow2; ch = ptr[j]; ... } Bunu düzeltmek için "EALIST_SIZE(ea_buf->xattr)" değeri kullanılmadan önce doğrulanmalıdır.
Nasıl düzeltilir
- linux linux_kernel4.20, 5.4.292, 5.10.236, 5.15.180, 6.1.134, 6.6.87, 6.12, 6.12.23, 6.13.11, 6.14.2 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 4.19.325 ≤ v < 4.20, 5.4.287 ≤ v < 5.4.292, 5.10.231 ≤ v < 5.10.236, 5.15.174 ≤ v < 5.15.180, 6.1.120 ≤ v < 6.1.134, 6.6.64 ≤ v < 6.6.87, 6.11.11 ≤ v < 6.12, 6.12.2 ≤ v < 6.12.23, 6.13 ≤ v < 6.13.11, 6.14 ≤ v < 6.14.2 | 4.20, 5.4.292, 5.10.236, 5.15.180, 6.1.134, 6.6.87, 6.12, 6.12.23, 6.13.11, 6.14.2 |
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.
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.