güvenlik açığı sanal bir makinede olabilir mi?


13

VirtualBox gibi bir sanal makinenin güvenlik açığı "hayaleti" olması mümkün müdür? Bence VM belki sıra dışı yürütme yapıyor, ama bence sonucu okumak için önbelleğe bakmak mümkün değil.

Sanal CPU'nun önbelleğinin nasıl okunabileceğine dair bir açıklama var mı?


4
Evet, küçük bir araştırma VMWare'in Spectre ve Meltdown'a yönelik yamalar yayınladığını doğrulardı. Konuk işletim sistemi ek olarak gerçek hipervizöre (her iki tipte)
yamanmalıdır

Sanallaştırma seviyesine bağlı olduğunu söyleyebilirim. Sanal bir CPU simüle ediyorsanız, muhtemelen güvende olursunuz. Ancak modern sanal makinelerin yaptığı bu değil.
Bergi

Sanal CPU'nun önbelleğinin nasıl okunabileceğine dair bir açıklama var mı?

1
@jms detaylar cevabımda bağlantı verdiğim kanonik yazıda:Spectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
Mokubai

1
@jms Sanallaştırma yalnızca hızlıdır çünkü fiziksel işlemciyi olabildiğince az soyutlama ile kullanır ve yalıtım ve soyutlama sağlamak için CPU donanımına dayanır. Yapılacaklar gibi qemubir olmadığı için daha güvenli olacaktır öykünme yapabilirsiniz donanım işlemci, ancak daha yavaş kadar ve sanallaştırma farklıdır.
Mokubai

Yanıtlar:


14

Evet Spectre ana bilgisayar / konuk, konuk / ana bilgisayar ve konuk / konuk sınırlarını geçebilir, çünkü bu CPU düzeyinde bir kusurdur, bu da potansiyel olarak hassas bilgilerin bir CPU çekirdeğinde çalışan her şeye sızabileceği anlamına gelir.

İnternetteki haberlerin çoğu, sanallaştırılmış ve hassas bilgileri sızdırmak için kötüye kullanılabilecek büyük sistem kümelerine sahip oldukları için bulut sağlayıcılarının bundan en kötü şekilde etkilendiği hakkında konuşuyor.

Büyük sağlayıcıların çoğu, şimdiye kadar, olabilecek en iyi şekilde, kusurlara karşı yamalı olmalı, ancak bu, bir süredir bizimle yaşayan bir sorun olacak.

Güvenlik.SE'nin bu konuda kanonik bir Soru ve Cevapları vardır ve VM'lerden bahseder:

Sanal Makine / Kaplar kullanıyorum, ne ölçüde savunmasızım?

Gereğince Steffen Ullrich cevabı

  • Erime saldırıları VM'leri geçmez, sadece yerel işlemlere çekirdek belleği sızdırır.
  • Spectre sanal makinelerde çalışabilir.

Yine Steffen'den Meltdown ve Spectre, konteynırlar ana çekirdeğe dayandığından kaplarla çalışır.

VM'ler, sisteminizdeki gerçek CPU'yu, bazı ayrıcalıklı talimatlar yakalanmış ve yeniden yönlendirilebilecek şekilde kullanır. Ana bilgisayar ile aynı önbellekleri ve talimatları kullanır. Aslında sisteminizdeki fiziksel CPU içindeki başka bir katman.

Sanallaştırma sadece hızlıdır çünkü fiziksel CPU'yu olabildiğince az soyutlama ile kullanır ve izolasyon sağlamak için CPU donanımına dayanır. Qemu gibi şeyler , bir işlemci CPU olmadığı için daha güvenli olacak şekilde öykünme yapabilir , ancak çok daha yavaştır ve sanallaştırmadan farklıdır.

Gönderen Security.se yayınlamak kurallı tekrar:

Spectre farklı bir seviyede çalışır ve kullanıcı-uzayından çekirdek-uzay verilerine erişime izin vermez. Bu saldırıda, saldırgan talimatların hatalı olarak tahmin edilmesi için spekülatif yürütmeyi kandırır. Özetle, yordayıcı, belirli bir dal sonucunu (eğer -> doğru) tahmin etmeye zorlanır, bu da mağdur sürecinin normal olarak talep etmeyeceği sınırsız bir bellek erişimi istemeye ve yanlış spekülatif yürütmeye neden olur. Sonra yan kanal tarafından bu belleğin değerini alır. Bu şekilde, mağdur sürecine ait bellek, kötü niyetli sürece sızdırılır.

