Analysér problemer ved hjælp af GitHub Copilots Ask-tilstand
At identificere og forstå sikkerhedsproblemer er det første skridt mod at løse dem. GitHub Copilot's Ask-agent giver en interaktiv måde at analysere kode, identificere sårbarheder og planlægge afhjælpningsstrategier.
Hvad er Ask-agenten?
Ask-agenten er en af tre indbyggede agenter i GitHub Copilot Chat, integreret i Visual Studio Code. Du stiller spørgsmål om din kode, og GitHub Copilot svarer ved hjælp af den kontekst, du angiver. Ask-agenten fungerer som en vidende kollega, der kan læse din kode og give vejledning. For at aktivere Ask-agenten i chatvisningen, vælg Ask fra Set Agent-dropdownmenuen .
Ask-agenten er ideel til:
- Forstå, hvad specifik kode gør.
- Identificering af potentielle sikkerhedssårbarheder.
- Undersøgelse af alternative gennemførelsestilgange.
- Få forklaringer på sikkerhedsbegreber.
- Planlægning af afhjælpningsstrategier, før du foretager ændringer.
Ask-agenten ændrer ikke dine kodefiler. Den indeholder analyser, forklaringer og forslag, som du kan bruge til at træffe informerede beslutninger om, hvordan du skal fortsætte.
Analyser sikkerhedsproblemer ved hjælp af Ask-agenten
Du kan bruge Ask-agenten til systematisk at identificere og forstå sikkerhedssårbarheder i din kodebase. GitHub Copilot hjælper dig med at forstå arten af sikkerhedsproblemer, deres potentielle virkninger og passende afhjælpningsmetoder.
Strategier til analyse af sikkerhedsproblemer
Her er effektive strategier til at bruge Ask-agenten til at analysere sikkerhedsproblemer:
Forstå koden: Bed GitHub Copilot om at forklare, hvad sårbar kode gør, og hvordan den behandler data.
Identificer sårbarheder: Anmod om analyse af potentielle sikkerhedsproblemer i specifikke kodeafsnit.
Vurder virkningen: Undersøg de potentielle konsekvenser af sårbarheder, hvis de udnyttes.
Find edge-sager: Identificer scenarier, hvor koden kan opføre sig uventet eller usikkert.
Evaluer løsninger: Bed om flere tilgange til at løse problemet og forstå deres afvejninger.
Bekræft forståelsen: Bekræft din fortolkning af sikkerhedsproblemet, før du implementerer rettelser.
Planlæg systematisk: Udarbejd en trinvis afhjælpningsplan, der adresserer alle aspekter af sårbarheden.
Ask agentprompts for sikkerhedsanalyse
Effektive prompter er specifikke, giver kontekst og fokuserer på handlingsrettet indsigt.
Forståelse og analyse
Disse meddelelser hjælper dig med at forstå, hvad kode gør, og identificere dens sikkerhedsmæssige konsekvenser.
- "Forklar, hvad den valgte godkendelsesfunktion gør, og identificer eventuelle sikkerhedsproblemer."
- "Analyser den valgte kode for SQL-injektionssårbarheder og forklar, hvordan de kan udnyttes."
- "Gennemgå den valgte implementering af adgangskodelagring, og forklar, hvorfor den er usikker."
- "Hvilke sikkerhedsrisici findes der i den valgte filhåndteringskode?"
Vurdering af sårbarhed
Brug disse prompter til at analysere potentielle udnyttelser i dybden og vurdere alvoren af sikkerhedsproblemer.
- "Identificer alle de måder, hvorpå en angriber kan udnytte den valgte inputvalidering."
- "Hvilke følsomme oplysninger kan blive eksponeret gennem den valgte fejlhåndtering?"
- "Analyser den valgte krypteringsimplementering for svagheder."
- "Følger den valgte kode OWASP Top 10 sikkerhedsretningslinjerne? Forklar eventuelle overtrædelser."
Udforskning af løsninger
Disse prompter hjælper dig med at evaluere forskellige tilgange til løsning af sikkerhedsproblemer og forstå deres afvejninger.
- "Hvad er de anbefalede tilgange til at rette SQL-injektion i den valgte forespørgsel?"
- "Vis mig sikre alternativer til den valgte implementering af adgangskodehashing."
- "Hvordan skal jeg implementere stivalidering for at forhindre kataloggennemgang?"
- "Hvad er den sikreste måde at logge fejl på uden at afsløre følsomme oplysninger?"
Konsekvensanalyse
Brug disse meddelelser til at forstå de potentielle konsekvenser af sikkerhedssårbarheder, hvis de udnyttes.
- "Hvad er den potentielle indvirkning, hvis den valgte SQL-injektionssårbarhed udnyttes?"
- "Forklar konsekvenserne af at gemme adgangskoder i klartekst."
- "Hvilke data kan kompromitteres gennem den valgte sti-traverseringssårbarhed?"
- "Hvor alvorligt er det valgte logningsproblem sammenlignet med andre sårbarheder i kodebasen?"
Bekræftelse af bedste praksis
Disse meddelelser hjælper dig med at sikre, at din kode følger branchestandarder og sikkerhedsretningslinjer.
- "Følger den valgte kode Microsofts sikkerhedsretningslinjer for .NET?"
- "Bruger den valgte krypteringsimplementering den aktuelle bedste praksis?"
- "Hvilke sikkerhedsforbedringer vil du anbefale for det valgte godkendelsesflow?"
- "Hvordan er den valgte kode sammenlignet med branchestandarder for sikker lagring af adgangskoder?"
Etabler effektiv chatkontekst
GitHub Copilots analysekvalitet afhænger af den kontekst, du angiver. Følg disse fremgangsmåder for at sikre, at Copilot har tilstrækkelige oplysninger:
Tilføj relevante filer og kode
Omfattende kontekst hjælper GitHub Copilot med at levere mere nøjagtige og relevante sikkerhedsanalyser.
- Indtast
#chatinputtet for at referere til specifikke filer (for eksempel#file:SearchProducts.cs), mapper, symboler eller hele din kodebase (#codebase). - Vælg specifikke kodeafsnit, før du stiller spørgsmål for at fokusere analysen.
- Medtag relaterede filer, der giver kontekst (f.eks. konfigurationsfiler, hjælpeklasser eller datamodeller).
- Referer terminaloutput (
#terminalSelection) til at inkludere compilerfejl eller testfejl som kontekst. - Vedhæft skærmbilleder af fejl eller sikkerhedsscanningsresultater — Ask-agenten understøtter vision, så du kan indsætte et billede direkte i chatten.
Giv klare problembeskrivelser
Klar kontekst hjælper GitHub Copilot med at forstå din specifikke situation og give mere målrettet sikkerhedsvejledning.
- Beskriv, hvad du forsøger at opnå.
- Nævn eventuelle begrænsninger eller krav (overvejelser om ydeevne, overholdelsesbehov).
- Angiv dine sikkerhedsproblemer eksplicit.
- Bemærk eventuelle relevante kodningsstandarder eller retningslinjer, som dit team følger.
Ask agentens arbejdsgang for sikkerhedsanalyse
Følg denne systematiske arbejdsgang for at analysere sikkerhedsproblemer ved hjælp af Ask-agenten:
Trin 1: Åbn og vælg den problematiske kode
Det første trin i analysen af et sikkerhedsproblem er at give GitHub Copilot den specifikke kode, du vil analysere.
Gå til den fil, der indeholder sikkerhedsproblemet, og vælg den relevante kodesektion. Valg af en fil- eller kodesektion fokuserer GitHub Copilots analyse på det specifikke problemområde.
Trin 2: Bed om en forklaring
Begynd din analyse med at forstå, hvad koden gør, og bekræfte, at der findes en sårbarhed.
Start med et bredt forståelsesspørgsmål for at bekræfte sårbarheden og forstå, hvordan den kan udnyttes.
Eksempel på prompt: "Forklar, hvad denne søgefunktion gør, og identificer eventuelle sikkerhedsproblemer."
GitHub Copilot beskriver, hvordan koden fungerer, identificerer sårbarhedstypen og forklarer potentielle udnyttelsesmetoder.
Trin 3: Stil målrettede spørgsmål om sårbarheden
Når du forstår den grundlæggende sårbarhed, skal du grave dybere for at forstå alle mulige angrebsvektorer.
Dyk dybere ned i specifikke aspekter af sikkerhedsproblemet.
Eksempel på prompt: "Hvad er alle de forskellige måder, hvorpå en hacker kan udnytte denne SQL-injektionssårbarhed?"
Målrettede spørgsmål hjælper dig med at forstå det fulde omfang af risikoen, herunder godkendelsesbypass, dataudtrækning, dataændring og Denial of Service-muligheder.
Trin 4: Udforsk afhjælpningsmuligheder
Forståelse af flere løsningsmetoder hjælper dig med at vælge den mest passende løsning til din specifikke kontekst.
Spørg efter løsningsstrategier med fordele og ulemper.
Eksempel på prompt: "Hvad er de anbefalede tilgange til at løse denne SQL-injektionssårbarhed? Inkluder fordele og ulemper ved hver tilgang."
GitHub Copilot kan foreslå flere løsninger såsom parameteriserede forespørgsler, Object-Relational Mapping (ORM) frameworks eller lagrede procedurer, der hjælper dig med at vælge den mest passende løsning til din situation.
Trin 5: Bekræft kantsager og krav
Før du implementerer en rettelse, skal du sikre dig, at du forstår alle de scenarier og særlige tilfælde, der skal håndteres.
Sørg for, at rettelsen fungerer i alle scenarier ved at spørge om særlige overvejelser.
Eksempel på prompt: "Er der nogen edge-tilfælde eller særlige overvejelser, jeg skal håndtere, når jeg implementerer parameteriserede forespørgsler til denne søgefunktion?"
GitHub Copilot kan identificere krav til inputvalidering, overvejelser om ydeevne og problemer med forretningslogik, som du skal løse.
Trin 6: Planlæg implementeringen
Det sidste trin før kodning er at oprette en omfattende plan, der styrer implementeringsprocessen.
Anmod om en omfattende implementeringsplan, der inkluderer testkrav.
Eksempel på prompt: "Baseret på vores diskussion skal du oprette en trinvis plan for at løse denne SQL-injektionssårbarhed, herunder testkrav."
GitHub Copilot kan levere en struktureret plan, der dækker forberedelse, implementering, test (enhed, sikkerhed og regression), implementering og dokumentationsfaser.
Tip
Efter at have gennemført din Ask-agentanalyse, kan du overveje at bruge Planagenten til at formalisere implementeringsplanen. Planagenten udarbejder en struktureret, trin-for-trin implementeringsplan ud fra dine analyseresultater og kan overdrage direkte til agenten til implementering. Vælg Plan fra agentens vælger i chatvisningen.
Iterativ analysetilgang
Sikkerhedsanalyse kræver ofte flere runder af spørgsmål. Følgende trin anbefales til en iterativ tilgang:
- Stil opfølgende spørgsmål for afklaring.
- Anmod om kodeeksempler for foreslåede løsninger.
- Udforsk alternative tilgange.
- Sikre en omfattende forståelse af problemet og løsningsprocessen.
Overvej følgende serie af prompter i en iterativ analysetilgang. I dette scenarie antages det, at du har åbnet en fil, der indeholder en søgefunktion, der er sårbar over for SQL-injektion, og valgt koden:
Etabler en generel forståelse af koden og problemet: "Forklar, hvad den valgte søgefunktion gør, og identificer eventuelle sikkerhedsproblemer."
Dyk ned i specifikke risici: "Hvad er alle de forskellige måder, hvorpå en hacker kan udnytte denne SQL-injektionssårbarhed?"
Udforsk løsningsmulighederne: "Hvad er de anbefalede tilgange til at løse denne SQL-injektionssårbarhed? Inkluder fordele og ulemper ved hver tilgang."
Gør din forståelse af den anbefalede fremgangsmåde: "Hvorfor er en parameteriseret forespørgsel bedre end at undslippe inputtet med en rensningsfunktion?"
Sørg for en komplet og omfattende forståelse: "Er der nogen edge cases eller særlige overvejelser, jeg skal håndtere, når jeg implementerer parameteriserede forespørgsler til denne søgefunktion?"
Planlæg implementeringen: "Baseret på vores diskussion skal du oprette en trin-for-trin plan for at løse denne SQL-injektionssårbarhed, herunder testkrav."
Denne iterative tilgang opbygger omfattende forståelse og sikrer, at du har en komplet afhjælpningsstrategi, før du ændrer kode.
Administration af GitHub Copilots svar
Selvom GitHub Copilot er vidende, skal du behandle dens svar som informeret vejledning snarere end absolut sandhed.
Bekræft kritiske sikkerhedsbeslutninger
Valider altid sikkerhedsanbefalinger i forhold til autoritative kilder og dine specifikke krav.
- Krydshenvis GitHub Copilots råd med officiel dokumentation.
- Se OWASP-retningslinjerne for bedste praksis for sikkerhed.
- Gennemse Microsofts sikkerhedsanbefalinger for .NET.
- Overvej dine specifikke krav til overholdelse af angivne standarder.
Anerkend GitHub Copilots begrænsninger
At forstå, hvad GitHub Copilot kan og ikke kan, hjælper dig med at bruge det effektivt, samtidig med at du opretholder passende tilsyn.
GitHub Copilot er et kraftfuldt værktøj, men det har begrænsninger, som du skal være opmærksom på.
Overvej følgende begrænsninger:
- GitHub Copilot analyserer statisk kode, men har ikke kørselskontekst.
- GitHub Copilot kender muligvis ikke til din specifikke infrastruktur eller arkitektur.
- GitHub Copilot kan ikke få adgang til proprietære sikkerhedspolitikker.
- GitHub Copilot kan gå glip af subtile sårbarheder, der kræver domæneekspertise.
Giv tydeligere kontekst
Kvaliteten af GitHub Copilots svar forbedres betydeligt, når du giver mere kontekst og detaljer.
GitHub Copilots nøjagtighed forbedres med bedre kontekst. Hvis svarene virker forkerte:
- Tilføj mere kontekst om dit miljø.
- Inkluder relaterede kodefiler i chatten.
- Angiv betingelser eller krav eksplicit.
- Omformuler dit spørgsmål med flere detaljer.
Nøglefordele ved Ask-agenten til sikkerhedsanalyse
Brugen af Ask-agenten til sikkerhedsanalyse giver flere fordele:
- Hurtig vurdering: Få øjeblikkelig analyse uden at undersøge dokumentation.
- Omfattende perspektiv: GitHub Copilot overvejer mønstre fra millioner af kodebaser.
- Uddannelsesmæssigt: Lær sikkerhedsprincipper gennem forklaringer.
- Planlægningshjælp: Udvikl implementeringsstrategier, før du skriver kode.
- Risikofri udforskning: Undersøg flere tilgange uden at ændre kode.
Oversigt
Ask-agenten er et kraftfuldt værktøj til systematisk analyse af sikkerhedsproblemer. Stil målrettede spørgsmål, og giv passende kontekst for at få de bedste resultater. Følg en iterativ arbejdsproces for at forstå sårbarheder grundigt og udforske afhjælpningsmuligheder. Brug Ask-agenten til at udvikle omfattende implementeringsplaner, før du skriver kode, og skift derefter til Plan-agenten for at strukturere din tilgang eller agenten til at implementere rettelser direkte. Denne fremgangsmåde hjælper dig med at løse sikkerhedsproblemer på en sikker måde, mens du lærer sikkerhedsprincipper, der forbedrer din fremtidige kode.