Ana içeriğe geç
Donanım

ARM mimarisinde NX biti spekülatif komut getirmeyi engelliyor

Öne çıkanlar

  • ARM mimarisinde Device bellek türü yalnızca spekülatif veri erişimlerini engelliyor.
  • Dallanma tahmincisi dinamik çağrılarda sıfır adresine spekülatif komut getirme yapabiliyor.
  • Bellek bölgelerini yürütülemez (NX) olarak işaretlemek spekülatif komut getirme kilitlenmelerini çözüyor.

postmarketOS için ARM64 mimarisinde bare-metal hipervizör geliştiren bir yazılımcı, CTR_EL0 kaydı yakalama mekanizmasını etkinleştirdiğinde MediaTek MT6735 işlemcili telefonun kilitlendiğini tespit etti. Başlangıçta yazmaç bozulması veya önbellek tutarsızlığından şüphelenen geliştirici, C ve çevirici dili kodlarını karşılaştırarak hatanın kaynağını araştırmaya başladı. Yapılan testlerde statik 'bl' çağrısı sorunsuz çalışırken, dinamik 'blr' çağrısının kilitlenmeye yol açtığı ortaya çıktı.

İki komut arasındaki farkı inceleyen geliştirici, dinamik dallanmalarda kullanılan dallanma tahmincisinin adresi öngöremeyip sıfır adresine spekülatif komut getirme isteği gönderebileceğini belirledi. 1:1 bellek eşlemesinde sıfır adresinde yer alan kilitli BootROM alanına yapılan spekülatif erişim, donanımın çökmesine neden oldu. ARM mimarisinde bir bölgeyi yalnızca 'Device' olarak tanımlamanın sadece veri erişimlerini engellediği, spekülatif komut getirme işlemlerini durdurmadığı anlaşıldı.

Sorunu çözmek için ilgili bellek sayfaları yürütülemez (NX) olarak işaretlendi ve telefon altı aylık hata ayıklama sürecinin ardından sorunsuz şekilde önyüklendi. Çalışma, veri yürütme engelleme (DEP/NX) bitinin yalnızca güvenlik amaçlı olmadığını gösterdi. NX biti aynı zamanda mikro mimari düzeyindeki spekülatif donanım kilitlenmelerini engelleyen temel bir bellek yönetimi özelliği işlevi görüyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.