Skip to content

Xen DMOP IOREQ rangeset missing checks (CVE-2017-15591)

DMOP IOREQ-server range-mapping interface'i, bir range'in başlangıcının bitişinden büyük olmadığını doğrulamayı başaramadı ve bir device-model domain'inin rangeset invariant'larını ihlal edip host'u crash etmesine olanak tanıdı.

Mechanism

Bug sınıfı / invariant

Device Model Operations (DMOP), bir emulator/stub-domain'in Xen'in rangeset olanağı üzerinden bir IOREQ server'a I/O ve memory range'leri kaydetmesine izin verir. Xen'in rangeset'leri, her range'in start <= end olması şeklinde bir iç invariant taşır. XEN_DMOP_*_io_range_to_ioreq_server path'i, guest/device-model tarafından verilen sınırları eklemeden önce bunu doğrulamadı. Ters çevrilmiş bir range vermek rangeset'in varsayımlarını kırar ve hypervisor geneli bir denial of service'e yol açar. Bu path'e yalnızca bir HVM guest'i kontrol eden domain'ler (örn. ayrıştırılmış/stub bir device model) ulaşabilir.

Walkthrough

Yalnızca kavramsal

XSA-238'den üst düzey yeniden kurulum.

  1. Bir device-model / stub domain, bir IOREQ server'a bir I/O veya memory range eklemek için DMOP interface'ini çağırır.
  2. Başlangıcı bitişini aşan bir range verir.
  3. Kontrol edilmemiş ekleme rangeset bookkeeping'ini bozar ve sistem geneli bir DoS üretir.

Detection

  • Bozuk (start > end) sınırlarla DMOP range kaydı yapan stub/device-model domain'lerini denetle.
  • Ayrıştırılmış bir device-model domain'i ile korele host crash'leri.

Mitigation

  • Range'i eklemeden önce start <= end'i doğrulayan XSA-238 patch'ini uygula (Xen 4.5+).
  • Mitigation: yalnızca PV guest çalıştır (HVM IOREQ/device-model surface'ini kaldırır) veya untrusted ayrıştırılmış device model'lerden kaçın.

References