Kod Tarama Araçları

Kod Tarama Araçları: Statik, Dinamik ve Güvenlik Taramasına Dair Eksiksiz Kılavuz

COM'DA Ağustos 17, 2026 , ,

Üretim aşamasında keşfedilen yazılım güvenlik açıkları, kuruluşlara geliştirme aşamasında bulunan güvenlik açıklarına göre ortalama dört kat daha fazla maliyet getiriyor. 2025 IBM Veri İhlali Maliyeti Raporu, ortalama ihlal maliyetini 4.88 milyon dolar olarak belirtiyor ve tespit edilmemiş kaynak kod güvenlik açıklarından kaynaklanan ihlaller, kök nedenleri yalnızca olay müdahalesi değil, kod tabanı düzeltmesi de gerektirdiğinden, düzeltilmesi en pahalı ihlaller arasında yer alıyor. Kod tarama araçları, güvenlik açığı keşfini mümkün olduğunca erken, geliştirme ortamına taşımak için tasarlanmıştır; ihlal sonrası zaman çizelgesine değil.

Kod taraması, yazılım üretime geçmeden önce güvenlik açıklarını, kalite kusurlarını, uyumluluk ihlallerini ve teknik borçları belirlemek için kaynak kodunun, derlenmiş ikili dosyaların veya çalışan uygulamaların otomatik analizidir. Uygulama güvenliğinin temel katmanıdır; sızma testi veya tehdit modellemesinin yerini tutmaz, ancak insan inceleyicinin büyük ölçekte tutarlı bir şekilde yakalayamayacağı öngörülebilir, tekrarlanabilir hata sınıflarını yakalayan sistematik bir temeldir.

Ekibinizin Gönderdiği Her Dili Tarayın

SMART TS XL COBOL, Java, Python, JavaScript ve tüm portföyünüzde eş zamanlı olarak statik kod taraması gerçekleştirir.

DAHA FAZLASINI ÖĞRENİN…

Kod Tarama Nedir?

Kod tarama, yazılım bileşenlerinin, kaynak kodunun, bayt kodunun, ikili dosyaların veya çalışan uygulamaların otomatik olarak incelenmesidir; bu sayede her satırın insan eliyle incelenmesine gerek kalmadan hatalar tespit edilir. Tarama araçları, kural kümeleri, desen eşleştirme, veri akışı analizi ve daha gelişmiş araçlarda, aksi takdirde üretime fark edilmeden ulaşacak sorunları bulmak için prosedürler arası kirlilik izleme yöntemlerini kullanır.

Kod taramasının ne olmadığı: Kod incelemesi, mimari analiz, sızma testi veya çalışma zamanı izlemenin yerini tutmaz. Kod incelemecilerinin rutin göründüğü için dikkatlice incelemediği kısımlar da dahil olmak üzere, tüm kod tabanında bilinen kalıpları güvenilir ve tutarlı bir şekilde yakalayan hızlı, sistematik ve ölçeklenebilir bir ilk filtredir.

Bu bağlamda kod doğrulamanın anlamı şudur : Kod doğrulama, kodun belirtilen özelliklere uygun davrandığını teyit eder. Tarama, doğrulamanın bir bileşenidir; kalıp tespiti ve veri akışı analizini ele alan otomatik bileşendir. Manuel inceleme, test ve biçimsel doğrulama diğer bileşenlerdir. Bunlar birlikte bir doğrulama programı oluşturur; yalnızca tarama yeterli değildir.

Statik ve Dinamik Kod Tarama: Temel Fark

Tarama programı oluşturmada en önemli seçim, her yaklaşımın ne zaman çalışacağını ve neleri görebileceğini anlamaktır:

