Linux çekirdeğinin “Retpoline” özelliğinin etkin olup olmadığı nasıl kontrol edilir?


17

"Spectre" güvenlik açığına gelince, riski azaltmak için bir çözüm olarak "Retpoline" tanıtıldı. Ancak, bir yazı okudum:

Çekirdeği olmadan oluşturursanız CONFIG_RETPOLINE, retpoline ile modüller oluşturamazsınız ve daha sonra yüklenmelerini bekleyemezsiniz - çünkü thunk sembolleri dışa aktarılmaz.

Gerçi retpoline ile çekirdek oluşturmak varsa, olabilir başarıyla retpoline ile inşa edilmez modüllerini yükleyin. ( Kaynak )

Çekirdeğin "Retpoline" özelliğinin etkin olup olmadığını kontrol etmenin kolay ve yaygın / genel / birleştirilmiş bir yolu var mı? Bunu yapmak istiyorum, böylece yükleyicim kurulacak çekirdek modülünün uygun yapısını kullanabilir.

Yanıtlar:


21

Ana hat çekirdeklerini veya çoğu büyük dağıtımın çekirdeklerini kullanıyorsanız, tam retpoline desteğini kontrol etmenin en iyi yolu ( yani , çekirdek ile yapılandırılmış CONFIG_RETPOLINEve retpoline özellikli bir derleyici ile oluşturulmuştur) “Tam jenerik retpoline ”İçinde /sys/devices/system/cpu/vulnerabilities/spectre_v2. Sistemimde:

$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Full generic retpoline, IBPB, IBRS_FW

Daha kapsamlı testler istiyorsanız, spectre_v2sistem dosyası olmadan çekirdeklerdeki retpolinleri tespit etmek için, olayların nasıl spectre-meltdown-checkergittiğine bakın.


2
Greg Kroah-Hartman'ın blogunda$ grep . /sys/devices/system/cpu/vulnerabilities/* önerilen erime / hayaletle ilgili diğer güvenlik açıklarını da kontrol etmek için çalıştırın .
Alex Vong

1
Teşekkürler @Alex; Belirli bir soruyu cevaplıyordum, ama bu yararlı - head /sys/devices/system/cpu/vulnerabilities/*kendimi tercih etmeme rağmen ;-). Bu şu anda Meltdown / Spectre güvenlik açıklarını kapsamakta, ancak benzer nitelikteki gelecekteki güvenlik açıklarını da kapsamalıdır (ad alanı bilerek geneldir).
Stephen Kitt

@StephenKitt Evet, headdaha güzel biçimlendirilmiş çıktılar verir.
Alex Vong

4

Bu özel durumda Stephen Kitt'in cevabı daha kapsamlı, çünkü retpoline desteğinin yeni derleyici sürümüne de ihtiyacı var.

Ancak genel durumda, çoğu dağıtımda aşağıdaki konumlardan birinde bulunan çekirdek yapılandırma dosyası bulunur:

  • /boot/config-4.xx.xx-...
  • /proc/config.gz

Sonra sadece zgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz


4
Yanlış bir güvenlik hissi veren yüklü bir çekirdek görüntüsünde /boot/config*bulabileceğinden, içeri girmeye karşı öneriyorum CONFIG_RETPOLINE. İncelemek /proc/config.gzveya /sys/...güvenlidir, ancak birçok Linux dağıtımı çekirdeği derlemeden derler /proc/config.gz.
pts

Mantığı biraz daha akıllı hale getirebilir ve şu anda çalışan çekirdeği elde etmek için uname (veya eşdeğer sistem çağrısı) kullanabilir ve ardından bu / boot / config dosyasını inceleyebilir misiniz?
Adam Luchjenbroers

@pts /boot/config-$(uname -r), sonra?
muru

2
Kullanmak /boot/config-$(uname -r)da kusursuz değildir: hala yapılandırmanın çalışan çekirdeğe uygun olduğunu garanti etmez. Dağıtım uname -rABI, çekirdek ABI değişmediği sürece, birden çok sürümde aynı kalır.
Stephen Kitt

Cevabınız için hepinize teşekkür ederim. Cevabınız ve mesajınız faydalıdır.
Weishan Yang
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.