Web Programlama

Web Uygulamalarında Yarış Durumu Zafiyetleri

Web Uygulamalarında Yarış Durumu Zafiyetleri
İşlevleri sabit bir sırayla yönetmek üzere yapılandırılmış bir web uygulamasının iki veya daha fazla işlemi aynı anda yürütmesi gerektiğinde, bir yarış durumu saldırısı meydana gelir. Bu teknik, bir hizmetin sunulması ile bir güvenlik kontrolünün gerçekleşmesi arasındaki zaman gecikmesinden yararlanır. Bu saldırı, çok iş parçacıklı uygulamalara dayalı olarak iki yoldan biriyle gerçekleştirilebilir: güvenilmeyen süreçlerin neden olduğu izinsiz giriş ve aynı ve eşit haklara sahip olabilecek güvenilir bir işlemin neden olduğu izinsiz giriş.

Farklı süreçler, yeterli önlemler alınmadan birbirleriyle etkileşime girebilir. Bu saldırılar aynı zamanda Kontrol Süresi saldırısı, Kullanım Süresi saldırısı veya TOC/TOU saldırıları olarak da bilinir. Yarış koşulu güvenlik açıkları, geliştiricilerin genellikle oluşturduğu temel programlama hataları nedeniyle ilk etapta orada olur ve bu hataların maliyetli olduğu kanıtlanmıştır. Kötü niyetli varlıklar, çok sayıda kötü amaçlı amaç için yarış koşullarından yararlandı.e., ücretsiz kupon almaktan çevrimiçi hesaplardan ve yatırım şirketlerinden para çalmak için.

İki paralel yürütme iş parçacığının global bir değişkenin değerini 5 artırmaya çalıştığını varsayalım. Sonuç olarak, global değişkenin değeri 10 olacaktır. Ancak, tüm iş parçacıkları aynı anda çalışırsa, kaynak kilitleri veya senkronizasyon olmadan yürütme yanlış olabilir. İlk iş parçacığı bu global değişkene bazı manipülasyonlar yaparken, ikinci iş parçacığı onu okur ve diğer bazı manipülasyonları yapmaya başlar. Bu durumda, nihai değer beklendiği gibi olmaz.

Bu, bir iş parçacığı sonlandırmasının etkisi diğerinin sonucuna bağlı olduğundan oluşur. İki iş parçacığı aynı anda yürütüldüğünde, istenmeyen sonuçlar olacaktır.

Yarış Koşulu Saldırılarının Kapsamı:

Banka hesapları arasında para alışverişi yapmak gibi, yukarıdaki örneğin iki başlığı tarafından biraz daha kritik bir şeyin yürütüldüğünü hayal edin. Parayı doğru bir şekilde göndermek için programın bu görevleri şu sırayla gerçekleştirmesi gerekecektir; Gönderenin hesabında yeterli bakiye olup olmadığını kontrol edin, alıcının hesabına para ekleyin ve ardından gönderenin hesabından kesinti yapın. Ancak aynı anda iki istek gönderirseniz, iş parçacığı yürütme sırasının değiştiği bir koşulu tetikleyebilirsiniz. Böyle bir durumda, beklediğinizden farklı bir miktarla karşılaşacaksınız.

Starbucks web sitesinde Egor Homakov tarafından yarış koşulu güvenlik açığı bulundu. Farklı çerezlere sahip farklı tarayıcılar kullanarak Starbucks hediye kuponlarında ücretsiz olarak sonsuz miktarda kredi oluşturmanın bir yolunu keşfetti.

Belirgin Meltdown saldırısı, yarış durumu güvenlik açığının bir örneğidir. Erime saldırısında, zayıflık, bellekten veri alımının paralel olarak işlenmesi ve bir kullanıcının belleğe erişmesine izin verilip verilmediğinin doğrulanmasıyla tetiklenir. Bu kusur, bir aracın saldırı mekanizmasını işletim sistemi verilerine erişmekten ayıran standart ayrıcalık kontrollerinden kaçınmasını mümkün kılar. Bu boşluk, herhangi bir yetkisiz işlemin, bellekteki mevcut ilerleme durumuna bağlı diğer herhangi bir adresten veri ve bilgileri görüntülemesine izin vermesiyle sonuçlanır. Hatalı yürütme sürecinde, onaylanmamış bir adresten gelen bilgiler sıklıkla, bilgilerin kurtarılabileceği CPU'nun önbelleğine hızla yığılır.