Dolayısıyla, VM gerçek CPU donanımında çalıştığı ve tek yapması gereken spekülatif yürütme motorunu "eğitmek" için belirli bir döngü çalıştırmaktır. Daha sonra, kullanmak istediği ana bilgisayar veya konuk (veya diğer VM) sürecini gösteren belirli erişim kalıpları için önbellekleri izlemek için hassas zamanlamayı kullanabilir.

Bu şekilde bir makinenin her yönden kullanılabilir olduğu anlamına gelir. Ana bilgisayardan VM'ye, VM'den ana bilgisayara ve VM'den VM'ye.

Evet, hiçbir şekilde kolay değildir ve VM CPU çekirdeği ana bilgisayarın kaprisinde değişebileceğinden ve ana bilgisayar görevleri farklı çekirdekler üzerinde de mutlu bir şekilde zamanlayabildiğinden çıkarmak zor bir şeydir, ancak uzun bir süre boyunca yeterli bilgi bazı önemli sistem veya hesaplara gizli bir anahtar vermek için sızdırabilir. Yeterli zaman ve bazı gizli yazılımlar göz önüne alındığında her şey potansiyel olarak açıktır.

Eğer "güvenli" bir sanal makine istiyorsanız, çekirdeklerin izole edildiğini garanti etmelisiniz. Bu saldırıyı engellemenin tek gerçek yolu, ana bilgisayarı ve VM'leri yalnızca belirli çekirdekleri kullanmaya "zorlamak" olacaktır, böylece asla aynı donanımda çalışmazlar, ancak bu, yapamayacağınız için maliyette etkili bir artışa neden olur. belirli bir ana bilgisayarda çok sayıda VM'ye sahip olmak. Çekirdeklerinizden daha fazla VM çalıştırmaktan asla kurtulamazsınız, bu da birçok sistemin hayatlarının% 90'ı için boşta oturduğu için "düşük yük" sunucularında yapılmasını beklediğim bir şeydir.


2
Soruyu "ana işlemci CPU etkileniyorsa, VM de etkilenecek mi?" Soruyu anlamak gibi, bu "bilgisayar CPU olup olmadığını sorar değil etkilenen VM olabilir hala etkilenecek?" Bunu temizleyebilir misin?
AndreKR

1
@AndreKR: şu anda tüm sıra dışı yürütme işlemcileri Spectre'den etkileniyor; yalnızca yazılım geçici çözümleriyle bir sistem güvenliğini sağlayabilirsiniz (ve bu nedenle VM, bunu önemsemelidir, ancak CPU tesisleri sağlarsa, örneğin Intel'in IBRS şeyleri varsa konukları birbirinden izole edebilir). Ancak spekülatif yürütme olmayan sıralı bir CPU'da, iki yazılım parçası arasında hiçbir Spectre güvenlik açığı bulunamaz. Spectre'nin özü, gizli verileri mikro-mimari duruma sokan bir şeyin spekülatif yürütülmesini kışkırtır; sıralı işlemciler bunu yapmaz.
Peter Cordes

En ilginç şey spekülatif uygulama değildir. En ilginç şey, bir sürecin bir sanal makinede bile önbellekte ne olduğunu nasıl bulabileceğidir.

@jms kullanılabilir yan kanal saldırıları kolaylaştırılır ve spekülatif yürütme tarafından faydalı hale getirilir. İşlem önbellek satırlarını doğrudan okuyamayabilir, ancak spekülatif yürütme, zamanlama saldırıları tarafından algılanabilen veya çıkarılabilen önbelleğe değerler koyan hesaplamalar yaparak bilgi sızdırabilir. Spectre
Mokubai

0

gem5

Ana bilgisayar CPU'sunu kullanmadan güvenlik açıklarını yalnızca emülasyonla çalışmak / çoğaltmakla ilgileniyorsanız, QEMU'nun CPU boru hattını simüle etmediği için onları gözlemleyecek kadar ayrıntılı olduğunu düşünmüyorum.

gem5, araştırma ve geliştirmedeki sistem performansını tahmin etmek için kullanılır ve Spectre'yi tamamen temiz ve kontrollü bir ortamda gözlemlemenize yetecek kadar CPU dahili simülasyonu yapar.

Görselleştirmeli harika bir x86_64 demosu şu adreste yayınlanmıştır: http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

Gem5'in dezavantajı, QEMU'dan çok daha yavaş olması, simülasyonun daha ayrıntılı olmasıdır.

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.