Yazılım güvenliğinde dönüşümsel bir değişimin ortasındayız. Şirketler yakında güvenli olmayan yazılımların sorumluluğunu üstlenecek ve artık kurban kartını oynayamayacaktır.

Son zamanlarda, Başkan Biden’ın yönetimi, “güvenli ve emniyetli bir dijital ekosistemin tüm faydalarını sağlama” umuduyla oluşturulan, uzun süredir beklenen Ulusal Siber Güvenlik Stratejisini yayınladı. Beklendiği gibi, büyük ölçüde yazılım güvenliğine ve güvenlik açıklarından kimin sorumlu olması gerektiğine odaklanıyor. Strateji, “piyasaların savunmasız ürün veya hizmetler sunan kuruluşlara yetersiz maliyetler yüklediğini ve çoğu zaman ödüllendirdiğini” belirterek, kuruluşların güvenli olmayan yazılımları gönderme konusunda daha sorumlu hale getirilmesi çağrısında bulunuyor.

Düzenlemeye karşı piyasa güçleri hakkındaki tartışmayı bir kenara bırakırsak, stratejinin güvensiz yazılım kodunun endemik olduğu şeklindeki zımni iddiasını tartışmak zordur. Güvenlik uzmanları olarak, güvenli olmayan yazılımların neden bu kadar yaygın olduğunu incelemek ve bununla nasıl başa çıkılacağını anlamak bizim işimiz. Ayrıca, bu planla, yazılım güvenliği artık sahip olunması güzel bir şey olmayacak: Şirketler, ürünlerinin güvenliğinden sorumlu olacak. Bu nedenle, şimdi yazılım güvenliğine titizlik getirme zamanı.

Güvenlik Açıklarının Kökü

Güvenli olmayan yazılımlar genellikle kusurların ortaya çıktığı başlangıçta başlar. Ancak dalmadan önce terminoloji konusunda net olmak önemlidir.

Bir “kusur”, bir “güvenlik açığına” yol açabilecek kod yazıldığında ortaya çıkan bir uygulama kusurudur – yazılım kodu içinde bir saldırıya kapı açan istismar edilebilir bir koşul. Kusurlar zamanla birikerek “güvenlik borcuna” – yani bir uygulamanın ömrü boyunca düzeltmediğiniz kusurlara – neden olur. Güvenlik borcu, güvenliği yazılım geliştirme yaşam döngüsü boyunca entegre eden DevSecOps’un yükselişinde önemli bir itici güç olmuştur.

Veracode’un en yenileri “Yazılım Güvenliğinin Durumu” araştırma raporu, 750.000’den fazla uygulamanın statik analizinden elde edilen verileri kullanarak kusur oluşumuna katkıda bulunan faktörlere ayrıntılı bir bakış attı.

Boyutu ne olursa olsun, başvuruların ilk beş yıl boyunca yılda yaklaşık %40 oranında istikrarlı bir şekilde arttığını buldu. Ancak yeni kusurların ortaya çıkma oranı farklı bir model izliyor. Yeni bir uygulama eklendiğinde, büyük olasılıkla ilk taramada birikmiş kusurlar keşfedildiğinden, kusurların sayısı ani bir düşüşe uğrar. Ardından uygulama, ilk bir buçuk yıl boyunca “balayı aşamasına” girer ve bu süre zarfında uygulamaların yaklaşık %80’i yeni kusurlar getirmez. Bununla birlikte, balayı sona erdiğinde, kusurların ortaya çıkışı, beşinci yıl civarında bir platoya ulaşana kadar istikrarlı bir şekilde büyür.

Statik, dinamik ve yazılım kompozisyonu analizleri farklı teknikler içerdiğinden ve farklı sorunları tespit edebildiğinden, keşfedilen en yaygın kusurlar yapılan taramanın türüne bağlı olarak büyük ölçüde değişir. Bulunan en önemli kusurlar arasında bir miktar örtüşme vardı – üçünde de bilgi sızıntısı görüldü – ancak birden fazla tarama türü kullanmanın önemini vurgulayacak kadar farklılık vardı.

Tarama frekansının da etkisi vardır. Önceki ay taramalar yapıldığında hem yeni kusurların olasılığında hem de bunların gerçek sayısında belirgin bir azalma bulduk. Tarama sürecini otomatikleştirmek için uygulama programlama arabirimlerinin (API’ler) kullanılması, kusur olasılığını ve sayısını azaltmada da faydalı oldu.

Daha Güvenli Uygulamalara Doğru Adım Atmak

İlk etapta tüm kusurların ortaya çıkmasını önlemek ideal olurdu, ancak bu pratik değil. Araştırmamız, uygulamaları daha güvenli hale getirmek için üç öneri ortaya çıkardı.

İlk rehberliğimiz, güvenlik kusurlarını olabildiğince erken ve hızlı bir şekilde düzeltmektir. Bir uygulama iki yaşına geldiğinde, uygulamaların giderek daha fazla kusur biriktirdiğini görüyoruz. Uygulamaya veya onu geliştiren gruplara bir şey olduğu açık. İster yıllarca süren istikrarlı büyümeden kaynaklanan uygulama karmaşıklığının artması, ister zaman içinde üretim uygulamalarına odaklanmanın azalması olsun, araştırmamızda gösterilen bu yukarıya doğru eğilimin tanıdık modeli açıktır.

Bir sonraki rehberliğimiz, otomasyona ve geliştirici eğitimine öncelik vermek. En yaygın kusurların ve nasıl ortaya çıktıklarının farkında olmak, sayılarını azaltmada dikkate değer bir fark yaratır. Bunu, geliştiricileri 10 uygulamalı güvenlik eğitimi kursunu tamamlamış kuruluşların sonuçlarında gördük. Araştırmamız, 10 eğitim kursunun tamamlanmasının, ortaya çıkan kusurların sayısında %12’lik bir azalma ile ilişkili olduğunu buldu.

Son olarak, şirketlerin uygulama yaşam döngüsü yönetimi oluşturması gerekir. Bir uygulamanın kime ait olduğunu belirlemek, onu güvende tutmaya yardımcı olur, ancak önceden kapsamlı bir liste oluşturmaya çalışmayın çünkü onu asla bitiremezsiniz. Birkaç uygulama için gerekli bilgilerle başlamak ve listeyi yinelemeli olarak oradan oluşturmak daha iyi olacaktır.

Bir uygulamayı sürdürmek, yalnızca gerekli olup olmadığına karar verme meselesi değil, aynı zamanda üretimde ne kadar süre kalması gerektiğine de karar vermektir. Zamanla ortaya çıkan kusurların büyümesi ve sonraki yıllarda bunlara ödenecek dikkat miktarı göz önüne alındığında bu önemlidir.

Titizlik Bir Gereksinimdir

Günümüzün güvenlik ortamında, yazılım güvenliği çok önemlidir. Ulusal Siber Güvenlik Stratejisi yaptırım eylemlerine gerçek dişler eklemeyi planladığından, yazılım satıcıları uygulamalarının güvenlik borcunu azaltmak için ekstra teşvike sahiptir.

Kusurların nasıl oluşturulduğunu ve bunların en iyi şekilde nasıl düzeltileceğini anlamak, yazılım ürünlerinin hem güvenliğini hem de uygulanabilirliğini sağlamaya yardımcı olabilir.

Yazılım güvenliğinde titizlik, sorumluluk değişimi size dönerken, modern yazılım geliştirme yaşam döngüsünün her aşamasında eksiksiz olmak anlamına gelir.



siber-1