Gerçek hayattaki saldırı senaryoları:

Web sunucusuna sürekli olarak sayısız istek göndererek, web uygulamalarında yarış koşullarını arayabilir ve değiştirebilirsiniz. Banka hesabınızdakinden daha fazla para çekip çekemeyeceğinizi görmek istiyorsanız curl fonksiyonu ile sunucuya aynı anda birden fazla para çekme talebi gönderebilirsiniz.

curl (5000'i geri çekin & (5000'i geri çekin) ve (5000'i geri çekin) ve (5000'i geri çekin) & (5000'i geri çekin)

Kısa bir süre içinde ne kadar çok talepte bulunursanız, saldırınızın işe yarama şansı o kadar yüksek olur.

Ayrıca, eşzamansız takip istekleri gönderirseniz, bir kullanıcıyı bir hata yanıtı göndermek yerine birkaç kez takip edeceksiniz. ben.e., turbo intruder kullanarak istekleri bırakırken %s içeren sahte bir başlık eklerseniz ve aşağıdaki python kodunu yapıştırın:

def followReqs(hedef, kelime listeleri):
motor = RequestEngine(bitiş noktası=hedef.uç nokta,
eşzamanlıBağlantılar=40,
requestPerConnection=100,
ardışık düzen=Yanlış
)
i aralığında(40):
motor.sıra(hedef.req, str(i), geçit='kontrol')
motor.openGate('kontrol')
motor.tamamlandı(zaman aşımı=60)
def answerHandle(gerekli, ilginç):
masa.ekle(gerekli)

Bir Saldırı düğmesi göreceksiniz. Buna bastıktan sonra, Turbo Intruder 40 sorgu gönderir ve durum kodlarını tarar. 201 Oluşturuldu durumunda birden fazla yanıt görürseniz, bu kişiyi birden çok kez takip ettiğinizi gösterir.

Ücretsiz hesaplara sunulan birden fazla konsola erişebileceğiniz bir yarış durumu güvenlik açığı var. Ücretsiz konsollar sağlayan web sitelerinin çoğunda ücretsiz hesaplar, standart ve premium paketler bulunur. Ücretsiz hesaplar, kullanıcı başına yalnızca 2 veya 3 konsol sağlar. Bu sınırı aşmak ve sınırsız konsol kullanmak için, 100 veya 200 gibi NULL yükleri kullanarak GET isteğine birden çok kez izinsiz giriş yapın. Ardından, iş parçacıkları çalışırken konsollardan herhangi birini kullanıcı arayüzünden manuel olarak silin.

Sonuç:

Erişim kontrollerini zayıflatmanın bir yolu olarak, yarış koşulları dahildir. Erişim kontrol mekanizmalarına bağlı olan herhangi bir program savunmasız olabilir. Çoğu zaman, finans kurumlarının web sitelerinde, bilgisayar korsanları yarış koşullarından yararlanır. Nakit çekme, para transferi veya kredi kartıyla ödeme gibi hayati bir özellik üzerinde bir yarış koşulunun keşfedilmesi, bilgisayar korsanı için sınırsız finansal faydaya yol açabileceğinden. E-ticaret platformları, video oyunları ve çevrimiçi oylama hizmetleri diğer yüksek riskli teknolojilerdir. Güvenli eşzamanlılık uygulamak, yarış koşullarından kaçınmanın sırrıdır. Ayrıca kaynak kilitlerini de kullanabilirsiniz. Ayrıca, bu tür durumları önlemeye yardımcı olan eşzamanlılık yeteneklerine sahip programlama dilleri için yerleşik bir kilitleme özelliği de olacaktır. Ayrıca, güvenli kodlama standartlarını izleyerek,.e., en az ayrıcalık kavramı ve denetim kodu, programın ihlal etme şansını azaltacaktır.

Linux'ta GameConqueror Cheat Engine Nasıl Kullanılır
Makale, Linux'ta GameConqueror hile motorunu kullanma hakkında bir kılavuzu kapsar. Windows'ta oyun oynayan birçok kullanıcı, oyun deneyimini geliştir...
Linux için En İyi Oyun Konsolu Emülatörleri
Bu makale, Linux için kullanılabilen popüler oyun konsolu öykünme yazılımını listeleyecektir. Öykünme, oyun konsollarının, komut setlerinin ve ilgili ...
Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...