Full Stack Blues: MEAN Yığınındaki Güvenlik Açıklarını Keşfetme


Tam yığın geliştirme bugünlerde çok revaçta ve bunun iyi bir nedeni var: hem ön uç web geliştirme becerilerine hem de arka uç/sunucu kodlama becerisine sahip geliştiriciler, kendi kuruluşlarına açıkça önemli ölçüde daha fazla değer sunuyor. Tüm yığını yetkin bir şekilde geçme yeteneği, DevOps kültürünün temel bir ilkesi olan operasyonlar ve güvenlikle etkileşim kurmayı ve işbirliği yapmayı da kolaylaştırır.

Bununla birlikte, tam yığın yaklaşımı, avantajlarına rağmen, geliştiricilerin, özellikle güvenlik ve test söz konusu olduğunda, daha önce sahip olamayacakları kritik değerlendirmeler yapmalarını gerektirir. Örneğin, geçmişte özel DBA'lar veya sistem yöneticileri, veritabanı güvenliğini doğrulamak veya temel sistemleri sağlamlaştırmakla görevlendirilebilirdi. Tam yığın geliştiriciler için bu görevler artık açık bir oyundur - daha sonra, yazılımı sürekli olarak güvenli bir şekilde geliştirmek ve sunmak için güvenliğe yönelik genel bir zihniyet değişikliği gereklidir.

Yığının tüm katmanlarına derinlemesine maruz kalmak, uygulamanın güvenlik duruşunu korumak için tam yığın geliştiricilerini ön koltuğa yerleştirir. Bu nedenle, her bir bileşen teknolojinin risklerinin ve güvenlik etkilerinin tam olarak anlaşılması kritik öneme sahiptir. Temsili bir örnek olarak, MEAN yığını, performans için kolaylaştırılmış popüler bir tam yığın çerçevesidir: MongoDB, Express.JS, Angular.JS ve Node.JS. Yığının tüm katmanları JavaScript'te yazıldığından, geliştiricilerin JavaScript'te yalnızca uygulama kodunu önden arkaya, istemciden sunucuya yazması gerekir. Ve bu geliştiriciler artık güvenli web uygulamaları sunma konusunda da dikkatli olduklarından, güvenlik açıklarını da ele almaları ve uygulamanın tüm katmanlarını güvenlik açısından doğrulamaları gerekir. Ancak her katman tehlikeye atılmaya karşı ne kadar savunmasız? Öğrenmek için MEAN yığınının içine üstünkörü bir göz atalım.

MongoDB (MongoDB)

MongoDB, Cassandra ve HBase gibi şirketlerle rekabet eden, JavaScript dostu, belge odaklı bir NoSQL veritabanıdır. Genel olarak, çoğu amaç için MongoDB, büyük ölçüde MySQL ile aynı şekilde kullanılabilir. İki teknolojinin tam bir karşılaştırması için MongoDB ve MySQL karşılaştırmamıza göz atın.

Yaygın bir yanılgı, MongoDB'nin SQL enjeksiyon türü saldırılara karşı bağışık olduğudur. MongoDB'nin SQL dili kötüye kullanımlarına karşı hassas olmadığı doğru olsa da, JSON belgeleri aynı kötü amaçlı sonuçları elde etmek için yine de değiştirilebilir. Ayrıca, MongoDB'nin kendi güvenlik açığı payına düşeni almıştır - örneğin, yakın zamanda keşfedilen yaygın bir güvenlik açığı, bilgisayar korsanlarına veritabanı uygulamasını uzaktan çökertme yeteneği verir. Ek olarak, Ortak Güvenlik Açıkları ve Etkilenmeler (CVE) veritabanını incelemek, MongoDB için bir dizi güvenlik açığı ve güvenlik açığı ortaya çıkarır.

Express.JS

Express.JS, Ruby dili için Ruby-on-Rails veya Sinatra'ya benzer şekilde, Node.JS için sunucu tarafı bir web ve mobil uygulama çerçevesidir. Çerçeve, geliştirmeyi kolaylaştırmak için standart bileşenler sağlama Node.JS üzerine kuruludur ve aslında günümüzde en yaygın kullanılan Node.js çerçevesidir. Ne yazık ki, çerçeve çeşitli enjeksiyon ve siteler arası saldırılara karşı savunmasızdır ve Node.js'nin altında yatan tüm güvenlik açıklarına karşı hassastır. Express.JS sitesi, her sürüm için güncelleştirilmiş bir güvenlik açığı ve düzeltme listesi tutar.

Angular.JS

Google tarafından geliştirilen ve sürdürülen Angular.js, minimum kodla modüler istemci tarafı geliştirmeye olanak tanıyan bir ön uç MVC çerçevesidir. Çerçeve, çeşitli siteler arası komut dosyası çalıştırma saldırılarına karşı savunmasızdır - Angular.js güvenlik açıklarının tam listesi, Mustache Security'nin Google Code'daki proje ana sayfasında mevcuttur.

Node.JS

Daha önemli ve zor olan soru neden değil, nasıl, yani şirketler sadece hayatta kalmakla kalmayıp aynı zamanda dijital tehditler ortamında nasıl gelişebilir?

Node.js, kapsamlı sunucu tarafı ve ağ özelliklerine sahip web uygulamalarının oluşturulmasını sağlar ve istemci ile sunucu arasında gerçek zamanlı iki yönlü iletişim sağlar. Google'ın V8 Javascript motorunu temel alan Node.js, anında HTTP web sunucuları oluşturmak için popülerdir. Muhtemelen MEAN yığınının tanımlayıcı bileşeni olan Node.js, kendi güvenlik açıkları olmadan değildir - yalnızca JavaScript ile ilgili tüm güvenlik açıklarını devralmakla kalmaz, aynı zamanda sunucu tarafında yürütülürken bazı yeni saldırı vektörleri kazanır. CVE veritabanı ayrıca Node.JS güvenlik açıklarının kapsamlı bir listesini barındırır.

Kısacası, tam yığın geliştirme, DevOps'un somutlaşmış hali olabilir, ancak yine de güvenli uygulama geliştirme uygulamalarına sıkı sıkıya bağlı kalmayı gerektirir. MEAN yığını ve bu konudaki herhangi bir yığın (LAMP veya .NET olsun), güvenliğin geliştirmenin tüm aşamalarında pişirildiğinden emin olmak için uygun denetimler gerektirir. Bu amaçla UpGuard, web uygulamaları, veritabanları, sunucular için kapsamlı güvenlik açığı değerlendirmesi ve izleme sağlar - hangi yığının kullanımda olduğuna bakılmaksızın, platformumuz her katmanı tarayabilir ve doğrulayabilir.

Kaynak

https://blog.websecurify.com/2014/08/hacking-nodejs-and-mongodb.html

https://www.cvedetails.com/product/22804/Nodejs-Nodejs.html?vendor_id=12113

https://code.google.com/archive/p/mustache-security/wikis/AngularJS.wiki

https://expressjs.com/en/advanced/security-updates.html

https://web.archive.org/web/20160518123231/http://blog.fortinet.com/post/widespread-mongodb-denial-of-service-vulnerability-discovered