NOP slayt - NOP slide

Gelen bilgisayar güvenliği , bir NOP slayt , NOP kızak veya NOP rampa dizisidir NOP'da nihai istenilen hedefe CPU talimat yürütme akışı "slayt" anlamına (no-işlem) talimatlar her programı dalları a bellek adresi üzerinde herhangi bir yere Slayt.

Teknik, bir dal talimatı hedefi tam olarak bilinmediğinde program yürütmeyi yönlendirmek için kullanıldığı yazılım istismarlarında yaygın kullanımı görür . Diğer önemli uygulamalar arasında EMC duyarlı programlama gibi savunmaya yönelik programlama stratejileri bulunur .

Bir NOP slaydı, kanonik NOP talimatlarının bir listesinden oluşması durumunda çalışacak olsa da, bu tür bir kodun varlığı şüphelidir ve otomatik olarak saptanması kolaydır. Bu nedenle, pratik NOP slaytları genellikle standart olmayan NOP talimatlarından (bir kaydı kendine taşımak veya sıfır eklemek gibi) veya program durumunu sadece sonuçsuz olarak etkileyen ve tanımlanmalarını çok daha zor hale getiren talimatlardan oluşur.

NOP kızağı, yığın arabellek taşmalarından yararlanmak için en eski ve en yaygın olarak bilinen tekniktir . Hedef alanın boyutunu etkin bir şekilde artırarak tamponun tam adresini bulma sorununu çözer. Bunu yapmak için, yığının çok daha büyük bölümleri işlemsiz makine talimatı ile bozulur . Saldırgan tarafından sağlanan verilerin sonunda, işlemsiz talimatlardan sonra, saldırgan, kabuk kodunun bulunduğu arabelleğin üstüne göreceli bir atlama gerçekleştirmek için bir talimat yerleştirir. Bu işlemsiz koleksiyon, "NOP-kızağı" olarak adlandırılır, çünkü geri dönüş adresi tamponun işlemsiz bölgesi içindeki herhangi bir adresle üzerine yazılırsa, yürütme, işlem yapılmayana kadar işlem yapılmayanları "aşağı kaydırır". sonunda atlayarak gerçek kötü amaçlı koda yönlendirilir. Bu teknik, saldırganın nispeten küçük kabuk kodu yerine NOP kızağının yığının neresinde olduğunu tahmin etmesini gerektirir.

Bu tekniğin popülerliğinden dolayı, birçok saldırı önleme sistemi satıcısı, kullanımdaki kabuk kodunu tespit etme girişiminde bu işlemsiz makine talimatları modelini arayacaktır. Bir NOP kızağının yalnızca geleneksel işlemsiz makine talimatlarını içermesi gerekmediğine dikkat etmek önemlidir; makine durumunu kabuk kodunun çalışmayacağı bir noktaya kadar bozmayan herhangi bir talimat, donanım destekli op no-op yerine kullanılabilir. Sonuç olarak, istismar yazarlarının, kabuk kodu yürütülmesi üzerinde gerçek bir etkisi olmayacak, işlemsiz kızağı rastgele seçilen komutlarla oluşturmaları yaygın bir uygulama haline geldi.

Bu yöntem, bir saldırının başarılı olma şansını büyük ölçüde artırsa da sorunsuz değildir. Bu tekniği kullanan istismarlar, NOP kızağı bölgesinde bulunan yığın üzerindeki ofsetleri tahmin edecekleri için yine de bir miktar şansa güvenmek zorundadır. Yanlış bir tahmin genellikle hedef programın çökmesine neden olur ve sistem yöneticisini saldırganın faaliyetleri konusunda uyarabilir . Diğer bir sorun, NOP kızağının, herhangi bir kullanım için yeterince büyük bir NOP kızağını tutmak için çok daha büyük miktarda bellek gerektirmesidir. Bu, etkilenen tamponun tahsis edilen boyutu çok küçük olduğunda ve yığının mevcut derinliği sığ olduğunda (yani, mevcut yığın çerçevesinin sonundan yığının başlangıcına kadar fazla alan olmadığında) bir sorun olabilir. Sorunlarına rağmen, NOP kızağı genellikle belirli bir platform, ortam veya durum için işe yarayacak tek yöntemdir ve bu nedenle hala önemli bir tekniktir.

Bir NOP slaydının entropisi, üzerine yerleştirilen kısıtlamalara bağlıdır. Bazı yazmaçların kullanımda olmadığı belirlenebilirse (yani, bir sonraki kullanımlarından önce bilinen bir değere ayarlanacaklarsa), bunları keyfi olarak işleyen talimatlar NOP slaydında kullanılabilir. Ek olarak, hem NOP slaydının hem de komut işaretçisinin hizalanması belirleyici ise, çok baytlı talimatlar, hizalanmamış yürütmenin sonuçlarına bakılmaksızın bir NOP slaydında kullanılabilir. NOP slaydının ve yükün ekleneceği saldırı vektörünü sağlayan girdi filtrelenirse (yalnızca yazdırılabilir karakterleri kabul etmek gibi), dahil edilmeye yönelik olası talimatların alanı sınırlıdır. Bir mimari uzantının parçası olan talimatlar ( SSE gibi ) genellikle program durumuyla ilgisiz olabilir, ancak uzantının desteklenmediği bir bilgisayarı hedefleyen bir NOP slaydında kullanılamazlar.

Tespit etme

Bellekte NOP slaytlarının varlığını tespit etmek için birçok teknik mevcuttur. Örneğin, 2005 yılında Yunan araştırmacılar, bir bellek görüntüsünün uzun bir bayt dizisi içerip içermediğini kontrol ederek bunların kolayca tespit edilebileceğini keşfettiler, öyle ki dizideki her bir başlangıç ​​ofsetinin geçerli olması ve aynı yere yürütülmesine yol açması.

Ayrıca bakınız

Referanslar

Dış bağlantılar