Custom queries ve query suites
Custom queries and query suites
Bu derste neler öğreneceksin
- QL (CodeQL Query Language) temel sözdizimini tanımak
- Custom query oluşturma ve paketleme yöntemini öğrenmek
- Query suite ile birden fazla sorguyu gruplamayı kavramak
- GitHub Code Scanning'e custom query ekleme adımlarını bilmek
Custom query ne zaman gerekir?
GitHub’ın built-in query suite’leri genel güvenlik açıklarını kapsar. Ancak organizasyona özgü güvenlik kuralları için custom query yazman gerekir:
- Şirket içi API’nin güvensiz kullanımı
- Özel kriptografi kütüphanesi hataları
- Compliance gereksinimleri (OWASP Top 10’un organizasyona özgü alt kümeleri)
QL (CodeQL Query Language) temelleri
QL, SQL’e benzer ama kod üzerinde çalışır:
/**
* @name Hardcoded password
* @description Finds hardcoded passwords in string assignments
* @kind problem
* @problem.severity error
* @security-severity 9.8
* @id py/hardcoded-password
* @tags security
* external/cwe/cwe-259
*/
import python
from AssignStmt assign, StrConst password
where
assign.getATarget().(Name).getId().toLowerCase().matches("%password%")
and assign.getValue() = password
and password.getText().length() > 0
select assign, "Hardcoded password found."
Custom query dosya yapısı
.github/
codeql/
queries/
python/
hardcoded-password.ql
javascript/
unsafe-eval.ql
suites/
custom-security.yml
Query suite tanımı
Birden fazla sorguyu bir suite olarak grupla:
# .github/codeql/suites/custom-security.yml
- import: codeql-suites/javascript-security.qls
from: codeql/javascript-all
- queries: queries/javascript/
- exclude:
id:
- js/unused-variable # lint kuralı, güvenlik değil
Workflow’a custom query ekleme
- uses: github/codeql-action/init@v3
with:
languages: python
queries: +security,./.github/codeql/queries/python/
# '+' prefix: built-in suite'e ek olarak ekle
# Prefixsiz: sadece belirtilen suite/sorguları kullan
CodeQL paket paylaşımı
Organizasyon genelinde paylaşılacak custom query’ler için CodeQL pack oluştur:
# Pack oluştur
codeql pack init myorg/security-queries
# Pack kullan
codeql pack add myorg/security-queries@1.0.0
Pack’ler GitHub Container Registry (GHCR) veya GitHub Packages üzerinden dağıtılabilir.
Sınavda custom query soruları
-
“Şirketimizdeki özel kütüphanenin güvensiz kullanımını tespit etmek istiyoruz” → Custom CodeQL query + advanced setup
-
“10 farklı repoda aynı custom sorguyu çalıştırmak istiyoruz” → CodeQL pack oluştur, organization genelinde paylaş
-
“Custom query çalışıyor ama default setup’ta kullanamıyoruz” → Default setup custom query desteklemiyor → advanced setup gerekli
Sırada ne var?
CodeQL CLI ve database build — local geliştirme ve CI dışında analiz.