Yazılım Testleri

Güvenliğinizi sürekli test yaptırın

Güvenlik testi manuel olabilir, ancak otomatik olarak da yapılabilir. Yazılım geliştirme sırasında test yapmak iyi bir uygulama olarak kabul edilmektedir. Geliştirdiğiniz kodun amaçlandığı gibi çalıştığına dair güven kazanmanıza yardımcı olur. Aynı şekilde ürün ve hizmetlerinizin güvenliği konusunda da güven kazanabilirsiniz. Güvenlik testi manuel olabilir, ancak otomatik olarak da yapılabilir.

Geliştirmeye yönelik iki özel yaklaşım, testleri ön plana çıkarır. İlki,  Test Güdümlü Geliştirme  , herhangi bir kod oluşturulmadan önce taslak haline getirilen testleri içerir. Daha sonra bu testleri geçmek için kod yazılır. Diğeri,  Secure by Construction , bir şartnamenin önceden yazılmasını ve bu kodun resmi yöntemler kullanılarak kontrol edilmesini gerektirir.

Bu test dostu yaklaşımlar bazen tercih edilse de,  güvenliği artırmak için geçici veya olay sonrası birim testleri, sistem testleri ve uçtan uca testler  gibi diğer yöntemler kullanılabilir.

Zaman içinde değerlendirme

Güvenlik testi birçok biçimde yapılır, ancak geleneksel olarak ‘sızma testi’ veya ‘yazılım güvenliği değerlendirmesi’ gibi zaman içinde nokta değerlendirmelerine dayanır. Bu tür testler genellikle manuel olarak gerçekleştirilir ve bu nedenle nispeten yavaş ve yoğun kaynak gerektirir, ancak kapsamlı olabilir ve güvenlik uzmanlarının yaratıcılıklarını diğer test türleri için mümkün olmayan şekillerde kullanmalarına izin verebilir.

Bu tür testlere ‘zaman noktası’ diyoruz çünkü testin ardından kodunuz gelişmeye devam edecek ve yeni saldırılar ve güvenlik açıkları keşfedilecek. Sonuç olarak, bu tür değerlendirmelerin yarattığı güven azalır.

Bu sorunlar, otomatikleştirilmiş derleme ardışık düzenlerine yönelik artan bir eğilimle birleştiğinde  , güvenlik testinin ‘anlık görüntü’ biçiminin değerinin düşük olmasına yol açabilir. Ancak her türlü güvenlik testini bir kenara bırakmamalısınız. Bu çok yüksek bir risk senaryosuna yol açar.

Otomasyon

 Güvenlik sorunlarını ve kurumsal ilkelere uyumu hızlı ve tekrar tekrar kontrol etmenize yardımcı olacak çok çeşitli  otomatik güvenlik araçları mevcuttur. Örneğin, bilinen savunmasız üçüncü taraf yazılımların kullanımını, güvenli olmayan altyapı yapılandırmasını ve güvenilmeyen girdilerin güvenli olmayan şekilde işlenmesini kontrol edebilirsiniz.

Bu tür testlerin hızı ve tekrarlanabilirliği, kodunuza olan güveni artırmalı ve siz büyüdükçe ölçeklenmelidir. Otomatik güvenlik testi, uzman güvenlik test uzmanlarının yerini alamaz. Ancak, tekrarlayan iş yükünü azaltarak, otomasyonun zor olduğu sisteminize özgü yönlere konsantre olmalarını sağlar. Google’ın Site Güvenilirliği Mühendisliği ekibinin çalışma  tanımı,  güvenlik otomasyonu için de aynı şekilde geçerlidir. İnsanların iyi olduğu ve bilgisayarların iyi olduğu şeylerden yararlanın.

Otomatik test araçları, yanlış pozitifler oluşturma konusunda bir üne sahiptir. Mümkün olduğunda, bunu azaltmaya yardımcı olmak için testi yineleyin ve ince ayar yapın. Çok fazla şey oluyorsa ve pratik bir değer katmıyorsa, belki de iş için doğru aracı kullanmıyorsunuzdur. Bulguları dikkate almazken, potansiyel bir güvenlik sorununu yanlışlıkla gözden kaçırmamak için önce bunları değerlendirin.

Yokluğun gösterilmesi

Otomatik ve manuel testi nasıl birleştirdiğinizden bağımsız olarak, güvenlik testleri yalnızca güvenlik açıklarının varlığını ortaya çıkarabilir, bunların yokluğunu ispatlayamazlar. Yine de güvenlik kusurlarıyla başa çıkmak için bir plan yapmanız gerekiyor  .

Kodunuza güvenmenin başka yolları da vardır. Örnekler arasında koruyucu izleme ve resmi doğrulama yer alır. Bir sistemin tam olarak nasıl  çalışması gerektiğini önceden belirlemek için resmi doğrulama kullanılabilir  . Örneğin, hafıza nasıl kullanılacak. Bu daha sonra çalışan kodun performansına göre kontrol edilebilir. Genellikle güvenlik açısından kritik sistemlerde kullanılır, ancak diğer geliştirme türleri için çok daha az kullanılır.

Otomatik test stratejileri

Otomatik güvenlik testi gerçekleştirmek için birkaç farklı yaklaşım vardır.

  • Statik analiz
    Sorunları veya yanlış yapılandırmaları belirlemek için kodunuzun analizi . Örneğin, doğrulanmamış giriş, yetersiz bellek sınırı denetimi veya yanlış yapılandırılmış güvenlik duvarı kuralları gibi olası güvenlik sorunlarını belirlemek için kaynak kodu dosyalarında arama yapmak.
  • Dinamik analiz
    Altyapınızın bir kısmının karşı çalışmasını gerektiren test. Örneğin, sistemlerde dinleyen beklenmedik bağlantı noktalarını tarama veya anormal verilerin istenmeyen bir olayı tetikleyip tetiklemediğini görmek için giriş parametrelerini ‘bulanıklaştırma’.
  • Seri
    Güvenlik testleri, sürekli entegrasyon sırasında bir ‘kapı’ görevi görür ve başarılı olana kadar dağıtımı engeller.
  • Paralel olarak
    Testler, dağıtım ardışık düzeninizin ‘tarafına’ çalıştırılır, böylece sorunları tespit ederlerse dağıtım sürecini engellemezler.

Manuel güvenlik denetimleri

Manuel bir güvenlik denetimi yapmadan önce, endişelendiğiniz riskleri ele almak için testinizin kapsamı tartışılmalı ve kapsamı belirlenmelidir. Halihazırda var olduğunu bildiğiniz veya test ettiğiniz tüm sorunlar hariç tutulabilir. Bu, ‘pahalı’ manuel testin en iyi şekilde kullanılmasını ve boşa harcanmamasını sağlamaya yardımcı olacaktır.

Güvenlik test yapan kişilerin tümü aynı değildir. Test edilen teknolojilerdeki beceri ve deneyim, bir bireyin güvenlik sorunlarını belirleme becerisinde önemli faktörlerdir. İki yetenekli güvenlik testi görevlisi, göreve farklı yaklaşmanın bir sonucu olarak farklı sorunları belirleyebilir. Testinizi yapacak kişileri veya şirketleri seçerken bu faktörleri aklınızda bulundurun.