Windows 10 güvenliği: Gölge yığını bilgisayar korsanlarını uzak tutmaya nasıl yardımcı olur?

Windows, tüm ortak saldırı sınıflarını engellemek için Intel'in Kontrol Akışı Uygulama Teknolojisini nasıl kullanacak, şimdi pazara ulaşıyor.

Bilgisayar korsanlarının saldırı sistemlerinde kullandıkları güvenlik açıklarının arkasındaki hataları düzeltmek önemlidir, ancak saldırganların bu güvenlik açıklarından yararlanmak ve tüm sömürü sınıflarını kaldırmak için kullandıkları teknikleri engellemek – veya en azından onları daha pahalı ve zaman- yapmak çok daha etkilidir. oluşturmak için tüketen.

Geri dönüş odaklı programlama (ROP) bir çok yaygın teknik bu engellenmesi özellikle zordur, çünkü çalışan kodlara kendi kodlarını enjekte etmeye çalışmak yerine (işletim sistemleri ve tarayıcılar savunma ekliyor), saldırganlar zaten bellekte bulunan 'return' içeren meşru kodun küçük parçalarını arar – – kodun yeni bir rutine veya ana iş parçacığına geri atlaması.

Microsoft OS işletim direktörü Dave Weston TechRepublic'e verdiği demeçte, "ROP ile yeni kod oluşturamıyorum; yalnızca farklı kod parçalarına atlayabilir ve bunu bir yüke bağlamaya çalışabilirim." Meşru kodda arabellek taşması gibi bir bellek güvenliği hatası varsa, bellekteki bu işaretçileri bozmak, sistemin programın çağrı yığınındaki adrese geri dönmek yerine saldırganın kendi kodunu çalıştırmaya başladığı anlamına gelir.

Microsoft, 2012'den bu yana bu tür programlarda saldırganların denetim akışını kaçırmasını önlemenin yolları üzerinde çalışıyor. Windows, önemli kodu imzalayarak (Kod Bütünlüğü Korumasıveya CIG) ve çalışma zamanı kodu oluşturmayı önce tarayıcıda, ardından VM'lerde ve çekirdeğin (Keyfi Kod Korumasıveya ACG).

"Amaç, saldırganın Microsoft'un veya üçüncü taraflarımızdan birinin imzalamadığı bir ikili dosyayı yüklemesini önlemektir; işlemden yararlanabilir ve işlemde bellek bozulması olsa bile, kabuk kodu enjekte edemez veya diğer yapılar, "diye açıkladı Weston.

Bu savunma saldırganları ROP'u kullanmaya itecek kadar etkili oldu, bu nedenle bir sonraki adım programdaki kontrol akışını korumaya çalışıyordu. Denetim akış bütünlüğü Windows 8.1'de Akış Korumasını Kontrol Et (CFG) Bu, kontrol akış saldırılarını (kodun atladığı veya bir arama yaptığı ve saldırganların yanlış yere göndermeye çalıştığı) ileriye doğru engeller.

"Derleme zamanında, yazılım geliştiricisinin kod yapmak istediği tüm dolaylı aktarımların veya atlamaların veya çağrıların bir kaydını alıyoruz ve bu harita ikili dosyayı yüklediğinizde çekirdeğe aktarılıyor ve kod çalıştırıldığında zorlanıyor" Dedi Weston. Saldırgan, kodu harita üzerinde olmayan bir adrese göndermeyi başarırsa işlem sonlandırılır: virüslü bir uygulama kilitlenir, ancak kötü amaçlı kod çalıştırmaz.

CFG, Windows 7'ye yapılan birkaç önemli sıfır gün saldırısının Windows 10'u etkilememesinin nedenidir. Ancak Weston'un belirttiği gibi 2015, güvenlik açısından uzun zaman önceydi ve CFG, sorunun sadece bir kısmını ele alıyor. "Saldırganlar aslında ROP karelerini veya kötü niyetli komut kümelerini enjekte ederek yığını bozmaya başladılar." Ana sıçramaya döndüğünde yürütme akışına müdahale ederek değil, ileri atlamak yerine CFG'yi atlayabilir ve iş parçacığının geri dönmesi gerektiğinde kendi kodlarını yürütebilirler.

