Reptar (CVE-2023-23583)¶
REP MOVSBüzerindeki gereksiz (redundant) birREXprefix'i, FSRM yeteneğine sahip Intel core'larında tutarsız bir micro-op replay'i tetikler; hang'lere ve — sınırlı durumlarda — CPL3'ten CPL0'a bir privilege escalation'a yol açar.
Not: sidechannel/ altında dosyalanmış olsa da Reptar birincil olarak DoS/EoP'ye yol açan bir microarchitectural correctness bug'ıdır, saf bir data-leak side-channel'ı değil; buraya side-channel'a komşu bir microarchitectural correctness sınıfı olduğu için yerleştirilmiştir.
Mechanism¶
Sınır neden kırılıyor
Modern Intel core'ları Fast Short Repeat Move (FSRM) uygular; bu, kısa
REP MOVSB string kopyalarını hızlandıran bir microcode/hardware
optimizasyonudur. Reptar bir decoder/sequencer köşe durumudur: REP MOVSB
bir redundant REX prefix ile encode edildiğinde (bu konumda hiçbir
architectural anlam taşımayan ve basitçe yok sayılması gereken bir x86 prefix
byte'ı), front-end ile FSRM fast path, instruction uzunluğu ve micro-op state
konusunda anlaşmazlığa düşer.
Kırılan invariant, speculation/rollback altında architectural-state tutarlılığıdır. Redundant prefix makineyi tasarımcıların öngörmediği bir duruma sokar, dolayısıyla:
- branch mispredict recovery ve micro-op sequencer, pipeline'ı tutarsız bir durumda bırakabilir,
- register ve instruction-pointer state'i bozulabilir ya da "takılı" kalabilir,
- gözlemlenen en kötü durumlarda tutarsızlık, unprivileged (ring 3) kodun privileged (ring 0) yürütmeyi etkilemesine izin verir, yani bir escalation of privilege.
Birincil etki deterministik bir makine hang/crash'idir (bir guest dahil herhangi bir unprivileged context'ten erişilebilir bir denial of service); bu da Reptar'ı saf bir data-leak kanalından çok, side-channel'a komşu ve EoP sonuçları olan bir correctness bug'ı yapar.
Walkthrough¶
Kamuya açık Google writeup'ı, faulting instruction'ı oluşturmayı ve makinenin takılışını gözlemlemeyi tarif eder. Kavramsal olarak:
; Conceptual: an architecturally-redundant REX prefix in front of a
; fast-short REP MOVSB string move. The exact triggering context is
; microarchitectural and is NOT a copy-paste exploit.
rep movsb ; fast short repeat move (FSRM path)
; ...preceded by a redundant REX prefix byte under specific conditions
Advisory ve disclosure'dan yüksek seviyeli reprodüksiyon mantığı:
- Redundant-prefix
REP MOVSBformunu, FSRM yeteneğine sahip bir core'da sıkı bir döngü / belirli bir speculative pencere içinde çalıştır. - Non-deterministic corruption gözlemle: instruction pointer ya da register state'i architectural tanımdan sapar.
- Tek bir thread'de core hang olur; sibling logical core'lar aktifken tüm physical core (ve çoğu zaman makine) kilitlenir.
Gözlemlenen etki (kavramsal)
Warning
Tetikleyici özel bir privilege gerektirmediğinden, kötü niyetli bir VM guest'i ya da container tenant'ı paylaşılan bir host'u hang ettirebilir. Cloud'la ilgili threat model budur: bir multi-tenant sınırı boyunca availability kaybı.
Detection¶
- Untrusted workload'larla korele olan beklenmedik core/makine hang'leri ya da
machine-check event'leri birincil sinyaldir; IPMI/BMC log'larında,
mcelog'da ve kernel ring-buffer hard-lockup uyarılarındaMCE/#MCgirdilerine bak. - Yakın zamanda guest ya da sandbox'lanmış kod çalıştırmış core'larda host watchdog / NMI-watchdog hard-lockup tespitleri.
- Redundant prefix'li olağandışı instruction stream'leri yayan process'ler
için telemetri (perf/ETW instruction sampling, anti-cheat tarzı kod
tarayıcıları); meşru compiler'lar
REP MOVSBöncesinde redundant birREXyaymaz. - Tek bir tenant tarafından tetiklenen, hypervisor host'larında crash-loop / liveness alarmları.
Mitigation¶
- INTEL-SA-00950 / CVE-2023-23583 için Intel'in microcode update'ini uygula.
Intel, redundant-prefix işlemesini düzelten microcode yayınladı; distro'lar
bunu
microcode_ctl/intel-ucodeve OEM BIOS güncellemeleri üzerinden dağıtır. - Patch'lenene kadar, SMT/hyper-threading'i devre dışı bırakmak bazı konfigürasyonlarda hang'in etki yarıçapını azaltır (ama ortadan kaldırmaz).
- Düzeltilmiş microcode'un boot'ta erken yüklenmesi (early-microcode loading) için hypervisor'ı ve OS'i güncel tut.