Kontrola kódu
Kontrola kódu v GitHubu Advanced Security pro Azure DevOps umožňuje analyzovat kód v úložišti Azure DevOps a najít chyby zabezpečení a chyby kódování. Veškeré problémy zjištěné analýzou se zobrazí jako upozornění. Kontrola kódu používá k identifikaci zranitelností jazyk CodeQL.
CodeQL je modul pro analýzu kódu vyvinutý GitHubem, který automatizuje kontroly zabezpečení. Kód můžete analyzovat pomocí CodeQL a zobrazit výsledky jako výstrahy kontroly kódu. Konkrétnější dokumentaci k CodeQL najdete v dokumentaci codeQL.
Pokročilé zabezpečení GitHubu pro Azure DevOps funguje s Azure Repos. Pokud chcete používat GitHub Advanced Security s úložišti GitHub, přečtěte si téma GitHub Advanced Security.
Další konfigurace pro kontrolu kódu
Podpora jazyka a dotazů
Odborníci na GitHub, bezpečnostní pracovníci a přispěvatelé komunity zapisují a udržují výchozí dotazy CodeQL používané ke kontrole kódu. Dotazy se pravidelně aktualizují, aby se zlepšila analýza a snížila počet falešně pozitivních výsledků. Dotazy jsou opensourcové, takže můžete zobrazit a přispívat k dotazům v úložišti github/codeql .
CodeQL podporuje a používá následující identifikátory jazyka:
Jazyk | Identifikátor | Volitelné alternativní identifikátory (pokud existují) |
---|---|---|
C/C++ | c-cpp |
c nebo cpp |
C# | csharp |
|
Go | go |
|
Java/Kotlin | java-kotlin |
|
JavaScript/TypeScript | javascript |
|
Python | python |
|
Ruby | ruby |
|
Swift | swift |
Tip
- Slouží
c-cpp
k analýze kódu napsaného v jazyce C, C++ nebo obojím. - Slouží
java-kotlin
k analýze kódu napsaného v Javě, Kotlinu nebo obojím. - Slouží
javascript
k analýze kódu napsaného v JavaScriptu, TypeScriptu nebo obojím.
Další informace naleznete v tématu Podporované jazyky a architektury.
V protokolu sestavení můžete zobrazit konkrétní dotazy a podrobnosti úlohy prováděné codeQL.
Přizpůsobení režimu sestavení kontroly kódu
Kontrola kódu podporuje dva režimy sestavení při nastavování kanálu pro kontrolu:
none
– Databáze CodeQL se vytváří přímo ze základu kódu bez sestavení základu kódu (podporuje se pro všechny interpretované jazyky a navíc se podporuje pro C# a Javu).manual
– definujete kroky sestavení, které se mají použít pro základ kódu v pracovním postupu (podporováno pro všechny kompilované jazyky).
Další informace o různých režimech sestavení, včetně porovnání výhod jednotlivých režimů sestavení, najdete v tématu Kontrola kódu CodeQL pro kompilované jazyky.
Pro spuštění analýzy skenování kódu prostřednictvím GitHub Advanced Security pro Azure DevOps autobuild
je režim sestavení místo samostatné úlohy AdvancedSecurity-CodeQL-Autobuild@1
sestavení.
Tip
Režim none
sestavení je použitelný ve spojení s jinými interpretovanými jazyky (např. JavaScript, Python, Ruby).
Pokud je pro jazyk C# nebo Java zadán režim none
sestavení ve spojení s jinými zkompilovanými jazyky, které nepodporují režim none
sestavení, úloha kanálu selže.
Tady je příklad platné konfigurace s více jazyky a none
režimem sestavení:
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
Tady je příklad neplatné konfigurace s více jazyky a none
režimem sestavení:
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
Upozornění kontroly kódu
Upozornění kontroly kódu GitHub Advanced Security pro Azure DevOps zahrnují příznaky kontroly kódu podle úložiště, které upozorňují na ohrožení zabezpečení aplikací na úrovni kódu.
Pokud chcete použít kontrolu kódu, musíte nejprve nakonfigurovat GitHub Advanced Security pro Azure DevOps.
Karta Rozšířené zabezpečení v Azure DevOps je centrum pro zobrazení upozornění kontroly kódu. Výběrem karty Kontrola kódu zobrazíte výstrahy kontroly. Můžete filtrovat podle větve, stavu, kanálu, typu pravidla a závažnosti. V tuto chvíli centrum upozornění nezobrazuje výstrahy pro kontrolu dokončených ve větvích žádosti o přijetí změn.
Pokud se přejmenují kanály nebo větve, žádné výsledky se neprojeví – může to trvat až 24 hodin, než se zobrazí nový název.
Pokud se rozhodnete spouštět vlastní dotazy CodeQL, ve výchozím nastavení neexistuje samostatný filtr pro výstrahy vygenerované z různých balíčků dotazů. Můžete filtrovat podle pravidla, které je pro každý dotaz odlišné.
Pokud pro úložiště vypnete rozšířené zabezpečení, ztratíte přístup k výsledkům na kartě Upřesnit zabezpečení a úloha sestavení. Úloha sestavení se nezdaří, ale všechny výsledky sestavení se s úlohou spustí, zatímco rozšířené zabezpečení je zakázané, jsou skryté a nezachované.
Podrobnosti výstrahy
Výběrem výstrahy zobrazíte další podrobnosti, včetně pokynů k nápravě. Každá výstraha obsahuje umístění, popis, příklad a závažnost.
Sekce | Vysvětlení |
---|---|
Umístění | Část Umístění podrobně popisuje konkrétní instanci, ve které CodeQL zjistil chybu zabezpečení. Pokud existuje více instancí vašeho kódu, které porušují stejné pravidlo, vygeneruje se nová výstraha pro každé jedinečné umístění. Karta Umístění obsahuje přímý odkaz na ovlivněný fragment kódu, abyste mohli vybrat fragment kódu, který se má nasměrovat do webového uživatelského rozhraní Azure DevOps pro úpravy. |
Popis | Popis poskytuje nástroj CodeQL založený na problému. |
Doporučení | Doporučením je navrhovaná oprava pro danou výstrahu kontroly kódu. |
Příklad | Část příkladu ukazuje zjednodušený příklad zjištěné slabosti v kódu. |
Závažnost | Úrovně závažnosti můžou být nízké, střední, vysoké nebo kritické. Skóre závažnosti vychází z daného skóre CWE (Common Vulnerability Scoring System) pro identifikovaný společný výčet slabosti (CWE). Další informace o skóre závažnosti najdete v tomto blogovém příspěvku na GitHubu. |
Zobrazení upozornění pro úložiště
Každý, kdo má oprávnění přispěvatele pro úložiště, může zobrazit souhrn všech výstrah pro úložiště na kartě Upřesnit zabezpečení v části Úložiště. Výběrem karty Kontrola kódu zobrazíte všechna upozornění kontroly tajných kódů.
Aby se zobrazily výsledky, musí se nejprve spustit úlohy kontroly kódu. Po dokončení první kontroly se všechna zjištěná ohrožení zabezpečení zobrazí na kartě Rozšířené zabezpečení.
Ve výchozím nastavení se na stránce upozornění zobrazují výsledky kontroly závislostí pro výchozí větev úložiště.
Stav dané výstrahy odráží stav výchozí větve a nejnovějšího kanálu spuštění, i když výstraha existuje v jiných větvích a kanálech.
Zavření upozornění kontroly kódu
Pokud chcete výstrahy zavřít, potřebujete příslušná oprávnění. Ve výchozím nastavení můžou výstrahy Advanced Security zavřít jenom správci projektu.
Zavření výstrahy:
- Přejděte na výstrahu, kterou chcete zavřít, a vyberte ji.
- Vyberte rozevírací seznam Zavřít upozornění.
- Pokud ještě není vybraná, vyberte jako důvod uzavření buď Riziko, nebo Falešně pozitivní .
- Do textového pole Komentář přidejte volitelný komentář.
- Výběrem možnosti Zavřít odešlete a zavřete výstrahu.
- Stav upozornění se změní z otevřít na Uzavřeno a zobrazí se důvod zamítnutí.
Tato akce zavře pouze výstrahu pro vybranou větev. Ostatní větve, které obsahují stejnou chybu zabezpečení, zůstanou aktivní, dokud ji nespustíte. Jakékoli upozornění, které jste dříve zavřeli, je možné znovu otevřít ručně.
Správa upozornění kontroly kódu na žádosti o přijetí změn
Pokud se v žádosti o přijetí změn vytvoří upozornění pro nové změny kódu, zobrazí se upozornění jako poznámka v části komentáře karty Přehled žádosti o přijetí změn a jako výstraha na kartě Úložiště advanced Security. Pro větev žádosti o přijetí změn existuje nová položka pro výběr větví.
Můžete zkontrolovat ovlivněné řádky kódu, zobrazit souhrn hledání a vyřešit poznámku v části Přehled.
Pokud chcete zavřít výstrahy žádostí o přijetí změn, musíte přejít do zobrazení podrobností výstrahy a zavřít výstrahu a vyřešit poznámku. V opačném případě jednoduše změna stavu komentáře (1) vyřeší poznámku, ale nezavře nebo neopraví podkladovou výstrahu.
Pokud chcete zobrazit celou sadu výsledků pro větev žádosti o přijetí změn, přejděte na Rozšířené zabezpečení úložišť>a vyberte větev žádosti o přijetí změn. Výběrem možnosti Zobrazit další podrobnosti (2) v poznámce vás přesměruje na zobrazení podrobností výstrahy na kartě Upřesnit zabezpečení.
Tip
Poznámky budou vytvořeny pouze v případě, že ovlivněné řádky kódu jsou zcela jedinečné pro rozdíl žádosti o přijetí změn v porovnání s cílovou větví žádosti o přijetí změn.