Güvenli kodlama eğitim platformu gerçekten işe yarıyor mu?


Güvenlik açıkları size defalarca bildirildiğinden kendinize şu soruyu sorabilirsiniz: “Bu geliştiriciler neden ders almıyor?” Bir sonraki düşünebileceğiniz şey şu olabilir: “Geliştiricileri eğitmeliyiz ki bu hataları yapmayı bıraksınlar.”

geliştirici eğitim platformları

Yıllarca benim de düşüncelerim bunlardı, çünkü yüzlerce güvenlik açığını kod incelemeleri yaptıktan sonra müşterilerime bildirdim.

Peki güvenli kod eğitimi platformları herhangi bir şeyi değiştirdi mi? Bu “yaramaz” geliştiricileri, yazılımlarının güvenliği konusunda proaktif olmaya mı zorladılar? Tekrarlayan güvenlik açıklarını daha az mı bildirdim? Ne yazık ki tüm bu soruların cevabı “hayır”.

Bunun yerine birçok geliştirici eğitim platformlarını sıkıcı buluyor; bazıları zorunlu dersleri tamamlayacak kadar çalışıyor, bazıları ise almamak için bahane arıyor. Çünkü çok önemli bir noktayı gözden kaçırmışız: Geliştiriciler sorun çözücüdür.

Bir geliştiricinin günlük rutinine bakarsanız, bir sorunu çözmenin yollarını bulmanın onların ekmeği ve tereyağı olduğunu görebilirsiniz. Bir uygulama için spesifikasyonlar alırlar, her spesifikasyona yönelik yolları nerede ve nasıl arayacaklarını bilirler ve tam bir çözüm sunarlar.

Bir geliştiriciye bir şeyi “nasıl” yapmasının değil, “ne” yapmasının söylenmesi gerekir.

Sorunu daha iyi, ilgili olduğu bir dilde tanımlamamız gerekiyor. Bu bizim iyi yapmadığımız kısım.

Güvenlik uygulayıcılarının kullandığı dil (tuhaf terminoloji ve güvenlik açıklarının düzensiz başlıklandırılması), güvenlik sorunlarının doğasını geliştiricilere aktarmada iyi değildir. İki grup kesinlikle aynı dilde konuşmuyor.

Size bir örnek vereyim.

Bir yazılım güvenlik açığı ya bir hatadır ya da bir tasarım hatasıdır. Geliştiricinin dünyasında, bir hata genellikle bir uygulama sorunuyla (koddaki bir sorun) ve tasarım hatası ise bir yazılım mimarisi sorunuyla ilgilidir. Ancak bir güvenlik açığı (genellikle güvenlik endüstrisi tarafından kullanılan bir terim) geliştiriciye sorunun “ne” olduğunu hemen söylemez. Bir güvenlik açığının uygulamada mı yoksa tasarımda mı sorun olduğunu açıklarsak geliştiriciler minnettar olacaktır.

Kötü ifadelerin bir başka örneği de “saldırgan yükü”dür; güvenlik profesyonellerinin kötü niyetli bir girişten bahsettiğimizde başvurduğu bir ifadedir. Söylememiz gereken şey bunun “çalışma zamanı istisnasına neden olan nadir bir girdi” olduğudur. (Çalışma zamanı istisnası, yazılımda düzgün bir şekilde ele alınmayan ve belirlenemeyen bir durumdur. Güvenlik açıklarının çoğu, çalışma zamanı istisnalarıdır.)

Geliştiricilerin katılımını sağlayın

Geliştiricilere “nasıl” sorusunu öğretmeye başlamadan önce onlarla etkileşime geçmemiz ve ilgilerini harekete geçirmemiz gerektiğine inanıyorum. Sorunu onların dilinde tanımlamakla başlamalı ve çözüm arayışını onların meraklı, problem çözen zihinlerine çekici kılmalıyız.

Bu fikri, güvenlik açıklarını bir geliştiricinin çalıştırabileceği, test edebileceği ve hata ayıklayabileceği tam işlevli uygulama sanal alanlarına dönüştürdüğümüz, geliştiriciye özgü savaş oyunları şirketimizde uyguladık.

Saldırgan eylemlerini simüle etmek için harici araçlar kullanmak yerine, bunları yazılım spesifikasyon testlerine (geliştiricilerin uygulamanın spesifikasyona uyup uymadığını kontrol etmek için yazdığı kod) kodladık. Bu nedenle geliştiriciler, güvenlik açığını tam olarak keşfetmek için günlük çalışmalarında kullandıkları araçların aynısını kullanabilirler.

Bu yaklaşımla dil engeli açığını kapatıyoruz. Güvenlik açığı, güvenlik spesifikasyonu testleriyle birlikte tamamen işlevsel bir uygulamaya dönüştürülür ve güvenlik sorununu geliştiricilerin dilinde açıkça tanımlar, böylece hata ayıklamanın nasıl yapılacağını bilirler.

Bu dağıtım yöntemi, sorunu geliştiricilere daha iyi iletir ve onların ilgilerini sorunu çözmeye yönlendirir. Müşterilerimizin geliştirme ekiplerinin güvenlik sorunlarını bulma ve çözme konusunda proaktif hale geldiğini görüyoruz. Müşterilerimiz, geliştirme ekiplerinin güvenlik açıklarını, güvenlik görevlilerinin tuhaf bir isteği olarak değil, hata ayıklaması gereken ilginç bir sorun olarak bulduğunu düşünüyor.

Günün sonunda güvenlik açığı, istismar edilmesi eğlenceli ve çözülmesi eğlenceli olacak bir yazılım sorunudur.



Source link