CVE-2024-27405
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: usb: gadget: ncm: Doğru şekilde ayrıştırılmış NTB'lerin veri paketlerinin düşürülmesini önleme Windows 11 ana bilgisayar olarak kullanıldığında ve NCM üzerinden tethering yapıldığında, bazı durumlarda gadget_giveback işleminin düzgün bir NTB'nin sonuna bir bayt eklediği gözlemlenmiştir. NTB ayrıştırıldığında, unwrap çağrısı u_ether tarafından sağlanan SKB içindeki kalan baytları arar ve bekleyen baytlar varsa bunları ayrı bir NTB olarak değerlendirip ayrıştırır. Ancak ikinci NTB (unwrap çağrısına göre) hatalı veya bozuk olduğunda, ilk NTB içinde doğru şekilde ayrıştırılan ve rx_list içine kaydedilen tüm veri paketleri düşürülmektedir. Eklenen özel izlemeler şunları göstermiştir: [002] d..1 7828.532866: dwc3_gadget_giveback: ep1out: req 000000003868811a length 1025/16384 zsI ==> 0 [002] d..1 7828.532867: ncm_unwrap_ntb: K: ncm_unwrap_ntb toprocess: 1025 [002] d..1 7828.532867: ncm_unwrap_ntb: K: ncm_unwrap_ntb nth: 1751999342 [002] d..1 7828.532868: ncm_unwrap_ntb: K: ncm_unwrap_ntb seq: 0xce67 [002] d..1 7828.532868: ncm_unwrap_ntb: K: ncm_unwrap_ntb blk_len: 0x400 [002] d..1 7828.532868: ncm_unwrap_ntb: K: ncm_unwrap_ntb ndp_len: 0x10 [002] d..1 7828.532869: ncm_unwrap_ntb: K: Parsed NTB with 1 frames Bu durumda, giveback 1025 bayttır ve blok uzunluğu 1024'tür. Geriye kalan 1 bayt (0x00), ayrıştırılmayacak ve bu da rx_list içindeki tüm veri paketlerinin düşürülmesiyle sonuçlanacaktır. Aynı durum 2048 boyutundaki paketler için de geçerlidir: [002] d..1 7828.557948: dwc3_gadget_giveback: ep1out: req 0000000011dfd96e length 2049/16384 zsI ==> 0 [002] d..1 7828.557949: ncm_unwrap_ntb: K: ncm_unwrap_ntb nth: 1751999342 [002] d..1 7828.557950: ncm_unwrap_ntb: K: ncm_unwrap_ntb blk_len: 0x800 Lecroy, fazladan bir bayt geldiğini göstererek baytın PC'den geldiğini doğrulamaktadır: Transfer 2959 - Bytes Transferred(1025) Timestamp((18.524 843 590) - Transaction 8391 - Data(1025 bytes) Timestamp(18.524 843 590) --- Packet 4063861 Data(1024 bytes) Duration(2.117us) Idle(14.700ns) Timestamp(18.524 843 590) --- Packet 4063863 Data(1 byte) Duration(66.160ns) Time(282.000ns) Timestamp(18.524 845 722) Windows sürücüsüne göre, wBlockLength sıfırdan farklıysa ZLP gerekmez; çünkü sıfırdan farklı olan wBlockLength, fonksiyon tarafına zaten beklenen aktarım boyutunu bildirmiştir. Bununla birlikte, piyasadaki bazı NCM cihazları, wBlockLength değeri wMaxPacketSize'ın katı olduğu sürece ZLP'ye güvenmektedir. Bu tür cihazlarla başa çıkmak için, aktarım artık wMaxPacketSize'ın katı olmayacak şekilde sona ekstra bir 0 eklenmektedir.
Nasıl düzeltilir
- linux linux_kernel4.19.308, 5.4.270, 5.10.211, 5.15.150, 6.1.80, 6.6.19, 6.7.7 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 | 2.6.38 ≤ v < 4.19.308, 4.20 ≤ v < 5.4.270, 5.5 ≤ v < 5.10.211, 5.11 ≤ v < 5.15.150, 5.16 ≤ v < 6.1.80, 6.2 ≤ v < 6.6.19, 6.7 ≤ v < 6.7.7, 6.8 | 4.19.308, 5.4.270, 5.10.211, 5.15.150, 6.1.80, 6.6.19, 6.7.7 |
| debian debian_linux | 10.0 | — |
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.