Modül 5 · Modül 5 — Domain 5: Secure Development & Compliance · ⏱ 10-15 dakika

Code Scanning Temelleri

Code Scanning Fundamentals

Bu derste neler öğreneceksin

  • Code scanning'in nasıl çalıştığını ve CodeQL ile ilişkisini açıklamak
  • Code scanning'i GitHub Actions workflow ile yapılandırmayı anlamak
  • Code scanning alert yönetimi ve triage sürecini bilmek

Code scanning, statik uygulama güvenlik testi (SAST) aracı olan GitHub Advanced Security özelliğidir. Desteklenen motorlar arasında en yaygın kullanılanı CodeQL’dir.

Code Scanning Nasıl Çalışır?

  1. Pull request veya push tetikler
  2. GitHub Actions workflow, CodeQL analiz engine’ini çalıştırır
  3. CodeQL, kaynak kodu sorgular ve güvenlik açığı desenleri arar
  4. Bulgular SARIF formatında GitHub’a yüklenir
  5. Security alert olarak görüntülenir

CodeQL Workflow Yapılandırması

# .github/workflows/codeql.yml
name: "CodeQL"
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: "30 1 * * 0"

jobs:
  analyze:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3
        with:
          languages: javascript-typescript
      - uses: github/codeql-action/analyze@v3

CodeQL varsayılan sorgu paketi (security-extended) SQL injection, XSS, path traversal gibi yaygın açıkları tarar.

Desteklenen Diller

CodeQL şu dilleri analiz edebilir: C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, Swift

Code Scanning Alertleri

Repository → Security → Code scanning alerts

Her alert için:

  • Rule: Hangi CodeQL sorgusu tetiklendi
  • Severity: Critical / High / Medium / Low / Note
  • Location: Satır ve dosya
  • Fix suggestion: GitHub Copilot Autofix (GHAS’ın yeni özelliği)

False Positive Yönetimi

Yanlış pozitif alert’leri dismiss ederken gerekçe seç:

  • False positive: Güvenli bağlamda kullanılıyor
  • Used in tests: Test kodunda, production’da değil
  • Won’t fix: Kabul edilebilir risk (risk acceptance)

Dismiss kararı audit log’a yazılır.