Skip to content

Xen XSA-359 FIFO event-channel reordered-read NULL deref

Xen XSA-359 / CVE-2020-29571: FIFO event-channel consumer tarafı read-ordering koruması içermez; bu yüzden weakly-ordered bir (ARM) CPU'da control structure'ın reordered read'leri bir bounds check'i geçip NULL'ı dereference edebilir — hypervisor'ı crash eder.

Mechanism

Note

Çoğu FIFO event-channel operation-time fonksiyonu, CPU'nun tutarlı bir control-structure state'i gözlemlemesine dayanan ortak bir bounds check paylaşır. Producer tarafı uygun şekilde ordered write'lar kullanır, fakat consumer tarafı karşılık gelen read ordering'den yoksundur ("isn't protected against re-ordered reads"). Isolation invariant'ı — consumer'ın asla yarı-yayınlanmış bir control structure üzerinde işlem yapmaması — weakly-ordered bir CPU'da fail olur: reordered read'ler, consumer'ın hâlâ bounds check'i geçen stale/NULL bir state görmesine ve ardından bir NULL pointer'ı dereference etmesine, hypervisor'ı ve tüm sistemi crash etmesine yol açabilir. NVD'ye göre yalnızca Arm sistemleri vulnerable olabilir (x86, güvenli olacak kadar strongly-ordered'dır).

Kardeş FIFO event-channel bug'ları: XSA-188 use-after-free and XSA-107 control-block mishandling DoS.

Walkthrough

Public reference: Xen Security Advisory 359 ve NVD CVE-2020-29571. Kavramsal yol (temsili; advisory sınıfı belirtir):

  1. Bir ARM host üzerinde, FIFO event channel kullanan bir guest eşzamanlı olarak event-channel expansion/operation'larını sürer.
  2. Consumer yolu, producer'ın ordered write'ları weakly-ordered CPU'da henüz sırayla görünür hâle gelmemişken FIFO control-structure state'ini okur.
  3. Stale/NULL görünüm bounds check'i geçer ve dereference edilir, host'u crash eder (yalnızca availability etkisi).

Beklenen gözlem: FIFO event-channel operation'larını / channel expansion'ı yoğun şekilde çalıştıran guest'lerle korele olan, bir ARM host üzerindeki hypervisor crash'i. Geçici ordering race'i crash'ten önce gözlemlemek zordur.

Warning

Bug sınıfı için belgelenmiş, patch'lenmiş bir issue. Yalnızca kavramsal.

Detection

  • Architecture-aware: yalnızca ARM host'larda geçerli. FIFO event-channel operation'larını yoğun şekilde çalıştıran guest'lerle korele olan hypervisor crash'lerini izle.

Mitigation

  • xsa359.patch'i uygula (eksik read ordering'i ekler). Etkilenen: Xen 4.4 ve sonrası (NVD: 4.4.0 ile 4.14.0 arası); 4.3 ve öncesi vulnerable değil. Yalnızca ARM; x86 vulnerable değil. CVSS 3.1 6.2 (yalnızca availability). Patch olmadan mitigation yok.

References