Bilgisayar korsanları GitHub depolarını birçok nedenden ve yasa dışı amaçlardan hedef alıyor ve kullanıyor.
GitHub’ın yaygın kullanımı ve platformda barındırılan çeşitli kod tabanları, onu değerli bilgiler ve saldırı vektörleri arayan tehdit aktörleri için çekici bir hedef haline getiriyor.
Siber güvenlik araştırmacıları yakın zamanda Nexus deposunun dizin geçiş güvenlik açığı kullanılarak istismar edilebileceğini keşfetti.
Teknik Analiz
Önceki bir kaynak kodu incelemesi sırasında, güvenlik analisti X1r0z, halka açık bir Nexus deposunu inceledi ve Java Arşivleri için JAR paketlerinde hiçbir önemli ayrıntı bulamadı.
Ancak CyberKunlun’un son güvenlik açığı açıklamasının ardından araştırmacı aynı veri havuzunu tekrar ziyaret etti ve Jazzer Java fuzzing çerçevesini kullanarak bir kavram kanıtlama istismarı geliştirdi.
ANYRUN malware sandbox’s 8th Birthday Special Offer: Grab 6 Months of Free Service
Yazar, bu konuyla ilgili önceki girdilere dayanarak, bu deneyime ve fuzzing üzerinde sürekli çalışmaya dayanarak güvenlik açıklarını keşfetmek için Java fuzzing kullanımına ilişkin bazı bilgileri paylaşmaya karar verdi.
Bunun nasıl yapıldığını öğrenmek için araştırmacının nexus kaynak kodunu nasıl aldığı, bir hata ayıklama ortamı oluşturduğu ve kod sürümlerini karşılaştırarak WebResourceServiceImpl’deki güvenlik açığı noktasını nasıl tespit ettiği uzun uzadıya anlatıldı.
Örneğin dinamik analiz, Nexus’un robots.txt gibi genel kaynak istekleriyle ilgilendiğinde varsayılan olarak Jetty’nin WebAppContext#getResource yöntemini kullandığını ortaya çıkardı.
Bu daha sonra Jetty’nin, URIUtil.canonicalPath aracılığıyla yolları normalleştiren ancak yol geçişinden önce bunları temizleyemeyen PathResource sınıfını çağırır ve sonuç olarak bir güvenlik açığına yol açar.
Ancak, yolun “/” ile başlamaması veya kurallı yolların null değerine yol açması durumunda bir istisna oluşturulacağını unutmayın. Bunlar başarılı saldırılar için gerekli olan temel faktörlerdir.
Araştırmacı muhtemelen bir PoC oluşturmak için fuzzing yapmaya çalışırken bu fikirleri kullanacaktır.
Yararlanabilirliği değerlendirmek için yazar, ilgili Jetty yolu normalleştirme mantığını Jazzer fuzzing çerçevesi için bir test donanımına çıkardı.
Jazzer, libFuzzer ile entegredir ve kapsamı izlemek, veri akışı analizi gerçekleştirmek ve güvenli olmayan işlevleri tespit etmek için Java bayt kodunu kullanır.
Test ortamı, bozuk girdilerden PathResource örnekleri oluşturarak bulanık olasılıkları daralttı.
Jazzer daha sonra bu donanım üzerinde Jetty bağımlılıklarıyla çalıştırıldı ve açığa çıkan yolu doğrudan kullanmanın istek işlemeyi daha erken temizleyeceği keşfedildi.
Bu, isteği göndermeden önce yolun tamamen URL kodlamasını gerektirir, böylece bu filtreler atlanabilir ve bu da güvenlik açığı bulunan WebResourceServiceImpl modülüne yol açar.
Manuel analiz ve otomatik bulanıklaştırmanın bu kombinasyonu, etkili bir kavram kanıtlama istismarının geliştirilmesini kolaylaştırdı.
Tüylendirme süreci, test donanımının karmaşıklığını bir dereceye kadar azaltsa da, yanlış pozitiflerle sonuçlanabilir ve sonuç olarak doğrulama için birden fazla bulanıklaştırma işlemi gerektirebilir; ne olursa olsun, Jazzer gibi Java bulanıklaştırma teknikleri güvenlik açığı araştırmaları için hala avantajlıdır.
Bu iki yaklaşımı bir araya getiren fuzz testi, araştırmacıların incelikli güvenlik açıklarını keşfetmesine ve kurumsal ortamlara özgü çeşitli Java kod tabanlarında güçlü istismarlar geliştirmesine olanak tanır.
Bu, daha karmaşık hataları tespit etmek amacıyla yazılım uygulamalarındaki güvenlik açıklarını incelemek için katılımcılar tarafından kullanılan her iki metodolojinin birleştirilmesi ve böylece güvenlik uzmanlarının ve analistlerin daha iyi çözümler geliştirmesine olanak sağlanmasıyla başarılabilir.
Free Webinar on Live API Attack Simulation: Book Your Seat | Start protecting your APIs from hackers