Johns Hopkins Üniversitesi’ndeki araştırmacılar, kısa bir süre önce, bu amaç için özel olarak geliştirdikleri ODGen adlı yeni bir kod analiz aracını kullanarak binlerce Node.js kitaplığında 180 sıfırıncı gün güvenlik açığını keşfettiler.

Bu kusurların yetmişi o zamandan beri ortak güvenlik açıkları ve riskler (CVE) tanımlayıcıları aldı. Bunlar, bazıları yaygın olarak kullanılan uygulamalarda olmak üzere komut enjeksiyon kusurlarını, yol geçişi güvenlik açıklarını, rastgele kod yürütme sorunlarını ve siteler arası komut dosyası çalıştırma güvenlik açıklarını içerir.

Johns Hopkins araştırmacıları – Song Li, Mingqing Kang, Jianwei Hou ve Yinzhi Cao – Usenix Güvenlik Sempozyumu’nda bu ayın başlarında yayınlanan bir makalede, ODGen’i mevcut kod analizine ve sözde grafik sorgu tabanlı olarak adlandırılanlara daha iyi bir alternatif olarak tanımladılar. Node.js güvenlik açıklarını bulmaya yönelik yaklaşımlar.

Program analizine dayalı yaklaşımların, JavaScript’teki kod yerleştirme kusurları gibi bireysel güvenlik açığı türlerinin tespit edilmesine yardımcı olmada yararlı olduğu kanıtlanmıştır. Ancak araştırmacılar, Node.js platformunda bulunabilecek her türlü güvenlik açığını tespit etmek için kolayca genişletilemeyeceklerini söyledi. Benzer şekilde, kodun önce bir grafik olarak gösterildiği ve ardından belirli kodlama hataları için sorgulandığı grafik tabanlı kod analizi yöntemleri, C++ ve PHP gibi ortamlarda iyi çalışır. Ancak grafik tabanlı yaklaşımlar, programlama dilinin kapsamlı dinamik özellikleri kullanması nedeniyle JavaScript güvenlik açıkları için madencilikte o kadar verimli değil.

JavaScript Açıklarını Bulmak İçin ‘Yeni’ Bir Yaklaşım

Böylece, araştırmacılar bunun yerine tanımladıkları şeyi geliştirdiler. Nesne Bağımlılığı Grafiği (ODG) adı verilen bir “yeni” ve daha iyi yöntem Node.js güvenlik açıklarını tespit etmek için kullanılabilir. Node.js programlarının güvenlik açıklarını tespit etmesi için “ODG” oluşturmak için ODGen’i uyguladıklarını söylediler.

Johns Hopkins Üniversitesi’nde bilgisayar bilimi yardımcı doçenti ve araştırma raporunun ortak yazarı olan Cao, genel olarak grafik tabanlı kod analizini ve önerilen Hedef Bağımlılık Grafiği’ni tanımlamak için birkaç analoji kullanır. Cao, “Bir güvenlik açığını özel bir model olarak düşünürsek – örneğin kırmızı bir düğümle ve ardından siyah bir düğümle bağlantılı yeşil bir düğüm – grafik tabanlı bir kod analiz aracı önce programları birçok düğümü ve kenarı olan bir grafiğe dönüştürür” diyor. . “Ardından araç, bir güvenlik açığını bulmak için grafikte bu tür kalıpları arar.”

Araştırmacıların önerdiği Nesne Bağımlılığı Grafiği, JavaScript nesnelerini düğümler olarak temsil ederek ve nesneler arasındaki bağımlılıklar da dahil olmak üzere programlama diline özgü özellikler ekleyerek ve ardından hataları sorgulayarak bu yaklaşımı iyileştirir. Cao, yöntemin bir avuç pirinçteki tahılları kullanarak nasıl çalıştığını açıklıyor: Kaynatmadan önce tüm tahıllar aynı görünüyorsa, ancak kaynatıldıktan sonra biri iyi tahılları diğeri kötü tahılları temsil eden iki farklı renk alıyorsa, o zaman fark edilmesi ve ayıklanması daha kolay hale gelir. kötü tahıllar. Cao, “Soyut yorumlama, pirinci – yani programları – farklı renkli nesnelere dönüştüren kaynatma işlemine benzer”, bu nedenle hataların fark edilmesi daha kolay, diyor Cao.

Çeşitli Hatalar

Yaklaşımlarının işe yarayıp yaramadığını görmek için araştırmacılar önce ODGen’i düğüm paket yöneticisi (npm) deposundaki Node.js paketlerinde daha önce bildirilen 330 güvenlik açığı örneğine karşı test etti. Test, tarayıcının 330 güvenlik açığından 302’sini doğru bir şekilde tanımladığını gösterdi. Nispeten yüksek doğruluk oranıyla desteklenen araştırmacılar, ODGen’i npm’de yaklaşık 300.000 Java paketine karşı çalıştırdı. Tarayıcı, paketler arasında toplam 2.964 potansiyel güvenlik açığı bildirdi. Araştırmacılar, haftada ortalama 1.000’den fazla indirme ile 264 tanesini kontrol etti ve 180 tanesinin meşru güvenlik açıkları olduğunu doğrulayabildiler. Bunların 43’ü uygulama düzeyinde, 122’si diğer uygulamalar veya kodlarla ithal edilen paketlerde ve kalan 15’i dolaylı paketlerde bulunuyordu.

ODGen’in tespit ettiği onaylanmış güvenlik açıklarının çoğu (80), saldırganların güvenlik açığı bulunan bir uygulama aracılığıyla işletim sistemi düzeyinde rasgele kod yürütmesine olanak tanıyan komut enjeksiyon akışlarıydı. Otuz tanesi yol geçiş kusuruydu; 24 etkinleştirilmiş kod kurcalama ve 19’u, prototip kirliliği adı verilen belirli bir komut enjeksiyon saldırısı türünü içeriyordu.



siber-1