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?
- Pull request veya push tetikler
- GitHub Actions workflow, CodeQL analiz engine’ini çalıştırır
- CodeQL, kaynak kodu sorgular ve güvenlik açığı desenleri arar
- Bulgular SARIF formatında GitHub’a yüklenir
- 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.