Kod tarama
Azure DevOps için GitHub Advanced Security'de kod tarama, güvenlik açıklarını ve kodlama hatalarını bulmak için bir Azure DevOps deposundaki kodu analiz etmenizi sağlar. Analiz sonucunda tespit edilen tüm sorunlar uyarı olarak bildirilir. Kod tarama, güvenlik açıklarını belirlemek için CodeQL kullanır.
CodeQL, GitHub tarafından güvenlik denetimlerini otomatikleştirmek için geliştirilen kod analizi altyapısıdır. CodeQL kullanarak kodunuzu analiz edebilir ve sonuçları kod tarama uyarıları olarak görüntüleyebilirsiniz. CodeQL hakkında daha ayrıntılı belgeler için Bkz . CodeQL belgeleri.
Azure DevOps için GitHub Advanced Security, Azure Repos ile çalışır. GitHub depolarıyla GitHub Gelişmiş Güvenlik'i kullanmak istiyorsanız bkz . GitHub Gelişmiş Güvenlik.
Kod tarama için ek yapılandırmalar
Dil ve sorgu desteği
GitHub uzmanları, güvenlik araştırmacıları ve topluluk katkıda bulunanları, kod tarama için kullanılan varsayılan CodeQL sorgularını yazar ve korur. Sorgular, analizi geliştirmek ve hatalı pozitif sonuçları azaltmak için düzenli olarak güncelleştirilir. Sorgular açık kaynak, böylece github/codeql deposundaki sorguları görüntüleyebilir ve bu sorgulara katkıda bulunabilirsiniz.
CodeQL aşağıdaki dil tanımlayıcılarını destekler ve kullanır:
Dil | Tanımlayıcı | İsteğe bağlı alternatif tanımlayıcılar (varsa) |
---|---|---|
C/C++ | c-cpp |
c veya cpp |
C# | csharp |
|
Go | go |
|
Java/Kotlin | java-kotlin |
|
JavaScript/TypeScript | javascript |
|
Python | python |
|
Ruby | ruby |
|
Swift | swift |
İpucu
- C, C++ veya her ikisinde yazılmış kodu analiz etmek için kullanın
c-cpp
. - Java, Kotlin veya her ikisinde yazılmış kodu analiz etmek için kullanın
java-kotlin
. - JavaScript, TypeScript veya her ikisinde yazılmış kodu analiz etmek için kullanın
javascript
.
Daha fazla bilgi için bkz . Desteklenen diller ve çerçeveler.
Derleme günlüğünde CodeQL tarafından yürütülen belirli sorguları ve görev ayrıntılarını görüntüleyebilirsiniz.
Kod tarama derleme modunu özelleştirme
Kod tarama, tarama için bir işlem hattı ayarlarken iki derleme modunu destekler:
none
- CodeQL veritabanı, kod tabanı oluşturulmadan doğrudan kod tabanından oluşturulur (tüm yorumlanan diller için desteklenir ve C# ve Java için de desteklenir).manual
- iş akışındaki kod tabanı için kullanılacak derleme adımlarını tanımlarsınız (tüm derlenmiş diller için desteklenir).
Her derleme modunun avantajlarıyla ilgili bir karşılaştırma da dahil olmak üzere farklı derleme modları hakkında daha fazla bilgi için bkz . Derlenmiş diller için CodeQL kod tarama.
Azure DevOps için GitHub Gelişmiş Güvenliği aracılığıyla kod tarama analizi çalıştırmak için derleme autobuild
modu bunun yerine ayrı bir derleme görevidir. AdvancedSecurity-CodeQL-Autobuild@1
İpucu
Derleme modu none
diğer yorumlanmış dillerle (javascript, Python, Ruby gibi) birlikte kullanılabilir.
Derleme modunu desteklemeyen diğer derlenmiş dillerle birlikte C# veya Java için derleme none
modu none
belirtilirse işlem hattı görevi başarısız olur.
Birden çok dil ve none
derleme modu içeren geçerli bir yapılandırma örneği aşağıda verilmiştir:
trigger: none
pool:
vmImage: windows-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
displayName: Initialize CodeQL
inputs:
# build mode `none` is supported for C# and Java, and JavaScript is an interpreted language
# and build mode `none` has no impact on JavaScript analysis
languages: 'csharp, java, javascript'
buildtype: 'none'
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: Perform CodeQL Analysis
Birden çok dil ve none
derleme modu içeren geçersiz yapılandırma örneği aşağıda verilmiştir:
trigger: none
pool:
vmImage: windows-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
displayName: Initialize CodeQL
inputs:
# build mode `none` is supported for C# but build mode `none` is NOT supported for Swift
# so this pipeline definition will result in a failed run
languages: 'csharp, swift'
buildtype: 'none'
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: Perform CodeQL Analysis
Kod tarama uyarıları
Azure DevOps için GitHub Gelişmiş Güvenlik kod tarama uyarıları, kod düzeyinde uygulama güvenlik açıkları uyarısı veren depoya göre kod tarama bayrakları içerir.
Kod taramayı kullanmak için önce Azure DevOps için GitHub Gelişmiş Güvenliği'ni yapılandırmanız gerekir.
Azure DevOps'ta Depolar altındaki Gelişmiş Güvenlik sekmesi, kod tarama uyarılarınızı görüntüleme hub'ıdır. Tarama uyarılarını görüntülemek için Kod tarama sekmesini seçin. Dal, durum, işlem hattı, kural türü ve önem derecelerine göre filtreleyebilirsiniz. Şu anda uyarı hub'ı çekme isteği dallarında tamamlanan tarama uyarıları görüntülemez.
İşlem hatları veya dallar yeniden adlandırılırsa sonuçların bir etkisi olmaz. Yeni adın görüntülenmesi 24 saat kadar sürebilir.
Özel CodeQL sorguları çalıştırmayı seçerseniz, farklı sorgu paketlerinden oluşturulan uyarılar için varsayılan olarak ayrı bir filtre yoktur. Her sorgu için ayrı olan kurala göre filtreleyebilirsiniz.
Deponuz için Gelişmiş Güvenlik'i kapatırsanız, Gelişmiş Güvenlik sekmesinde ve derleme görevinde sonuçlara erişimi kaybedersiniz. Derleme görevi başarısız olmaz, ancak Gelişmiş Güvenlik devre dışı bırakıldığında derlemelerden elde edilen sonuçlar gizlidir ve korunmaz.
Uyarı ayrıntıları
Düzeltme kılavuzu da dahil olmak üzere daha fazla ayrıntı için bir uyarı seçin. Her uyarı bir konum, açıklama, örnek ve önem derecesi içerir.
Section | Açıklama |
---|---|
Konum | Konumlar bölümünde CodeQL'in bir güvenlik açığı algıladığı belirli bir örnek ayrıntılı olarak açıklanmıştır. Kodunuzun aynı kuralı ihlal eden birden çok örneği varsa, her farklı konum için yeni bir uyarı oluşturulur. Konumlar kartı, etkilenen kod parçacığına doğrudan bağlantı içerir, böylece düzenlemek üzere Azure DevOps web kullanıcı arabirimine yönlendirilecek kod parçacığını seçebilirsiniz. |
Açıklama | Açıklama, sorundan yola çıkarak CodeQL aracı tarafından sağlanır. |
Öneri | Öneri, belirli bir kod tarama uyarısı için önerilen düzeltmedir. |
Örnek | Örnek bölümde, kodunuzda tanımlanan zayıflık basitleştirilmiş bir örnek gösterilmektedir. |
Önem | Önem düzeyleri düşük, orta, yüksek veya kritik olabilir. Önem derecesi, belirlenen Ortak Zayıflık Numaralandırması (CWE) için verilen Ortak Güvenlik Açığı Puanlama Sistemi (CVSS) puanına göre belirlenir. Bu GitHub blog gönderisinde önem derecelerinin nasıl puanlanmış olduğu hakkında daha fazla bilgi edinin. |
Depo için uyarıları görüntüleme
Depo için katkıda bulunan izinleri olan herkes, Depolar altındaki Gelişmiş Güvenlik sekmesinde bir depo için tüm uyarıların özetini görüntüleyebilir. Tüm gizli dizi tarama uyarılarını görüntülemek için Kod tarama sekmesini seçin.
Sonuçları görüntülemek için önce kod tarama görevlerinin çalıştırılması gerekir. İlk tarama tamamlandıktan sonra, algılanan tüm güvenlik açıkları Gelişmiş Güvenlik sekmesinde görüntülenir.
Varsayılan olarak, uyarılar sayfasında deponun varsayılan dalı için bağımlılık tarama sonuçları gösterilir.
Belirli bir uyarının durumu, uyarı diğer dallarda ve işlem hatlarında mevcut olsa bile varsayılan dalın ve en son çalıştırma işlem hattının durumunu yansıtır.
Kod tarama uyarılarını kapatma
Uyarıları kapatmak için uygun izinlere sahip olmanız gerekir. Varsayılan olarak, yalnızca proje yöneticileri Gelişmiş Güvenlik uyarılarını kapatabilir.
Uyarıyı kapatmak için:
- Kapatmak istediğiniz uyarıya gidin ve uyarıyı seçin.
- Uyarıyı kapat açılan listesini seçin.
- Henüz seçili değilse, kapatma nedeni olarak Risk kabul edildi veya Hatalı pozitif seçeneğini belirleyin.
- Açıklama metin kutusuna isteğe bağlı bir açıklama ekleyin.
- Uyarıyı göndermek ve kapatmak için Kapat'ı seçin.
- Uyarı durumu Açık olan Kapalı olarak değişir ve kapatma nedeniniz görüntülenir.
Bu eylem yalnızca seçtiğiniz dalın uyarısını kapatıyor. Aynı güvenlik açığını içeren diğer dallar kapatılana kadar etkin kalır. Daha önce kapatılan tüm uyarılar el ile yeniden açılabilir.
Çekme isteklerinde kod tarama uyarılarını yönetme
Çekme isteğinde yeni kod değişiklikleri için uyarılar oluşturulursa, uyarı, çekme isteğinin Genel Bakış sekmesinin açıklama bölümünde ek açıklama olarak ve Gelişmiş Güvenlik deposu sekmesinde bir uyarı olarak bildirilir. Çekme isteği dalı için yeni bir dal seçici girdisi var.
Etkilenen kod satırlarını gözden geçirebilir, bulmanın özetini görebilir ve Genel Bakış bölümünde ek açıklamayı çözümleyebilirsiniz.
Çekme isteği uyarılarını kapatmak için uyarı ayrıntı görünümüne gidip hem uyarıyı kapatmanız hem de ek açıklamayı çözümlemeniz gerekir. Aksi takdirde, açıklama durumunun değiştirilmesi (1) ek açıklamayı çözer, ancak temel alınan uyarıyı kapatmaz veya düzeltmez.
Çekme isteği dalınızın tüm sonuç kümesini görmek için Repos>Advanced Security'ye gidin ve çekme isteği dalınızı seçin. Ek açıklama üzerinde Daha fazla ayrıntı göster (2) seçeneğinin seçilmesi sizi Gelişmiş Güvenlik sekmesindeki uyarı ayrıntı görünümüne yönlendirir.
İpucu
Ek açıklamalar yalnızca etkilenen kod satırları çekme isteğinin hedef dalı ile karşılaştırıldığında çekme isteği farkı için tamamen benzersiz olduğunda oluşturulur.