SAST, DAST & SCA Karşılaştırması

Sinem Merve Yılmaz
KoçSistem
Published in
3 min readJan 9, 2022
Application Security Testing Cycle

Merhabalar,

SDLC süreci sırasında veya sonrasında güvenlik sorunlarını ya da güvenlik açıklarını test etme, analiz etme ve raporlama sürecine Application Security Testing(AST-Uygulama Güvenliği Testi) denir.

Geliştiriciler ve testerlar tarafından, manuel veya otomatik test araçlarını kullanarak web uygulamalarının güvenlik gücünü yönetmeye ve Web uygulamasının güvenliğini tehlikeye atabilecek tehditleri belirlemeye yardımcı olmak için benimsenen bir süreçtir.

Günümüzde kullanılan birçok AST aracı bulunmaktadır. Bunları tanımlamak için SAST, DAST, SCA dahil olmak üzere birkaç kısaltmamız var.

Bu yazımda, hangi aracı ne için ve ne zaman kullanmamız gerektiğine ve yazılım geliştirme yaşam döngümüzde (SDLC) ne zaman kullanmamız gerektiğine dair bilinçli bir karar verebilmemiz için SAST, DAST ve SCA arasındaki benzerlikleri ve farklılıkları ele alacağız.

Static Application Security Testing (SAST) Nedir?

Bu, bir tür white box test yöntemidir, yani çalışması için kaynak koduna erişim gerektirir.

SQL injection ve buna benzer yazılım kusurları ve zayıflıkları dahil olmak üzere tüm güvenlik açıklarını, kodu check-in’lemeden önce inceleyerek bulur.

SAST, değerlendirmeleri gerçekleştirmek için çalışan bir sistem gerektirmez.

Aynı zamanda, yalnızca kaynak koduna veya ikili dosyaya ihtiyaç duyduğundan geliştiriciler tarafından çalışmalarını main branch’e göndermeye hazır oldukları anda kullanılabilirler. Bu da, güvenlikle ilgili bu tarz sorunların erkenden tanımlanarak yazılım geliştirme yaşam döngüsünde (SDLC) düzeltmenin, maliyeti önemli ölçüde azaltacağı anlamına gelir.

Buna karşın, SAST araçlarının bazı dezavantajları vardır. Kimi zaman aslında sorunlu olmayabilecek konulara dikkat çekebilirler. SAST’ı SDLC’mize entegre ediyorsak, false positive’ler, geliştiricilerin uyarıları görmezden gelmesine neden olabilir. Tam aksine, sorunları bulamamak da geliştiricilerin SAST’a güvenmemesine neden olabilir. Ayrıca, uygulamamızı tamamen içten dışa doğru test etmesi nedeniyle bazı seçenekler yavaş olabilir.

Dynamic Application Security Testing (DAST) nedir?

DAST, testlerin dahili kaynak koduna veya uygulama mimarisine bakmak yerine, çalışan bir uygulamanın dışından gerçekleştirildiği anlamına gelen bir tür black box test yöntemidir.

Bu araçların uygulamamızın kaynak koduna erişmesi gerekmez, sadece uygulamamızı çalıştırabilmeleri gerekir.

DAST, değerlendirmeleri gerçekleştirmek için çalışan bir sistem gerektirir. Sürekli entegrasyon pipeline’ları ile de uyumlu çalışmaktadır.

DAST seçenekleri uygulamayı çalıştırdığından, DAST seçeneklerini yalnızca çalışabilen uygulamalarda kullanabiliriz. Bu, uygulamamızı test etmeden önce SDLC’de oldukça ilerlememiz gerektiği anlamına gelir. Bu nedenle, bir DAST aracı tarafından tanımlanan güvenlik açıklarını düzeltmek maliyetli olabilir. Ancak bu tür maliyetleri en aza indirmenin bir yolu, kritik güvenlik açıkları için release patch’leri oluşturmak olabilir.

DAST araçları genellikle SAST araçları gibi dile özgü olmasa da, test edebilecekleri uygulama türleri (genellikle web uygulamaları ve web hizmetleri) açısından sınırlıdır.

SAST & DAST: Hangi seçenek tercih edilmeli?

SAST ve DAST, uygulamamız üzerinde farklı faydaları olan farklı test yaklaşımlarıdır:

  • Farklı türde güvenlik açıkları bulurlar
  • Yazılım geliştirme yaşam döngüsünün farklı aşamalarında etkilidirler
  • SAST en iyi şekilde erkenden ve tüm kaynak kod dosyalarına karşı gerçekleştirilir
  • DAST, en iyi şekilde, üretime mümkün olduğunca yakın bir ortamda çalışan bir uygulamada gerçekleştirilir.

Eğer mümkünse, yapılan geliştirmeler sonucu ortaya çıkan uygulamada en iyi sonucu elde etmek için her iki aracı da kullanabilirsiniz :)

Software Composition Analysis (SCA) nedir?

Diğer bir yaygın güvenlik aracı, yalnızca uygulamamızı oluşturmak için kullandığımız üçüncü taraf ve açık kaynaklı bileşenlere odaklanan bir kod tarama aracı olan yazılım bileşimi analizidir (SCA).

SCA, bir package listesi (BOM-Bill of Material) oluşturmak için kaynak kodumuzda adım adım ilerleyerek çalışır. Package Listesi, uygulamalarımızı oluşturmaya yardımcı olmak için kullanılan package’ların bir listesidir. Ardından, bu package’ların dahil edilmesi ile ortaya çıkan güvenlik açıklarını tanımlar.

SCA en verimli şekilde SDLC’nin en solunda çalışır ve çoğu durumda SAST ile birlikte gelir. Bu nedenle, tanımlanan açık kaynaklı güvenlik açıklarına dayalı olarak yapabileceğimiz tüm düzeltmeler, daha sonraki bir tarihte tanımlanmalarından daha ucuz olacaktır.

Sonuç olarak;

SAST, DAST ve SCA, uygulama güvenliğinde yaygın olarak kullanılan araçlardır. Bu makalede, bu seçenekler arasındaki benzerlikleri ve farklılıkları ve sizin için ne zaman uygun olabileceklerini aktarmaya çalıştım.

Şimdilik bahsedeceklerim bu kadar. Bir sonraki yazımda görüşmek üzere! 😊

O zamana dek,

HappyTesting! 😊

Kaynaklar:

--

--