Ara ve geri dön

Microsoft bunun olabileceğini bilmiyordu; korunmak daha zordur ve en iyi seçenek, donanımda, dönüş adresinin kurcalanamayacağı bir kopyasını tutan özel bir kayıt defteri ile donanımda yapmaktır. İade talimatı olan kod yığını çalıştığında, bellekteki çağrı yığını üzerindeki adresi, kurcalanmadığını kontrol etmek için işlemcide saklanan 'gölge' yığını üzerindeki adresle karşılaştırabilir.

Yeni CPU talimatları tasarlamak zaman alır ve bu gemiler gönderildikten sonra insanlar yeni donanım satın almadan önce biraz zaman alır, bu nedenle Microsoft yazılımda bir gölge yığını oluşturmaya çalıştı. (Bu, bir gölge yığını oluşturma ilk girişiminden çok uzaktı; çınlama Chrome, bir süre için kullandı.) Alışılmadık bir şekilde, Geri Akış Koruması haline gelecek olan yaklaşım, olağan yazılım mühendisleri tarafından değil, güvenlik açıklarını aramak için Windows'un iç ve iç yapılarına saldıran grup olan Windows kırmızı ekibi tarafından tasarlandı. Ancak aynı ekip kendi tasarımlarına nasıl saldırabileceklerine baktığında, yarış kondisyonu bu, bazı uygulamaların korunmadığı ve hiç göndermemeye karar verdiği anlamına geliyordu.

"Yazılımda bir gölge yığını yapmanın zorluğu, iki seçeneğiniz olmasıdır: gizlemeye çalışabilir veya saldırganın yazamayacağı bir yere koymayı deneyebilirsiniz ve sonuçta eğer sayfa tablosunu değiştirebilir veya işler ters giderse bellekte bulabilirseniz, "diye açıkladı Weston. Diyerek şöyle devam etti: "64-bit bellekte bir yeri koruma sayfalarına sararak gizlemeye çalıştık, bu yüzden birisi bellekte yinelemeli bir arama yapmayı sevseydi önce bir koruma alanına çarpar ve gölge yığınını bulmadan önce işlemi çökertir." Ancak, yüksek performanslı çok iş parçacıklı uygulamalarda, saldırganlar bazen çekirdeğin, dönüş adresinin gölge yığınındaki adresle eşleşip eşleşmediğini kontrol etmesini sağlayabilir.

"Yazılımda yapmak zorunda olduğumuzda, 'ops yok' tanıtmak zorundayız; fonksiyona girip çıktığınızda, boşluklarla dolduruyoruz ve insanlar belleğe masaj yapabiliyor, insanlar masaj yapabiliyor sistemin yarış koşullarını ve çekleri tamamen atla, "Windows çekirdek ekibinin ana grup program yöneticisi Hari Pulapaka açıkladı. Gölge yığını donanımda saklandığında yarış koşulu yoktur, bu nedenle kontroller atlanmaz.

<a href = "https://tr1.cbsistatic.com/hub/i/2020/04/01/0fa05f79-9289-4b88-b07e-aa435a96cd4f/ms-challenges-breaking-exploitation.jpg" target = "_ blank" data-component = "modalEnlargeImage" data-headline = "

CET (Kontrol Akışı Uygulama Teknolojisi), Microsoft'un uzun yıllardır üzerinde çalıştığı ROP'a (Dönüş odaklı programlama) karşı dört koruma kümesini tamamlar.

"data-credit =" Resim: Microsoft "rel =" noopener noreferrer nofollow ">ms-gölge yığını-4-kod uygulama-mitigations.jpg

CET (Kontrol Akışı Uygulama Teknolojisi), Microsoft'un uzun yıllardır üzerinde çalıştığı ROP'a (Dönüş odaklı programlama) karşı dört koruma kümesini tamamlar.

