Modül 4 · Code Security (CodeQL) · ⏱ 14 dakika

CodeQL — temel kavramlar

CodeQL — fundamental concepts

Bu derste neler öğreneceksin

  • CodeQL'in nasıl çalıştığını ve diğer SAST araçlarından farkını anlamak
  • CodeQL database, query, ve suite kavramlarını öğrenmek
  • Desteklenen programlama dillerini ve analiz türlerini bilmek
  • Code scanning alert'larının nasıl oluştuğunu kavramak

CodeQL nedir?

CodeQL, GitHub’ın geliştirdiği semantic (anlam tabanlı) statik kod analiz aracıdır. Kaynak kodu bir veritabanına dönüştürür, ardından bu veritabanı üzerinde SQL benzeri güvenlik sorguları çalıştırır.

Kaynak kodu
     ↓ (derleme / analiz)
CodeQL Database (snapshot)
     ↓ (sorgular)
Query suite (QL)

Güvenlik açığı tespiti

Code scanning alerts

Regex tabanlı SAST’tan farkı

Geleneksel SAST araçları regex veya AST (Abstract Syntax Tree) kullanır. CodeQL’in avantajı: data-flow ve taint analysis.

Örnek: user_input değişkeninin SQL sorgusuna ulaşıp ulaşmadığını takip eder. Regex tabanlı araç bunu yakalayamaz; CodeQL veri akışını izlediği için yakalar.

# CodeQL bunu yakalar: user_input'dan SQL'e path var
user_input = request.GET["id"]
processed = sanitize_incomplete(user_input)  # eksik sanitizasyon
cursor.execute("SELECT * FROM users WHERE id=" + processed)  # SQL injection

Desteklenen diller

DilDesteklenen sürümler
C / C++Tüm sürümler
C#.NET Framework + .NET Core
Go1.11+
Java / KotlinJava 7+
JavaScript / TypeScriptES2015+
Python2.7+ / 3.x
Ruby2.1+
Swift5.4+

Query suites

CodeQL, sorgu paketleri (query suites) ile organize edilmiştir:

SuiteKapsamÖneri
security-and-qualityGüvenlik + kalite sorunlarıGeniş kapsam, daha fazla sonuç
security-extendedGüvenlik odaklı, genişDefault’tan geniş
security (default)En yaygın güvenlik açıklarıDüşük noise, hızlı

Sınavda “daha fazla güvenlik açığı tespit et ama false positive tolere edebiliriz” → security-extended doğru cevaptır.

Alert tipleri

CodeQL bulguları alert olarak listelenir:

  • Location: hangi dosya, hangi satır
  • Description: güvenlik açığı tipi (CWE referansı)
  • Severity: critical / high / medium / low / note
  • Data flow path: güvenlik açığının kaynaktan hedefe giden yolu

Data flow path, “neden güvenlik açığı var?” sorusunu görselleştirmek için kritiktir.

SARIF formatı

CodeQL sonuçları SARIF (Static Analysis Results Interchange Format) formatında GitHub’a yüklenir. Bu standart format sayesinde üçüncü taraf SAST araçları da GitHub code scanning arayüzüyle entegre olabilir.

# SARIF upload (CodeQL dışı araçlar için)
gh code-scanning upload-results \
  --ref=refs/heads/main \
  --commit=<sha> \
  --sarif=results.sarif

Sırada ne var?

Default setup ve advanced setup arasındaki fark — sınavda en sık sorulan CodeQL konusu.