BoyutStatik (SAST)Dinamik (DAST)
ÇalıştığındaKaynak kod üzerinde, çalıştırma gerekmez.Çalışmakta olan bir uygulamaya karşı
Gördüğü şeyKod yapısı, veri akışı, kalıp ihlalleriÇalışma zamanı davranışı, sunucu yapılandırması, API yanıtları
BuluntularSQL enjeksiyon kalıpları, sabit kodlanmış sırlar, güvensiz kriptografi, kod kokularıKimlik doğrulama atlatma, çalışma zamanı enjeksiyonu, oturum yönetimi hataları, sunucu yanlış yapılandırması
MissesYalnızca çalışma zamanında ortaya çıkan güvenlik açıkları, yapılandırma sorunlarıTest sırasında tetiklenmeyen kod seviyesi kalıpları
hızHızlı, saniyeler ila dakikalar içinde tamamlanır.Yavaş, çalışan bir ortam gerektirir.
Geliştirici geri bildirimiAnında, IDE veya önceden taahhütGecikmeli, dağıtılmış uygulama gerektiriyor
Yanlış pozitif oranıDaha yüksek, çalışma zamanı bağlamından yoksun.Daha düşük, istismar edilebilirliği doğruluyor.
En iyi şekilde entegre edildiIDE, ön taahhüt, her çekme isteğinde CI/CDHazırlık ortamı, ön sürüm kapısı

Çoğu ekip için pratik çözüm: ikisini de çalıştırın . IDE ve CI işlem hattında statik tarama, kod kalıpları hakkında hızlı ve erken geri bildirim sağlar. Hazırlık ortamına karşı dinamik tarama, istismar edilebilirliği doğrular ve statik analizin göremediği yapılandırma sorunlarını yakalar.

Kod Taramanın Dört Türü

SAST, Statik Uygulama Güvenlik Testi

SAST, kaynak kodunu, bayt kodunu veya ikili dosyayı çalıştırmadan analiz eder. IDE'lere ve CI/CD işlem hatlarına entegre edilmiş en yaygın kod tarama yöntemidir. SAST, kirlilik analizi (güvenilmeyen girdiyi tehlikeli noktalara izleme) yoluyla enjeksiyon güvenlik açıklarını, desen eşleştirme yoluyla kriptografik suistimali, dize analizi yoluyla sabit kodlanmış kimlik bilgilerini ve metrikler ve desen kuralları yoluyla yapısal kalite sorunlarını bulur.

En iyi araçlar: Semgrep, SonarQube, Checkmarx, CodeQL, Veracode, Snyk Code, SMART TS XL.

DAST, Dinamik Uygulama Güvenlik Testi

DAST, canlı bir uygulamaya karşı çalışır, özel olarak hazırlanmış girdiler gönderir ve yanıtları gözlemler. Kaynak kodunu göremez, bir saldırganın yapacağı gibi uygulamayla dışarıdan etkileşim kurar. DAST, çalışma zamanı bağlamı gerektirdiği için SAST'ın tespit edemediği kimlik doğrulama atlatmalarını, iş mantığı hatalarını, sunucu tarafı istek sahteciliğini ve yapılandırma güvenlik açıklarını bulur.

En iyi araçlar: OWASP ZAP, Burp Suite, Invicti, Acunetix, HCL AppScan.

SCA, Yazılım Bileşimi Analizi