Görüntü: Microsoft

Microsoft ve Intel, Kontrol Akışı Uygulama Teknolojisi (CET) birkaç yıl önce, yeni Gölge Yığını İşaretçisi (SSP) kaydını ekler ve standart CPU çağrısı ve geri dönüş talimatlarını değiştirerek geri dönüş adresinin bir kopyasını saklar ve hafızadaki ile karşılaştırır. t Uyumluluk için herhangi bir değişikliğe ihtiyaç duymaz. İki adres eşleşmezse, yığının karıştığı anlamına gelir, kodun çalışması durur.

Pulapaka, "Gölge sayfa tablosu, çoğu işlemin veya çekirdeğin bile erişemediği bir yere atanmıştır ve bu, şu anda bile açığa çıkmayan ve insanların da sorgulayamadığı yeni bir sayfa tablosu özniteliği tarafından desteklenmektedir." Dedi. "Fikir var olduğunu göremeyeceksiniz ve ona dokunamayacaksınız – ve dokunmaya çalışırsanız, çekirdek herhangi bir keyfi işlemin dokunmasına izin vermez ."

GÖRMEK: Windows 10'un istediğiniz gibi çalışmasını sağlamak için 20 profesyonel ipucu (ücretsiz PDF) (TechRepublic)

CET ayrıca bazı ileri arama koruması da içerir: dolaylı şube takibi, CFG'ye benzer bir donanım kontrolü yapar. CET spesifikasyonu ilk olarak 2016'da piyasaya sürüldü ve uyumluluk için, o zamandan beri piyasaya sürülen silikon, dolaylı şube adreslerini güvenli olarak işaretleyen talimatın işlevsel olmayan bir versiyonuna sahipti.

Intel bize CET'in dahil edileceğini onayladı Kaplan Gölü Bu yılki CPU'lar ve sunucular için yeni nesil Xeon. AMD bir tarih vermedi, ancak yakında CET'e eşdeğer olacağını söyledi. Kol, imzalı işaretçiler kullanarak farklı bir yaklaşım benimsiyor.

Uyumlu ve güvenli

Microsoft, 1903'ten başlayarak ve yakında yaklaşan Windows 10'a destek oluşturmaya başladı. 2004 sürümü, bu yüzden hızlı halka içerisindeki yapılarda karşımıza çıkıyor. Pulapaka, donanım henüz yaygın olarak bulunmadığından etkinleştirilmedi, ancak uyumluluğu test etmek için orada olduğunu açıkladı. "İçeriden bir derlemede tüm bu denetimler çekirdeğin içinde devam ettiğinde, bize hiçbir şeyi kırmadığımız ve hiçbir hataya neden olmadığımız konusunda bize güven veriyor."

Üçüncü taraf yazılımlarla uyumluluk endişelerinden kaçınmak için, CET yığın koruması başlangıçta Windows'ta etkinleştirilecektir. Geliştiriciler bunu bir uygulamada bir öznitelik veya bağlayıcı bayrağı CET uyumlu olarak işaretlemek için. Bu, tüm Windows kodları ve kütüphaneleri için yapıldı ve Pulapaka, "Birisi Windows koduna saldırmaya çalışırsa ve CET tripwire'ı açarsak, süreci indireceğiz" diye açıkladı.

Bu biti ayarlamazlarsa, CET devreye girmez ve geliştiriciler kendi kodları için bit ayarlasalar bile, CET bayrağı ayarlanmamış bir üçüncü taraf çerçevesi veya kitaplığı çağırırlar ve çöküyorlar CET adres kontrolünü geçemediğinden, Windows orijinal uygulamayı durdurmaz.

Pulapaka, "Uygulamaları bozmamak için biraz muhafazakarız." Dedi. Ancak Windows katı bir modda da çalışabilir. "Bir uygulama, yüklediği üçüncü taraf DLL dosyası CET uyumlu olmasa bile CET uyumlu olduğunu söylüyorsa, bu modda yine de o DLL'deki tüm kontrolleri yaparız ve birisi bu işleme saldırmaya çalışırsa işlemi kilitleriz."

