Java ve .NET ile yazılmış uygulamaların dörtte üçünden fazlasında, geliştiricilerin genellikle uygulama güvenliği için temel olarak kullandıkları yazılım zayıflıklarının bir listesi olan OWASP İlk 10 listesinden en az bir güvenlik açığı vardır.
Bu, yaklaşık 760.000 uygulamanın analizinde, bu iki programlama ekosistemini kullanan yaklaşık beş uygulamadan birinin en az bir yüksek veya kritik önem derecesine sahip güvenlik açığı bulduğunu tespit eden yazılım test firması Veracode’a göre.
Genel olarak, ortalama bir uygulamanın her ay en az bir güvenlik açığına sahip olma şansı %27 idi; kötü yazılmış uygulamalar ve nadiren taranan uygulamalar muhtemelen daha kusurlu olurken, daha uzun bir güvenlik süreci geçmişine sahip olan ve iyi eğitimli kişiler tarafından yazılan uygulamalar. Veriler, geliştiricilerin yeni kusurlar getirme olasılığının daha düşük olduğunu gösterdi.
Veracode’da stratejik ürün yönetiminden sorumlu başkan yardımcısı Tim Jarrett, analizin güvenliği geliştirme hattına entegre etmenin önemini vurguladığını söylüyor.
“Veriler tutarlı bir şekilde, sürecinize bir güvenlik alışkanlığı eklerseniz, hem genel kusurları düzeltme açısından daha iyi bir sonuç elde ettiğinizi hem de … gelen malzeme selini yavaşlattığınızı gösteriyor ve bu, büyük bir fark” diyor.
Bu arada, yazılım şirketleri ve geliştirme ekipleri, uygulama kodundaki kusurları ve güvenlik açıklarını ortadan kaldırmak için mücadele etmeye devam ediyor. Veracode’un 11 Ocak’ta yayınlanan “Yazılım Güvenliğinin Durumu” raporuna göre, geliştiriciler ve açık kaynak projeleri yazılım kusurlarını daha hızlı düzeltirken, ortalama güvenlik açığının yarılanma ömrü günlerle veya haftalarla değil, aylarla ölçülmeye devam ediyor.
Örneğin, araştırma tarafından analiz edilen toplam uygulamaların %71’ini oluşturan Java ve .NET uygulamaları, kusurların yarısının sırasıyla 243 gün ve 158 gün sonra uygulamaları etkilemeye devam ettiğini gördü.
Uygulama şişkinliği ve yaşı, güvenlikleri üzerinde önemli bir olumsuz etkiye sahipti. Ortalama bir uygulama yaklaşık %40 daha fazla kod biriktirir ve güvenlik açıklarına sahip olma olasılığı daha yüksektir. Analize göre, iki yıllık eski uygulamaların yaklaşık %54’ünde kusur bulunurken, beş yıllık uygulamaların %69’unda kusur var.
JavaScript’in Şaşırtıcı Güvenliği
Şaşırtıcı bir şekilde, JavaScript’te yazılan veya JavaScript çerçevelerinden birini kullanan uygulamalar, güvenlik açığı taramalarında daha başarılı olma eğilimindeydi. Java ve .NET uygulamalarının yaklaşık %80’inde güvenlik açığı bulunurken, JavaScript uygulamalarının yalnızca %56’sında güvenlik açığı bulunuyordu. Java ve .NET uygulamalarının yaklaşık %20’si yüksek önem dereceli bir güvenlik açığına sahipken, JavaScript uygulamalarının %10’undan daha azı bu güvenlik açığına sahipti.
Jarret, JavaScript çerçevelerinin daha yeni olduğunu, daha fazla güvenliğe sahip olduğunu ve Java’nın nispeten yakın zamanda fayda sağladığı açık kaynak ekosisteminin avantajlarına sahip olduğunu söylüyor.
“JavaScript daha yeni bir dil, bu yüzden onunla yazılmış uygulamalar [are] daha yeni ve uygulamanın yaşı ile kusur düzeltme süresi arasında önceki raporlarda kurduğumuz bir ilişki var” diyor. “JavaScript için araçların çoğu [is] olgun ve iyi desteklenen bir dil.”
Ayrıca, bir Java uygulamasındaki bir güvenlik açığının birinci taraf sorunu olduğu durumlarda (sorunları düzeltmek geliştiriciye bırakılır) JavaScript ve Node.js çerçevesinde, güvenlik açıkları genellikle bir üçüncü taraf sorunudur çünkü güvenlik açığı bir bileşende meydana gelmiştir. yazılımın bağlı olduğu.
“Bir Java uygulamasındaki bir güvenlik sorununu çözme şekliniz hâlâ büyük ölçüde [where] bir sınıf dosyasında değişiklik yaparsınız ve onu derlersiniz” diyor. “Bir JavaScript uygulamasında,[‘s] daha çok bir paket yönetimi sorunu. Ve bu, bir geliştiricinin öğrenmesi için farklı bir şey, ki bu daha kolay olabilir.”
Yeni Programlama Dilleri Zayıflıyor
Raporun verileri, geliştiricilerin öğrenmekte olduğu programlama dilleri ile işletmelerin çoğunda fiilen kullanılan diller arasındaki farkı da vurgulamaktadır. Veracode tarafından görülen en önemli diller ve ekosistemler — Java, .NET ve JavaScript — geliştiricilerin programlama teknolojisi tercihi değildir.
Node.js, React.js ve Angular gibi JavaScript ve JS tabanlı çerçeveler, geliştiricilerin tercih ettiği teknolojiler listelerinde başı çekerken, Java en az sevilen programlama dillerinden biridir ve ankete katılanların %54’ü dilden korkar. Stack Overflow’un 2022 Geliştirici Anketine göre %46’sı onu sevdi.
Yine de Java, Veracode istemcileri tarafından taranan uygulamaların payına hakim oldu (%44), JavaScript için bu oran %14’tü.
Ek olarak, en sevilen programlama dili Rust, Veracode’un verilerinde görünmüyor bile, geliştiricilerin 6 numaralı Python’u ise taranan uygulamaların yalnızca %4’ünden azını oluşturuyor.
Veracode’dan Jarrett, bağlantının kesilmesinin bir nedeninin yerleşik uygulamaların yerleşik programlama dillerinde yazılması olduğunu söylüyor.
“Dışarıda olan tüm kodların tüm evrenine sahipsiniz ve ardından yeni gelişme dalgasının tepesindeki köpük gibi bir şeye sahipsiniz ve insanların Go, Rust ve Dart’ı topladığını gördüğünüz yer burasıdır. ve Flutter” diyor.
Bu dillerde yazılan uygulamaların toplu kod tabanları nedeniyle, bu durum muhtemelen değişmeyecektir.
“Ne yazık ki eski uygulamalar asla ölmez, bu nedenle bu büyük Java kod tabanları ve .NET kod tabanlarına sahip işletmelerde çok fazla kritik kütle vardır” diyor.