Bypassing Isolated Execution on RISC-V using Side-Channel-Assisted Fault-Injection¶
RISC-V PMP-based TEE'lere (Keystone dahil) yapılan, çalışan glitch parametrelerini cihazlar arası çıkarmak için side-channel bilgisini kullanan ve sonra enclave data'sını okumak için memory isolation'ı fault'layan bir fault-injection saldırısı.
Mechanism¶
Note
RISC-V, TEE isolation'ını Physical Memory Protection (PMP) ile enforce eder: M-mode firmware (örn. Keystone security monitor), daha düşük privilege'lı code'un enclave'ın physical memory'sine erişimini reddetmek için PMP CSR'larını programlar. Bir TEE'nin dayandığı invariant, bu PMP check'lerinin her erişim için daima geçerli olmasıdır. Fault injection, PMP'yi yapılandıran veya enforce eden instruction'ların execution'ını bozarak bu invariant'ı kırar; böylece tek bir check atlanır veya yanlış değerlendirilir ve korumalı bölge okunabilir hale gelir.
Fault injection'ın pratik engeli, başarılı glitch parametrelerini (timing offset, glitch genişliği/voltajı) bulmaktır — normalde yavaş, cihaza özel bir brute-force aramasıdır. Nashimoto, Suzuki, Ueno ve Homma (TCHES 2022), bu parametrelerin cross-device koşullarda side-channel bilgisinden çıkarılabileceğini gösterir: bir cihazda profil çıkarılan parametreler diğerine aktarılır. Side channel nereye ve ne zaman glitch yapılacağına rehberlik eder, samanlıkta iğne arama gibi bir fault aramasını hedefli bir aramaya dönüştürür ve PMP bypass'ını çok daha pratik kılar. Saldırıyı bir proof-of-concept PMP-based TEE'ye ve Keystone'a karşı doğrularlar, korumalı memory'den data recover ederler ve software-based bir countermeasure önerirler.
Sibling'den farkı: Bu TCHES 2022 çalışması, daha eski black-box Bypassing Isolated Execution on RISC-V with Fault Injection (ePrint 2020/1193) notunun ardılıdır; ayırt edici katkısı, glitch parametrelerini side-channel ile profil çıkarıp cross-device aktarmak ve bir countermeasure formalize etmektir — predecessor ise parametreleri her cihazda ampirik/black-box arar.
Walkthrough¶
Bu, fiziksel bir RISC-V target'ına yapılan bir hardware fault-injection saldırısıdır; aşağıdaki adımlar açıklanan metodolojiyi kavramsal olarak tanımlar — turnkey bir exploit değil.
-
PMP enforcement penceresini belirle. Security monitor, PMP configuration'ını enclave bölgesi U/S-mode'dan erişilemez olacak şekilde ayarlar. Privileged access check'i yapan veya context switch'te PMP (re)configuration'ını yapan code'u bul.
-
Bir side channel ile profil çıkar. Target PMP-korumalı path'i çalıştırırken power/EM trace'leri topla. Bu parametrelerin cihazlar arası genelleştiğinden yararlanarak, başarılı bir fault ile korele olan timing ve glitch parametrelerini türetmek için leakage'ı kullan.
# Conceptual: side-channel-guided parameter search vs. blind brute force
blind: sweep (delay × width × voltage) -> huge space, device-specific
SCA-guided: leakage pinpoints delay window -> small, transferable space
-
Fault'u inject et. PMP check'ini bozmak için glitch'i (clock/voltage) profil çıkarılan anda uygula, böylece trap etmesi gereken bir erişim onun yerine başarılı olur.
-
Korumalı memory'yi oku. Check fault'landığıyla, U-mode enclave'ın physical bölgesinden byte'lar okur.
Warning
Katkı, fault'u cihazlar arası güvenilir kılan side-channel-destekli parametre çıkarımıdır — glitch parametrelerinin her chip'e özgü olduğu ve bu yüzden bulmasının zor olduğu varsayımını çürütür. PMP'nin kendisi tek bir fault'lanmış check'e karşı içsel bir direnci yoktur.
Detection¶
- PMP configuration/enforcement path'i üzerindeki fault/glitch sensörleri (voltage ve clock monitor'leri) ve redundancy, anormal execution'ı işaretleyebilir.
- Makalenin software-based countermeasure'ı protection invariant'ını yeniden check eder, böylece tek bir fault'lanmış check memory'yi sessizce ifşa etmez.
Mitigation¶
- Makalenin önerdiği software countermeasure'ı uygula (PMP-enforced access kararının redundant verification'ı).
- Hardware glitch detection ile birleştir ve saldırganın cihazın power/clock'una erişimini fiziksel olarak kısıtla.