CodeQL 2.27.2: C++ Regex Ayrıştırıcı ve Go CFG Değişimi
CodeQL 2.27.2 yayımlandı. GitHub code scanning’in arkasındaki statik analiz motorunun bu sürümü C/C++ tarafına, ECMAScript dilbilgisiyle yazılmış düzenli ifadeleri ayrıştırabilen bir parser ekliyor; Go, Rust ve JavaScript/TypeScript için de modelleme ve veri akışı iyileştirmeleri getiriyor. Bir de Go kütüphanesinde geriye dönük uyumluluğu bozan bir kontrol akış grafiği (CFG) değişikliği var, macOS 27 ile ilgili ciddi bir derleme kısıtı da öyle. Aşağıda değişiklikler, özel sorgu yazan ve CI’da CodeQL çalıştıran ekipler için pratik etkileriyle birlikte.
Sorgu paketlerinin kapsamı
CodeQL, kod tabanındaki güvenlik sorunlarını bulup gidermeye yarayan bir motor. Bu sürümde Default suite 170 CWE’yi kapsayan 498 güvenlik sorgusu çalıştırıyor, Extended suite ise 32 CWE daha ekleyip 131 sorgu daha sunuyor. Varsayılan taramanın ötesine geçmek isteyen ekipler için ek kapsam hala Extended suite üzerinden geliyor.
Dil ve framework desteğinde ne değişti
C/C++
En dikkat çekici ekleme, std::regex içinde ECMAScript dilbilgisi kullanan düzenli ifadelerin artık ayrıştırılabilmesi. Regex tabanlı analizlerin C++ tarafında anlamlı sonuç üretebilmesinin önkoşulu bu.
Comdb2 C API’si için SQL enjeksiyonu sink modelleri eklendi. Bloomberg BDE kodekleri ve byte-stream deserializer’ları için de akış özetleri (flow summaries) tanımlandı, böylece ilgili kütüphaneleri kullanan kodda taint izleme kopmadan devam edebiliyor.
Go
CodeQL artık nhooyr.io/websocket yanında github.com/coder/websocket import yolunu da modelliyor. WebSocket kütüphanesinin yeni adresine geçmiş projelerde model kaybını önlüyor bu ekleme.
Rust
Rust extractor’ı AnyAttr ve DocComment sınıflarını destekliyor. await ile kullanılan async bloklarında veri akışı iyileştirildi, native-tls, async-native-tls ve tokio-native-tls için akış özetleri eklendi. Asenkron Rust kodunda taint’in await sınırında kaybolması bilinen bir zorluktu; bu sürüm o yöndeki kapsamı genişletiyor.
JavaScript/TypeScript
CodeQL artık Workflow SDK’nın "use workflow" ve "use step" direktiflerini tanıyor. Hapi tarafında ise özel route kayıt yardımcıları ve higher-order fonksiyonlar üzerinden route handler ile request input takibi iyileştirildi. Route kaydını kendi sarmalayıcı fonksiyonlarıyla soyutlayan Hapi projelerinde kaynak (source) tespitinin daha isabetli olması bekleniyor.
macOS 27 uyumluluğu: autobuild ve manual build artık desteklenmiyor
Sürümün operasyonel tarafta en çok dikkat isteyen notu burada. macOS 27 ve Xcode 27 ile birlikte Apple, çoklu mimari (x86-64/arm64) ikililerini dağıtmayı bıraktı. CodeQL’in traced analiz yapabilmesi bu ikililere bağlı olduğundan:
- macOS 27 üzerinde, hangi Xcode sürümü kullanılırsa kullanılsın, derlenen diller için
autobuildvemanualbuild modları desteklenmiyor. - macOS 26 üzerinde Xcode 27 seçiliyse yine aynı kısıt geçerli.
- Bu build modlarını kullanıyorsanız en fazla macOS 26 ve Xcode 26 kombinasyonunda kalmanız öneriliyor.
GitHub, sınırlamayı hafifletmek için macOS’ta build mode: none desteğini iyileştirme üzerinde çalıştığını belirtiyor. macOS runner’larında derlenen dil taraması yapan ekiplerin runner imajı yükseltme planını bu bilgiye göre gözden geçirmesi gerekiyor.
Sorgu değişiklikleri
C#
cs/web/missing-x-frame-options sorgusu artık ASP.NET Core yanıt başlıklarını ve Content Security Policy’deki frame-ancestors direktifini clickjacking koruması sayıyor. CSP ile koruma sağladığı halde eski başlığı kullanmadığı için uyarı alan projelerde yanlış pozitifleri azaltacak bir değişiklik.
cs/web/xss sorgusu ise WriteLiteral ile yazılan Razor tag-helper attribute değerlerini artık XSS sink’i saymıyor.
GitHub Actions
actions/unpinned-tag sorgusunda güvenilir sahip (owner) kümesinden çıkarma yapılabiliyor. ! önekiyle bir girdi eklediğinizde (örneğin !github) ilgili sahip güvenilir listeden çıkıyor, birinci taraf sahiplere ait pinlenmemiş tag’ler de raporlanıyor. Tüm action referanslarını commit SHA’sına sabitleme politikası uygulayan kurumlar istisnasız denetim yapabiliyor böylece.
CodeQL CLI tarafındaki iyileştirmeler
- Sorgu paketlerindeki (query suite) geçersiz
qlpack:vefrom:değerleri artık çökmeye değil, anlaşılır hata mesajlarına yol açıyor. - YAML veri uzantılarındaki işaretli 32-bit aralığının dışındaki tam sayılar sessizce kırpılmak yerine reddediliyor. Daha önce fark edilmeden yanlış değerle çalışan modeller varsa bu değişiklikten sonra açık hata verecektir.
- Standart hata çıktısındaki mesajlar
ERROR:veWARNING:önekleriyle geliyor. Loglar ve SARIF dahil yapılandırılmış çıktı değişmedi, yani SARIF tüketen araçlar etkilenmiyor. codeql query compilekomutu,--dump-dilile birlikte--dil-constantsseçeneğini kabul ediyor; böylece üretilen DIL çıktısına optimize edilmiş sabit tuple kümeleri dahil edilebiliyor.- Veri uzantılarını yükleyen komutlar, yalnızca bir paketin
dataExtensionslistesindeki kalıplardan hiçbiri dosya eşleştirmediğinde uyarı üretiyor.
Go kütüphanesinde kırıcı değişiklik
Go kontrol akış grafiği artık paylaşılan CFG kütüphanesini kullanıyor. Yeni CFG; atamalar, parametre ve dönüş değerleri, range ifadeleri ve ertelenmiş (deferred) çağrılar gibi yapılar için ek düğümler içeriyor, giriş noktasından erişilemeyen düğümleri ise dışarıda bırakıyor.
Yani CFG düğümleri, kenarları, konumları, metinsel gösterimleri ve temel blok sınırları değişiyor. Önceki gösterime dayanan özel sorgularınız varsa güncelleme gerekebilir. Değişikliğin somut maddeleri:
BasicBlocks::Cfgkaldırıldı.ControlFlow::EntryNode,ControlFlow::ExitNodeveSwitchStmt.getExpreklendi.IfStmt.getCondkullanımdan kaldırıldı (deprecated); yerineIfStmt.getConditionöneriliyor.IfStmt.getThenveLoopStmt.getBodymetotlarının dönüş tipiStmtolarak değişti.- Bazı IR instruction sınıfları birleştirildi.
Kendi QL paketlerini yöneten ekiplerin bu sürüme geçmeden önce Go sorgularını derleyip sonuç farklarını karşılaştırması mantıklı olur.
Dağıtım: github.com ve GHES
GitHub her yeni CodeQL sürümünü github.com üzerindeki code scanning kullanıcılarına otomatik dağıtıyor, bulut tarafında ek bir işlem gerekmiyor. GitHub Enterprise Server için 2.27.2’deki yenilikler ileride çıkacak bir GHES sürümüyle gelecek. Daha eski bir GHES sürümü kullanıyorsanız CodeQL sürümünü manuel olarak yükseltebilirsiniz; bunun için appliance üzerinde code scanning yapılandırma dokümantasyonuna başvurun.
Kaynaklar ve İleri Okuma
- CodeQL 2.27.2 improves C++, Go, Rust, and JavaScript analysis — The GitHub Blog (Allison)
- CodeQL CLI 2.27.2 tam değişiklik günlüğü
- GHES: Appliance üzerinde code scanning yapılandırma ve CodeQL sürümünü yükseltme
- CodeQL 2.26.3: Actions Sorguları ve JavaScript Modellemesi
- CodeQL 2.26.0: Kotlin 2.4 Desteği ve AI Prompt Injection Taraması







Yorum gönder