SCA bağımlılık bildirimlerini tarar (package.json, pom.xml, requirements.txt, go.modÜçüncü taraf kütüphanelerdeki bilinen CVE'leri belirlemek için güvenlik açığı veritabanlarına karşı tarama yapar. Her modern uygulama açık kaynaklı bağımlılıklar kullanır. SCA, bu bağımlılıkların bilinen güvenlik açıklarını içermediğinden emin olmak için tarama katmanıdır.

En iyi araçlar: Snyk, OWASP Dependency-Check, Mend (eski adıyla WhiteSource), GitHub Dependabot, npm audit.

IAST, Etkileşimli Uygulama Güvenlik Testi

IAST, uygulama sunucusuna yerleştirilmiş aracılar veya sensörler kullanarak uygulamayı çalışma zamanında izler. Uygulama içinden gerçek istek işleme süreçlerini gözlemler ve DAST'ın çalışma zamanı doğruluğunu SAST'ın kod düzeyindeki içgörüsüyle birleştirir. IAST, dört tür arasında en düşük yanlış pozitif oranına sahiptir ancak izlenmiş dağıtım ortamları gerektirir.

En iyi araçlar: Contrast Security, Seeker (Synopsys), HCL IAST.

Bunları nasıl birleştirebilirsiniz: Geliştiricilerden hızlı geri bildirim almak için her commit işleminde SAST çalıştırın. Her bağımlılık değişikliğinde SCA çalıştırın. Her sürümden önce hazırlık ortamına karşı DAST çalıştırın. Yanlış pozitif oranının en aza indirilmesi gereken kritik uygulamalar için IAST ekleyin.

Kod Tarama Gerçekte Ne Buluyor?

Farklı tarama türleri farklı güvenlik açığı sınıflarını yakalar. Bu eşleştirme, ekiplerin kendi risk profillerine uygun hangi tarayıcıya yatırım yapmaları gerektiğini anlamalarına yardımcı olur:

Güvenlik Açığı KategorisiSASTTARİHSCAEN SON
SQL enjeksiyonuGüçlü (kirlilik analizi)Güçlü (aktif test)Yok hayırGüçlü
XSSılımlıGüçlüYok hayırGüçlü
Sabit kodlanmış sırlar/kimlik bilgileriGüçlü (örüntü eşleştirme)Yok hayırKısmiYok hayır
Bozuk kimlik doğrulamaKısmi (sadece desen)GüçlüYok hayırGüçlü
Güvenlik açığı bulunan bağımlılıklar (CVE)Yok hayırYok hayırGüçlüYok hayır
Kriptografik suistimalGüçlü (bilinen kötü API'ler)Yok hayırKısmiKısmi
Güvenlik yanlış yapılandırmasıKısmi (koddaki yapılandırma)GüçlüYok hayırKısmi
SSRFGüçlü (kirlilik analizi)GüçlüYok hayırGüçlü
Yol geçişiGüçlüılımlıYok hayırGüçlü
Komut enjeksiyonuGüçlü (kirlilik analizi)GüçlüYok hayırGüçlü
Kod kalitesi / teknik borçGüçlüYok hayırYok hayırYok hayır
Ölü kodGüçlüYok hayırYok hayırYok hayır

Yazılım Geliştirme Yaşam Döngüsünde Kod Tarama: Ne Zaman ve Hangi İşlemi Çalıştırmalıyız?

Güvenlikte "sola kaydırma" ilkesi, yani güvenlik açığı tespitini geliştirme yaşam döngüsünün mümkün olan en erken aşamasına taşımak, kod taramasının standart uygulama haline gelmesinin nedenidir. Geliştiricinin IDE'sinde bir SQL enjeksiyonu bulmak dakikalar içinde düzeltilebilir. Ancak bir ihlalden sonra üretim ortamında bulunması, haftalarca süren olay müdahalesi, iyileştirme ve düzenleyici raporlama gerektirir.

IDE'de: SonarLint, Snyk IDE uzantıları ve Semgrep IDE eklentileri, geliştiriciler kod yazarken bulguları satır içi olarak gösterir. Güvenlik açığı bulunan satır yazıldığında görünen bir SQL enjeksiyonu uyarısı, düzeltilmesi saniyeler sürer.

Ön taahhüt kancaları: Kod depoya ulaşmadan önce hızlı SAST kuralları ve gizli bilgi tespiti çalıştırır. Ön taahhüt kancaları on saniyenin altında hızlı olmalıdır, aksi takdirde geliştiriciler bunları devre dışı bırakacaktır.

Her çekme isteğinde: Tam SAST taraması ve SCA kontrolü. Çoğu ekip burada kalite kontrollerini uygular ve yeni kritik bulgular ortaya çıktığında birleştirmeleri engeller.

Gece veya haftalık olarak: Derinlemesine prosedürler arası analiz, tam DAST taramaları, kapsamlı SCA denetimleri. Bunlar her commit için yürütülemeyecek kadar yavaştır, ancak ana dalda düzenli olarak çalıştırılır.

Eksiksiz bir CI/CD tarama yapılandırması:

tatlım

# GitHub Actions: layered scanning at the right pipeline stage
name: Code Scanning Pipeline

on:
  push:
    branches: [main, develop]
  pull_request:

jobs:
  sast:
    name: Static Analysis
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Semgrep SAST scan
        uses: semgrep/semgrep-action@v1
        with:
          config: >-
            p/owasp-top-ten
            p/security-audit
            p/secrets

      - name: SonarCloud quality gate
        uses: SonarSource/sonarcloud-github-action@master
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

  sca:
    name: Dependency Scan
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Snyk dependency check
        uses: snyk/actions/node@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
        with:
          args: --severity-threshold=high

  secrets:
    name: Secret Detection
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: TruffleHog secret scan
        uses: trufflesecurity/trufflehog@main
        with:
          extra_args: --only-verified

Kod Tarama Araçları: Pratik Bir Genel Bakış

araçMenşeiEnAçık Kaynak
SegrepSASTÖzel kurallar, hızlı taramalar, çok dilliEvet (topluluk kuralları)
SonarQube / SonarCloudSASTKalite + güvenlik, CI/CD entegrasyonu, trend takibiTopluluk Sürümü
KodQLSASTDerin anlamsal analiz, GitHub'a özgüEvet
kontrol işaretiSASTKurumsal Uygulama Güvenliği programları, uyumlulukYok hayır
Snyk KoduSASTGeliştirici dostu, IDE öncelikli güvenlikfreemium
OWASP ZAP'ıTARİHÜcretsiz DAST, CI/CD uyumluEvet
Burp SüitiTARİHWeb uygulaması güvenlik testlerinde manuel ve otomatik test yöntemlerinin kullanımıTopluluk Sürümü
Snyk / MendSCABağımlılık güvenlik açığı yönetimifreemium
OWASP Bağımlılık KontrolüSCAAçık kaynak kodlu bağımlılık CVE taramasıEvet
Kontrast GüvenliğiEN SONÇalışma zamanı doğruluğu, düşük yanlış pozitif oranıYok hayır
SMART TS XLSAST + yapısalÇok dilli, COBOL, kurumsal, eski sistemlerYok hayır

Etkili Kod Taraması için En İyi Uygulamalar

Yüksek güvenilirlik ve düşük gürültü seviyesine sahip kurallarla başlayın. İlk gün mevcut tüm kural setlerini çalıştırmak binlerce bulgu üretir, geliştiricileri bunaltır ve benimsenmeyi engeller. Yüksek önem derecesine ve yüksek güvenilirlik seviyesine sahip kurallardan oluşan, OWASP En İyi 10 kalıbı, gizli veri tespiti ve bilinen tehlikeli fonksiyon çağrılarını içeren özenle seçilmiş bir setle başlayın. Ekip araçlara olan güvenini geliştirdikçe kuralları kademeli olarak ekleyin.

Yalnızca yeni kodlarda uygulayın. Mevcut bulgulara sahip eski kod tabanları için, kalite kontrollerini yalnızca mevcut PR'da (tüm kod tabanında değil) ortaya çıkan bulgular üzerinde engellemek üzere yapılandırmak, tüm geliştirmeyi engelleyen önceden var olan bulguların birikimini oluşturmadan güvenlik kontrollerini iş akışına dahil eder.

tatlım

# SonarQube: new-code quality gate configuration
# Block merges on new critical security hotspots only
sonar.qualitygate.wait=true
sonar.newCode.referenceBranch=main
# Existing findings in main don't block PRs
# Only new findings in the PR diff are gated

Yanlış pozitifleri sistematik olarak ele alın. Bir geliştiricinin bir kez araştırıp göz ardı ettiği yanlış pozitif bir durum can sıkıcıdır. Ancak altı ay boyunca her çekme isteğinde ortaya çıkan yanlış pozitif bir durum, geliştiricileri bulguları tamamen görmezden gelmeye alıştırır. Bir bastırma inceleme süreci oluşturun: her bastırma işlemi belgelenmiş bir gerekçe gerektirir ve bastırmalar üç ayda bir incelenir.

Bulguları önem derecelerine göre haritalandırın. Her bulgu acil müdahale gerektirmez. Kademeli bir yanıt:

  • Kritik (CVSS 9+, istismar edilebilir olduğu doğrulandı): Dağıtım engellendi, 24 saat içinde düzeltilecek.
  • Yüksek (CVSS 7-8): PR birleştirmesini engelle, sprint içinde düzelt
  • Orta: Bekleyen işlere ekle, çeyrek içinde ele alın
  • Düşük / Bilgilendirici: yeniden düzenleme sırasında izleme, adres

Önemli olanı ölçün. Ciddiyet düzeyine göre ortalama düzeltme süresini (MTTR), sprint başına bulunan ve kapatılan bulguların oranını ve zaman içindeki yanlış pozitif oranını takip edin. Bu ölçümler, tarayıcının çalışıp çalışmadığını değil, tarama programının işe yarayıp yaramadığını gösterir.

Kod Tarama Teknik Borcu Nasıl Önler?

Teknik borç, kalite sorunları ertelendiğinde, geliştirme aşamasında SAST kuralıyla yakalanabilecek bir SQL enjeksiyonu modeli üretime ulaştığında ve düzeltilmesi için güvenlik yaması, regresyon testi ve dağıtım koordinasyonu gerektirdiğinde birikir. Kod tarama araçları bu birikimi kaynağında engeller.

Kod taramasını teknik borç azaltımına doğrudan bağlayan üç mekanizma vardır:

Karmaşıklık tespiti. Eşik değerinin üzerindeki döngüsel karmaşıklık, derinlemesine iç içe geçmiş koşullu ifadeler ve uzun fonksiyonlar, tarama araçlarının işaretlediği kod kokularıdır. Ele alınmadığı takdirde, bu kalıplar giderek değiştirilmesi daha zor ve daha pahalı hale gelen kod tabanlarında birikir. Tarama, karmaşıklık yapısal hale gelmeden önce yeniden düzenlemeyi tetikleyen metrik tabanlı erken uyarı sağlar.

Tekrarlanan kod tespiti. Tekrarlanan kod, en pahalı teknik borç biçimlerinden biridir; her hata düzeltmesi ve özellik değişikliği birden fazla yerde uygulanmalıdır ve kopyalar kaçınılmaz olarak birbirinden farklılaşır. SonarQube'un tekrarlanan kod tespiti ve benzer kurallar, bu modeli kod tabanında ortaya çıkararak, farklılık tutarsızlık yaratmadan önce birleştirmeyi mümkün kılar.

Ölü kod tespiti. Üretim ortamındaki hiçbir yürütme yolunda çağrılmayan fonksiyonlar ve modüller olan ölü kod, kod tabanının boyutunu şişirir, geliştiricileri karıştırır ve geçiş analizini zorlaştırır. Erişilebilirlik analizi yapan tarama araçları, ölü kodu sistematik olarak belirleyerek, daha fazla birikmeden önce kaldırılmasını sağlar.

Bileşik etki: Sürekli taramaya tabi tutulan bir kod tabanı, tarama yapılmayan benzer bir kod tabanına göre daha düşük hata yoğunluğuna, daha düşük döngüsel karmaşıklığa, daha düşük kopyalama oranına ve daha düşük ölü kod yüzdesine sahiptir. Bu ölçütler doğrudan daha hızlı özellik geliştirme, daha düşük bakım maliyeti ve üretim olayları riskinin azalması anlamına gelir.

Ne kadar SMART TS XL Kurumsal ölçekte kod tarama çözümü sunar.

Standart kod tarama araçları tek bir dil içinde çalışır. Java servislerinin, Python işlem hatlarının, COBOL toplu iş programlarının, JCL iş akışlarının ve RPG modüllerinin bir arada bulunduğu, her birinin kendi tarayıcısına, kendi yapılandırmasına ve kendi bulgular panosuna ihtiyaç duyduğu kurumsal ortamlarda, kod tarama tablosu parçalanmış bir haldedir.

SMART TS XL'S statik kod analizi Ortamdaki her dili eş zamanlı olarak tarar: COBOL, JCL, Java, Python, RPG, PL/I, SQL ve modern yığınlar. Bu sayede tek bir analiz geçişinde tüm portföy genelinde birleşik kalite ölçütleri, güvenlik bulguları ve yapısal veriler üretilir. Eski ana bilgisayar uygulamalarının yanı sıra modern bulut hizmetlerine sahip kuruluşlar için, bu diller arası kapsam, modern yığını kapsayan bir tarama programı ile tüm sistemi kapsayan bir program arasındaki farkı oluşturur.

Uygulama bağımlılık eşleme özelliği, taramayı tek tek dosyaların ötesine, mimari analize kadar genişletir: hangi bileşenlerin en yüksek bağımlılığa sahip olduğu, döngüsel bağımlılıkların nerede bulunduğu, hangi programların açık API'ler yerine örtük dosya arayüzleri aracılığıyla veri paylaştığı gibi yapısal bulgular, tek dosya kalıp eşleştirme araçlarının tespit edemediği mimari güvenlik ve kalite sorunlarıdır.

Etki analizi özelliği, tarama bulgularını büyük ölçekte uygulanabilir hale getirir: 150 programın bağımlı olduğu yüksek giriş/çıkış trafiğine sahip bir bileşende bir güvenlik açığı bulunduğunda, etki analizi düzeltme çabasının kapsamını, hangi programların test edilmesi gerektiğini, hangi çağrı yapanların güncellenmesi gerektiğini ve düzeltmenin tam etki alanının ne olduğunu belirler. Bu, güvenlik açığı bulgularını bir sorun listesinden, tanımlanmış kapsamı olan yapılandırılmış bir düzeltme programına dönüştürür.

Kurumsal arama özelliği, tarama sonuçlarının tüm portföy genelinde sorgulanabilir olmasını sağlar: belirli bir güvensiz API kullanan her programı, sabit kodlanmış kimlik bilgilerini içeren her dosyayı, karmaşıklık eşiğini aşan her bileşeni, saniyeler içinde, milyonlarca satır kodda ve herhangi bir dil kombinasyonunda bulabilirsiniz.

Takımların yönetimi için miras modernizasyonu programları SMART TS XLTarama işlemi, geçiş öncesi kalite temelini sağlar: geçiş kapsamından çıkarılan ölü kod, geçiş sıralamasını belirleyen karmaşıklık dağılımı ve dönüştürülen kod bulut altyapısına dağıtılmadan önce giderilmesi gereken güvenlik bulguları.

Erken tarayın, sürekli tarayın, her şeyi tarayın.

Güvenlik açıklarını giderme süresinin en kısa olduğu kuruluşlar, en agresif sızma testi programlarına sahip olanlar değil. Bunlar, güvenlik açıklarının kod inceleme aşamasına, geliştiricinin IDE'sine, ön taahhüt kancasına veya CI/CD hattına ulaşmadan önce en çok sayıda açığı yakalayanlardır. Kod taraması, bunun büyük ölçekte nasıl gerçekleştiğini gösterir.

Bir tarama programı oluşturmak, risk profilinize uygun SAST, DAST, SCA ve IAST kombinasyonunu seçmek, bunları geliştirme yaşam döngüsünün doğru noktalarında entegre etmek, kapsamdan ödün vermeden gürültüyü en aza indirgemek için ayarlamak ve tarayıcının çalıştığını varsaymak yerine programın etkinliğini zaman içinde ölçmek anlamına gelir. Tarayıcının çalışması başlangıçtır. Programın çalışması ise hedeftir.