Kodgenomsökning
Med kodgenomsökning i GitHub Advanced Security för Azure DevOps kan du analysera koden på en Azure DevOps-lagringsplats för att hitta säkerhetsrisker och kodfel. Eventuella problem som identifieras av analysen tas upp som en varning. Kodskanning använder CodeQL för att identifiera sårbarheter.
CodeQL är kodanalysmotorn som utvecklats av GitHub för att automatisera säkerhetskontroller. Du kan analysera koden med Hjälp av CodeQL och visa resultatet som aviseringar om kodgenomsökning. Mer specifik dokumentation om CodeQL finns i CodeQL-dokumentationen.
GitHub Advanced Security för Azure DevOps fungerar med Azure Repos. Om du vill använda GitHub Advanced Security med GitHub-lagringsplatser läser du GitHub Advanced Security.
Ytterligare konfigurationer för kodgenomsökning
Stöd för språk och frågor
GitHub-experter, säkerhetsforskare och communitydeltagare skriver och underhåller standardfrågorna för CodeQL som används för kodgenomsökning. Frågorna uppdateras regelbundet för att förbättra analysen och minska eventuella falska positiva resultat. Frågorna är öppen källkod, så du kan visa och bidra till frågorna på github/codeql-lagringsplatsen.
CodeQL stöder och använder följande språkidentifierare:
Språk | Identifierare | Valfria alternativa identifierare (om några) |
---|---|---|
C/C++ | c-cpp |
c eller cpp |
C# | csharp |
|
Go | go |
|
Java/Kotlin | java-kotlin |
|
JavaScript/TypeScript | javascript |
|
Python | python |
|
Ruby | ruby |
|
Swift | swift |
Dricks
- Använd
c-cpp
för att analysera kod som skrivits i C, C++ eller båda. - Använd
java-kotlin
för att analysera kod som skrivits i Java, Kotlin eller båda. - Använd
javascript
för att analysera kod som skrivits i JavaScript, TypeScript eller båda.
Mer information finns i Språk och ramverk som stöds.
Du kan visa specifika frågor och uppgiftsinformation som körs av CodeQL i byggloggen.
Anpassning av kodgenomsökningsläge
Kodgenomsökning stöder två bygglägen när du konfigurerar en pipeline för genomsökning:
none
– CodeQL-databasen skapas direkt från kodbasen utan att skapa kodbasen (stöds för alla tolkade språk och stöds dessutom för C# och Java).manual
– du definierar de byggsteg som ska användas för kodbasen i arbetsflödet (stöds för alla kompilerade språk).
Mer information om de olika bygglägena, inklusive en jämförelse av fördelarna med varje byggläge, finns i CodeQL-kodgenomsökning för kompilerade språk.
För att köra kodgenomsökningsanalys via GitHub Advanced Security för Azure DevOps autobuild
är byggläget i stället en separat bygguppgift, AdvancedSecurity-CodeQL-Autobuild@1
.
Dricks
Byggläget none
kan användas tillsammans med andra tolkade språk (t.ex. JavaScript, Python och Ruby).
Om byggläget none
har angetts för C# eller Java tillsammans med andra kompilerade språk som inte stöder byggläge none
misslyckas pipelineaktiviteten.
Här är ett exempel på en giltig konfiguration med flera språk och none
byggläge:
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
Här är ett exempel på en ogiltig konfiguration med flera språk och none
byggläge:
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
Aviseringar för kodgenomsökning
GitHub Advanced Security för Azure DevOps-kodgenomsökningsaviseringar innehåller kodgenomsökningsflaggor efter lagringsplats som varnar för programsårbarheter på kodnivå.
Om du vill använda kodgenomsökning måste du först konfigurera GitHub Advanced Security för Azure DevOps.
Fliken Avancerad säkerhet under Lagringsplatser i Azure DevOps är hubben för att visa dina kodgenomsökningsaviseringar. Välj fliken Kodgenomsökning för att visa genomsökningsaviseringar. Du kan filtrera efter gren, tillstånd, pipeline, regeltyp och allvarlighetsgrad. För närvarande visar inte aviseringshubben aviseringar för genomsökning som slutförts på PR-grenar.
Resultatet påverkas inte om pipelines eller grenar byts namn – det kan ta upp till 24 timmar innan det nya namnet visas.
Om du väljer att köra anpassade CodeQL-frågor finns det som standard inte ett separat filter för aviseringar som genererats från olika frågepaket. Du kan filtrera efter regel, vilket är distinkt för varje fråga.
Om du inaktiverar Avancerad säkerhet för lagringsplatsen förlorar du åtkomsten till resultaten på fliken Avancerad säkerhet och byggaktiviteten. Byggaktiviteten misslyckas inte, men eventuella resultat från byggen körs med uppgiften medan Avancerad säkerhet är inaktiverad och behålls inte.
Aviseringsinformation
Välj en avisering för mer information, inklusive reparationsvägledning. Varje avisering innehåller en plats, en beskrivning, ett exempel och en allvarlighetsgrad.
Avsnitt | Förklaring |
---|---|
Plats | Avsnittet Platser beskriver en specifik instans där CodeQL identifierade en säkerhetsrisk. Om det finns flera instanser av koden som bryter mot samma regel genereras en ny avisering för varje distinkt plats. Kortet Platser innehåller en direktlänk till det berörda kodfragmentet så att du kan välja det kodfragment som ska dirigeras till Azure DevOps-webbgränssnittet för redigering. |
beskrivning | Beskrivningen tillhandahålls av CodeQL-verktyget baserat på problemet. |
Rekommendation | Rekommendationen är den föreslagna korrigeringen för en viss kodgenomsökningsavisering. |
Exempel | Exempelavsnittet visar ett förenklat exempel på den identifierade svagheten i koden. |
Allvarlighet | Allvarlighetsgraderna kan vara låga, medelhöga, höga eller kritiska. Allvarlighetsgradspoängen baseras på den angivna CVSS-poängen (Common Vulnerability Scoring System) för den identifierade Common Weakness Enumeration (CWE). Läs mer om hur allvarlighetsgrad poängsätts i det här GitHub-blogginlägget. |
Visa aviseringar för en lagringsplats
Alla med deltagarbehörigheter för en lagringsplats kan visa en sammanfattning av alla aviseringar för en lagringsplats på fliken Avancerad säkerhet under Lagringsplatser. Välj fliken Kodgenomsökning för att visa alla aviseringar för hemlig genomsökning.
För att visa resultat måste kodgenomsökningsuppgifterna köras först. När den första genomsökningen är klar visas eventuella identifierade säkerhetsrisker på fliken Avancerad säkerhet.
Som standard visar aviseringssidan resultat av beroendegenomsökning för lagringsplatsens standardgren.
Statusen för en viss avisering återspeglar tillståndet för standardgrenen och den senaste körningspipelinen, även om aviseringen finns på andra grenar och pipelines.
Stänga aviseringar för kodgenomsökning
Om du vill stänga aviseringar behöver du lämpliga behörigheter. Som standard kan endast projektadministratörer stänga av avancerade säkerhetsaviseringar.
Så här stänger du en avisering:
- Gå till den avisering som du vill stänga och välj i aviseringen.
- Välj listrutan Stäng avisering.
- Om du inte redan har valt väljer du antingen Risk accepterad eller Falsk positiv som stängningsorsak.
- Lägg till en valfri kommentar i textrutan Kommentar .
- Välj Stäng för att skicka och stänga aviseringen.
- Aviseringstillståndet ändras från Öppna till Stängd och orsaken till uppsägningen visas.
Den här åtgärden stänger bara aviseringen för den valda grenen. Andra grenar som innehåller samma säkerhetsrisk förblir aktiva tills de stängs. Alla aviseringar som tidigare avvisats kan öppnas manuellt.
Hantera kodgenomsökningsaviseringar vid pull-begäranden
Om aviseringar skapas för nya kodändringar i en pull-begäran rapporteras aviseringen som en kommentar i avsnittet Översiktsflikens kommentar i pull-begäran och som en avisering på fliken Advanced Security-lagringsplats, med ett nytt grenväljareresultat för pull-begärandegrenen.
Du kan granska de berörda kodraderna, se en sammanfattning av sökningen och lösa anteckningen i avsnittet Översikt.
Om du vill avvisa pull-begärandeaviseringar måste du gå till aviseringsvyn för att stänga både aviseringen och lösa anteckningen. Annars löser bara ändring av kommentarsstatus (1) anteckningen men stänger eller åtgärdar inte den underliggande aviseringen.
Om du vill se hela resultatuppsättningen för din pull-begärandegren går du till Repos>Advanced Security och väljer grenen för pull-begäran. Om du väljer Visa mer information (2) i anteckningen dirigeras du till aviseringsinformationsvyn på fliken Avancerad säkerhet.
Dricks
Anteckningar skapas endast när de berörda kodraderna är helt unika för skillnaden i pull-begäran.