Microsoft, geliştiricilerin ve işletmelerin uygulamaları test etmesi için donanım bulunmadığından bu modun nasıl uygulanacağına henüz karar vermedi. Pulapaka, "Herkese esneklik sağlamak istiyoruz, bu yüzden uygulamanın politika kararına sahip olmasını isteriz, işletmenin politika kararına sahip olmasını isteriz ve Microsoft'un da politika kararına sahip olmasını isteriz," dedi. "Varsayılan olarak neyi açıp kapatacağımızı veya zorlayacağımızı söylememiz için henüz çok erken, çünkü henüz donanıma sahip değiliz."

Pulapaka, CET ile uyumluluk sorunlarının nadir olmasını beklemektedir, ancak Windows ekosisteminin boyutu göz önüne alındığında bazı uygulamalar sorun yaşayabilir. Bunlar, düşük düzeyli montaj koduna dayanan, hata ayıklayıcılar, JIT kod oluşturma araçları, DRM, kod gizleyiciler veya oyunlar için hile önleme motorları gibi sofistike araçlar olacaktır.

"Yığın işaretçilerle uğraşmaya çalışan garip bir kodları varsa, takılabilirler. Bu yüzden bu daha muhafazakar yaklaşımla başlamak ve nasıl gittiğini görmek istiyoruz; yazılım dünyasının yüzde doksan dokuzu muhtemelen uygulamalarının CET ile bazı ekstra özel testlere ihtiyacı olup olmadığı konusunda endişelenmeniz gerekiyor. "

Geliştiriciler ve işletmeler test etmek ve CET'i benimsemek için doğru donanıma sahip olduklarında, Visual Studio'da bağlayıcı dosyasını ayarlayabilir ve Microsoft'un CET bayrağının olduğundan emin olmak için her Windows derlemesini taramak için kullandığı ikili analiz aracını kullanabilirler. tüm kodlar.

Donanımda kod akışını korumak güvenlik için en iyi seçenektir ve performans için Windows'ta çek eklemekten daha iyi olmalıdır. Tiger Lake mevcut olana kadar, gerçek rakamlar vermek imkansız ama "yazılımda yapmaktan kesinlikle daha iyi olacak çünkü tanım gereği, donanım yapmak çok daha hızlı", dedi Pulapaka TechRepublic'e.

Bu önemlidir çünkü gölge yığını, Microsoft'un dört kod koruması listesini tamamlamak için birkaç yıldır beklediğimiz önemli bir korumadır.

Weston, "Bunlar sadece birleştirildiklerinde gerçekten etkili oluyorlar," diye belirtti, ancak bu korumalar birleştirildiğinde, bugün gördüğümüz vahşi tekniklerin çoğunu hafifletiyoruz. X86 manzarasına gelince, CET'in muhtemelen son birkaç yıl içinde bellek bozulması ve sıfır gün istismarları için çevrimiçi hale gelen en önemli hafifletme olduğunu düşünüyorum. "

Her zaman olduğu gibi, bir alanda korumanın iyileştirilmesi saldırganları teknik değiştirmeye iter – ancak bu hala ileriye doğru büyük bir adımdır.

Weston, "Veri bozulması, saldırganların gelecekteki yolu olarak ortaya çıkıyor: Dahili olarak biliyoruz ki, bu korumaların dördünü de saf veri bozulması ile atlayan bir istismar yazabilirsiniz." Dedi. "Bu CET'in inanılmaz derecede değerli olmadığı anlamına gelmez, çünkü bu biraz açık kalp ameliyatı gibi ve saldırganlar için gerçekten rahatsız edici olacak, ancak zaten başladığımız dört muhafız sonrası bir dünyaya doğru ilerliyoruz veri bozulmasıyla ilgili bir sonraki zorlukları düşünün. "

Ek kaynaklar

Source link

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*