CVE-2025-22022

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: usb: xhci: NEC isoc uç noktalarında bağlantı zinciri (link chain) quirk'ünü uygula NEC uPD720200'ün iki farklı örneğinin (birinde başlatma/durdurma hatası olan, diğerinde olmayan), bazı Kaçırılmış Servis Hataları (Missed Service Errors - MSE) sonrası IOMMU hatalarına neden olduğu görülmüştür. Hata veren adres, bir aktarım halka segmentinin hemen sonrasındadır ve yamalanmış dinamik hata ayıklama mesajları, MSE'nin söz konusu segmentin sonuna yakın bir TD beklenirken alındığını ortaya çıkarmıştır: [ 1.041954] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ffa08fe0 [ 1.042120] xhci_hcd: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0005 address=0xffa09000 flags=0x0000] [ 1.042146] xhci_hcd: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0005 address=0xffa09040 flags=0x0000] Bir sonraki sayfanın HC tarafından erişilebilir bir halka segmenti olması durumunda durum daha da karmaşıklaşmaktadır. Aşağıda; ff1e8000 adresindeki segmentte MSE raporlanmakta, ff1e9000 adresindeki sıfırla doldurulmuş bir sayfa geçilmekte ve seg ff1e6000'e atlamak yerine her mikro çerçevede ff1ea000 adresindeki sayfadaki TRB'ler için olaylar raporlanmaya başlanmaktadır: [ 7.041671] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ff1e8fe0 [ 7.041999] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ff1e8fe0 [ 7.042011] xhci_hcd: WARN: buffer overrun event for slot 1 ep 2 on endpoint [ 7.042028] xhci_hcd: All TDs skipped for slot 1 ep 2. Clear skip flag. [ 7.042134] xhci_hcd: WARN: buffer overrun event for slot 1 ep 2 on endpoint [ 7.042138] xhci_hcd: ERROR Transfer event TRB DMA ptr not part of current TD ep_index 2 comp_code 31 [ 7.042144] xhci_hcd: Looking for event-dma 00000000ff1ea040 trb-start 00000000ff1e6820 trb-end 00000000ff1e6820 [ 7.042259] xhci_hcd: WARN: buffer overrun event for slot 1 ep 2 on endpoint [ 7.042262] xhci_hcd: ERROR Transfer event TRB DMA ptr not part of current TD ep_index 2 comp_code 31 [ 7.042266] xhci_hcd: Looking for event-dma 00000000ff1ea050 trb-start 00000000ff1e6820 trb-end 00000000ff1e6820 Belirli bir noktada tamamlanma olayları Isoch Buffer Overrun'dan Short Packet'e dönüşmekte ve HC nihayet ff1ec000 adresinde döngü biti uyumsuzluğu bulmaktadır. [ 7.098130] xhci_hcd: ERROR Transfer event TRB DMA ptr not part of current TD ep_index 2 comp_code 13 [ 7.098132] xhci_hcd: Looking for event-dma 00000000ff1ecc50 trb-start 00000000ff1e6820 trb-end 00000000ff1e6820 [ 7.098254] xhci_hcd: ERROR Transfer event TRB DMA ptr not part of current TD ep_index 2 comp_code 13 [ 7.098256] xhci_hcd: Looking for event-dma 00000000ff1ecc60 trb-start 00000000ff1e6820 trb-end 00000000ff1e6820 [ 7.098379] xhci_hcd: Overrun event on slot 1 ep 2 İzokron cihazdan gelen verilerin, diğer uç noktalardaki (IN veya OUT) bekleyen TD'lerin rastgele tamponlarına, diğer cihazlara ve hatta aynı IOMMU alanındaki diğer HC'lere yazılmış olması mümkündür. Son olarak, başka bir HC üzerindeki farklı bir USB cihazından kaynaklanan bir hata meydana gelmiştir. Bunun yukarıdaki durumdan kaynaklanıp kaynaklanmadığı bilinmemekle birlikte, böyle bir ihtimal vardır. Disk herhangi bir sorun olmadan çalışmaktaydı ve NEC'nin üst akış bant genişliğini tüketerek bu MSE'leri tetiklemek için PCIe trafiği oluşturmuştur. İki HC, ticari bir "PCIe splitter" kartı aracılığıyla tek bir x1 yuvasını paylaşmaktaydı. [ 7.162604] usb 10-2: reset SuperSpeed USB device number 3 using xhci_hcd [ 7.178990] sd 9:0:0:0: [sdb] tag#0 UNKNOWN(0x2003) Result: hostbyte=0x07 driverbyte=DRIVER_OK cmd_age=0s [ 7.179001] sd 9:0:0:0: [sdb] tag#0 CDB: opcode=0x28 28 00 04 02 ae 00 00 02 00 00 [ 7.179004] I/O error, dev sdb, sector 67284480 op 0x0:(READ) flags 0x80700 phys_seg 5 prio class 0 Şanslıyız ki, izokron halkalardaki Link TRB'lerinin zincir bitini ayarlayarak bu saçma hatanın önüne geçilebildiği görülmektedir. Bu bitin ayarlanmasını beklediği ve ayarlanmamışsa Link TRB'lerini görmezden geldiği bilinen diğer eski HC'ler de mevcuttur. Bildirilene göre, 0.95 spesifikasyonu bu bitin ayarlı olduğunu garanti ediyordu. 32KB/uframe UVC uç noktası çalıştıran ve bant genişliği yetersiz kalan NEC HC, saniyede onlarca MSE raporlamakta ve birkaç saniye içinde bu hataya düşmektedir. Link TRB'lerini zincirleme yöntemiyle bağlamak, aynı iş yükünün defalarca kez birçok dakika boyunca çalışmasına olanak tanımaktadır.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın16 Nis 2025
İlk görülme16 Nis 2025

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.12.22, 6.13.10 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernelv < 6.12.22, 6.13 ≤ v < 6.13.10, 6.146.12.22, 6.13.10

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.

CVE-2025-22022 · Linux Kernel · Dark Radar