Dela via


Konfigurera 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 varningar för kodgranskning. Mer specifik dokumentation om CodeQL finns i CodeQL-dokumentationen.

GitHub Advanced Security för Azure DevOps fungerar med Azure Repos. Information om hur du använder GitHub Advanced Security med GitHub-lagringsplatser finns i GitHub Advanced Security.

Förutsättningar

Kategori Krav
behörigheter - Så här visar du en sammanfattning av alla aviseringar för en lagringsplats: Deltagare behörigheter för lagringsplatsen.
– Så här stänger du aviseringar i Avancerad säkerhet: Projektadministratör behörigheter.
– För att hantera behörigheter i Avancerad säkerhet: Medlem i Project Collection-administratörer-gruppen, eller Avancerad säkerhet: hantera inställningar -behörighet inställd på Tillåt.

Mer information om avancerade säkerhetsbehörigheter finns i Hantera avancerade säkerhetsbehörigheter.

Fler 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 Identifikator Valfria alternativa identifierare (om några)
C/C++ c-cpp c eller cpp
C# csharp
go
Java/Kotlin java-kotlin
JavaScript/TypeScript javascript
Python python
Ruby ruby
Swift swift

Tips

  • 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 förfrågningar och information om uppgifter som körs av CodeQL i byggloggen.

Skärmbild av kodsöknings aktivitet för publiceringsresultat.

Anpassning av kodgenomsökningsbygglä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.

Tips

Byggläge none kan användas med andra tolkade språk, till exempel JavaScript, Python och Ruby. Om byggläge none har angetts för C# eller Java med andra kompilerade språk som inte stöder byggläge nonemisslyckas pipelineaktiviteten.

Följande kod visar 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

Följande kod visar 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 visas inte aviseringar för slutförd genomsökning på PR-avdelningar i varningscentralen.

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.

Skärmbild av kodgenomsökningsaviseringar för en lagringsplats.

Om du inaktiverar Avancerad säkerhet för lagringsplatsen förlorar du åtkomsten till resultaten på fliken Avancerad säkerhet och byggaktiviteten. Byggaktiviteter misslyckas inte, men resultaten från de byggen som körs med uppgiften medan Avancerad säkerhet är inaktiverad, är dolda och sparas 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.

Skärmbild av varningsdetaljer för kodskanning.

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 lösningen för en viss kodgranskningsvarning.
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 kodsökningar 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.

Status för en viss avisering återspeglar tillståndet för standardgrenen och den senaste pipeline-körningen, ä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:

  1. Gå till den avisering som du vill stänga och välj aviseringen.
  2. Välj listrutan Stäng avisering.
  3. Om du inte redan har valt väljer du antingen Risk accepterad eller Falsk positiv som stängningsorsak.
  4. Lägg till en valfri kommentar i textrutan Kommentar .
  5. Välj Stäng för att skicka och stänga aviseringen.
  6. Aviseringstillståndet ändras från Öppna till Stängd och orsaken till uppsägningen visas.

Skärmbild av hur du stänger en kodgenomsökningsavisering.

Den här åtgärden stänger bara varningen för din valda gren. 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 notiser skapas för nya kodändringar i en pull request rapporteras notisen som en kommentar i kommentaravsnittet på fliken Översikt i pull request och som en notis på fliken Advanced Security-repository. Det finns en ny post för grenväljaren i pull request-grenen.

Du kan granska de berörda kodraderna, se en sammanfattning av sökningen och lösa anteckningen i avsnittet Översikt.

Skärmbild av kommentar om aktiv kodhämtningsbegäran.

För att avfärda aviseringar om pull-begäranden måste du navigera till aviseringsdetaljvyn 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.

Skärmbild av kommentar om pull-begäran om stängd kod.

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 kommentaren dirigeras du till aviseringsinformationsvyn på fliken Avancerad säkerhet.

Tips

Anteckningar skapas bara när de berörda kodraderna är helt unika för skillnaden i pull-begäran i jämförelse med målgrenen för pull-begäran.