Açıklardan yararlanma zinciri, herhangi bir kimlik doğrulama olmadan tetiklenebilir
Bir JavaScript web uygulaması çerçevesi olan Blitz.js, Node.js sunucularında uzaktan kod yürütülmesine (RCE) yol açabilecek tehlikeli bir prototip kirliliği güvenlik açığını yamaladı.
Prototip kirliliği, saldırganların bir uygulamanın davranışını değiştirmek ve onu çeşitli şekillerde tehlikeye atmak için programlama dilinin kurallarından yararlanmasına olanak tanıyan bir JavaScript güvenlik açığı türüdür.
Sonar’daki araştırmacılar tarafından keşfedilen ve rapor edilen yeni hata, saldırganların Blitz.js uygulamasındaki kodu değiştirerek bir ters kabuk oluşturmasına ve sunucuda rastgele komutlar çalıştırmasına izin verdi.
Bağımlılıklarda prototip güvenlik açığı
Sonar’ın güvenlik açığı araştırmacısı Paul Gerste, “Blitz.js, GitHub’da ilgi çeken yeni bir JS çerçevesidir” dedi. Günlük Swig. “Kod tabanının güvenliğini sağlamaya ve gerçek dünyadaki güvenlik açıklarını incelemeye yardımcı olmak için seçtik.”
Blitz, React tabanlı bir çerçeve olan Next.js üzerine inşa edilmiştir ve onu tam yığın bir web geliştirme platformuna dönüştürmek için bileşenler ekler.
DERİN DALIŞLAR Prototip kirliliği: JavaScript uygulamalarını etkileyen tehlikeli ve yetersiz güvenlik açığı
Blitz.js’nin reklamı yapılan özelliklerinden biri, istemcinin API kodu yazmaya gerek kalmadan basit işlevler aracılığıyla sunucu tarafı iş mantığını çalıştırmasını sağlayan ‘Sıfır API’ katmanıdır.
Blitz.js, arka planda sunucuya bir RPC çağrısı yapar ve istemci işlev çağrısına yanıtı döndürür.
“Blitz.js, Next.js’nin üzerine bir RPC katmanı ekler (diğer özelliklerin yanı sıra) ve bu katman, gelen isteklerden gelen verileri seri durumdan çıkarmak için superjson kullanır. Güvenlik açığı tamamen superjson’ın içinde, ”dedi Gerste.
JSON’un genişletilmiş bir sürümü olarak superjson, tarihler, normal ifadeler ve döngüsel bağımlılıklar için destek ekler. Döngüsel bağımlılık özelliği, JSON belirtimlerinin prototip güvenlik açığına neden olan özellik adlarına başvurmasına olanak tanır. Saldırgan, sunucuda çalışan kodu değiştirmek için bu özellik adlarını kullanabilir.
Blitz sunucularında RCE
Gerste, prototip kirliliği güvenlik açığı yoluyla tetiklenebilecek ve RCE’ye yol açabilecek bir dizi açıktan yararlanmayı keşfetti.
İlk olarak, sunucuya kirli bir JSON isteği gönderilir ve bu, Blitz.js’nin kirli prototip ile bir JavaScript dosyası yüklemek için yönlendirme mekanizmasını tetikler. Bu, saldırganın rasgele kod yürütmek için kötü amaçlı JavaScript nesnesini kullanmasına olanak tanır.
En son bilgi güvenliği araştırma haberlerinin devamını okuyun
İdeal olarak, bir saldırgan sunucuda bir dosya oluşturup çalıştırır. Ancak Blitz.js, yükleme işlevini desteklemez. Ancak, yeni bir süreç başlatmak için JavaScript’in işlevini kullanan bir CLI sarmalayıcı komut dosyasına sahiptir.
Saldırgan, bir CLI işlemi başlatmak ve sunucuda rastgele bir komut çalıştırmak için bu işlevi kullanabilir.
Blitz.js’deki prototip kirliliği (Resim: sonarsource.com)
Bu güvenlik açığını özellikle tehlikeli yapan şey, herhangi bir kimlik doğrulama olmadan tetiklenebilmesidir; bu, Blitz.js uygulamasına erişebilen herhangi bir kullanıcının RCE saldırıları başlatabileceği anlamına gelir.
Gerste, “Saldırgan, güvenlik açığı bulunan uygulama ile aynı ayrıcalığa sahip olacaktır” dedi. “Yani, uygulama kök olarak çalışırsa, saldırganın da kök ayrıcalıkları olur.”
Karmaşık hata
Prototip kirlilik hataları genellikle çok karmaşık şekillerde hareket eder. Örneğin, Blitz.js durumunda, CLI sarmalayıcı nesnesi kendi başına savunmasız değildi, ancak prototip kirlilik hatası tarafından kötüye kullanılabilir.
Gerste, “Bu saldırı tekniği, kendi içinde bir güvenlik açığı olmayan bir kod modelinden yararlanıyor” dedi. “Prototip kirliliği, hedef uygulamayı çok istilacı bir şekilde etkileyebilir ve prototip kirliliğinden etkilenebilecek tüm kodlardan kurtulmak için çok çalışma gerektirir.”
Gerste, hatayı yazarken, Node.js’de bayrağın dondurulması veya kullanılması da dahil olmak üzere JavaScript uygulamalarını prototip kirliliğine karşı sertleştirebilecek bazı genel önerilerde bulunuyor.
Gerste, “Prototip kirliliğinin birçok JavaScript geliştiricisi tarafından hala bilinmediğini düşünüyorum” dedi. “Geliştiricilerin makalemizde önerdiğimiz kalıpları çok sık kullandığını görmüyorum. Blog gönderilerimizle JavaScript geliştiricilerini eğitmeye ve bu bilgiyi paylaşmaya çalışıyoruz.”
BUNU DA BEĞENEBİLİRSİN Microsoft Teams güvenlik açığı, kullanıcıları kusurlu çıkartmalar özelliği aracılığıyla XSS’ye açık bıraktı