Analýza problémů pomocí režimu Ptejte se GitHubu Copilot
Identifikace a pochopení problémů se zabezpečením je prvním krokem k jejich řešení. GitHub Copilot agent Ask poskytuje interaktivní způsob analýzy kódu, identifikaci ohrožení zabezpečení a plánování strategií nápravy.
Co je Ask Agent?
Agent Ask je jedním ze tří integrovaných agentů v Copilot Chat GitHubu integrovaného do Visual Studio Code. Položte otázky týkající se kódu a GitHub Copilot odpoví pomocí kontextu, který zadáte. Agent Ask funguje jako znalý kolega, který může přečíst váš kód a poskytnout pokyny. Chcete-li v zobrazení Chat aktivovat agenta Ask, vyberte možnost Ask v rozevírací nabídce Nastavit agenta.
Agent Ask je ideální pro:
- Vysvětlení toho, co konkrétní kód dělá.
- Identifikace potenciálních ohrožení zabezpečení
- Prozkoumání alternativních přístupů k implementaci
- Vysvětlení konceptů zabezpečení
- Plánování strategií nápravy před provedením změn
Agent Ask neupravuje soubory kódu. Poskytuje analýzu, vysvětlení a návrhy, které můžete použít k informovanému rozhodování o tom, jak pokračovat.
Analýza problémů se zabezpečením pomocí agenta Ask
Pomocí agenta Ask můžete systematicky identifikovat a porozumět ohrožením zabezpečení ve vašem základu kódu. GitHub Copilot vám pomůže pochopit povahu problémů se zabezpečením, jejich potenciální účinky a vhodné přístupy k nápravě.
Strategie analýzy problémů se zabezpečením
Tady jsou efektivní strategie použití agenta Ask k analýze problémů se zabezpečením:
Vysvětlení kódu: Požádejte GitHub Copilot, aby vysvětlil, co ohrožený kód dělá a jak zpracovává data.
Identifikace ohrožení zabezpečení: Analýza potenciálních problémů se zabezpečením v konkrétních částech kódu
Posoudit dopad: Prozkoumejte potenciální důsledky zranitelností, pokud jsou zneužity.
Vyhledání hraničních případů: Identifikujte scénáře, ve kterých se může kód chovat neočekávaně nebo nezabezpečeně.
Vyhodnocení řešení: Požádejte o několik přístupů k vyřešení problému a pochopení jejich kompromisů.
Ověření porozumění: Před implementací oprav potvrďte interpretaci problému se zabezpečením.
Plán systematicky: Vytvořte podrobný plán nápravy, který řeší všechny aspekty zranitelnosti.
Požádejte agenta o pokyny pro analýzu zabezpečení
Efektivní výzvy jsou specifické, poskytují kontext a zaměřují se na užitečné přehledy.
Principy a analýza
Tyto výzvy vám pomůžou pochopit, co kód dělá, a identifikovat jeho dopady na zabezpečení.
- "Vysvětlete, co vybraná ověřovací funkce dělá, a identifikujte případné obavy z zabezpečení."
- Analyzujte vybraný kód kvůli zranitelnosti vůči SQL injekčním útokům a vysvětlete, jak by mohly být využity k útoku.
- "Zkontrolujte vybranou implementaci úložiště hesel a vysvětlete, proč je nezabezpečená."
- "Jaká bezpečnostní rizika existují ve vybraném kódu pro zpracování souborů?"
Hodnocení zranitelnosti
Pomocí těchto výzev můžete hlouběji analyzovat potenciální zneužití a posoudit závažnost problémů se zabezpečením.
- "Identifikujte všechny způsoby, jak by útočník mohl zneužít vybrané ověření vstupu."
- "Jaké citlivé informace mohou být zpřístupněny prostřednictvím vybraného zpracování chyb?"
- Analyzujte vybranou implementaci šifrování na slabé stránky.
- "Dodržuje vybraný kód pokyny k zabezpečení OWASP Top 10? Vysvětlete všechna porušení."
Zkoumání řešení
Tyto výzvy vám pomůžou vyhodnotit různé přístupy k řešení problémů se zabezpečením a porozumět jejich kompromisům.
- "Jaké jsou doporučené přístupy pro opravu injektáže SQL ve vybraném dotazu?"
- Ukaž mi zabezpečené alternativy k vybrané implementaci hashování hesel.
- "Jak mám implementovat ověření cesty, aby se zabránilo procházení adresářů?"
- "Jaký je nejbezpečnější způsob, jak protokolovat chyby bez vystavení citlivých informací?"
Analýza výsledku
Pomocí těchto výzev porozumíte potenciálním důsledkům ohrožení zabezpečení v případě jejich zneužití.
- Jaký je potenciální dopad, pokud se zneužije vybraná zranitelnost SQL injektáže?
- "Vysvětlit důsledky ukládání hesel ve formátu prostého textu."
- Jaká data by mohla být ohrožena prostřednictvím chyby zabezpečení procházení cest, která byla vybrána?
- "Jak závažná je vybraný problém s protokolováním v porovnání s jinými ohroženími zabezpečení v základu kódu?"
Ověření osvědčených postupů
Tyto výzvy vám pomůžou zajistit, že váš kód dodržuje oborové standardy a pokyny zabezpečení.
- "Dodržuje vybraný kód pravidla zabezpečení microsoftu pro .NET?"
- "Používá vybraná implementace šifrování aktuální osvědčené postupy?"
- "Jaká vylepšení zabezpečení byste doporučili pro vybraný tok ověřování?"
- Jak se vybraný kód porovnává s průmyslovými standardy pro zabezpečené ukládání hesel?
Vytvoření efektivního kontextu chatu
Kvalita analýzy GitHub Copilotu závisí na kontextu, který zadáte. Postupujte podle těchto postupů a ujistěte se, že Má Copilot dostatek informací:
Přidání relevantních souborů a kódu
Poskytování komplexního kontextu pomáhá GitHub Copilotu poskytovat přesnější a relevantnější analýzu zabezpečení.
- Zadejte
#do pole chatu, chcete-li odkazovat na konkrétní soubory (například#file:SearchProducts.cs), složky, symboly nebo celou kódovou základnu (#codebase). - Než položíte otázky, vyberte konkrétní oddíly kódu, abyste se mohli zaměřit na analýzu.
- Zahrňte související soubory, které poskytují kontext (například konfigurační soubory, pomocné třídy nebo datové modely).
- Odkaz na výstup terminálu (
#terminalSelection) pro zahrnutí chyb kompilátoru nebo selhání testů jako kontextu. - Připojte snímky obrazovky s chybami nebo výsledky kontroly zabezpečení – Agent Ask podporuje zpracování obrazu, takže můžete obrázek vložit přímo do chatu.
Zadejte jasné popisy problémů.
Jasný kontext pomáhá GitHub Copilotu pochopit vaši konkrétní situaci a poskytnout cílenější pokyny k zabezpečení.
- Popište, čeho se snažíte dosáhnout.
- Uveďte všechna omezení nebo požadavky (požadavky na výkon, požadavky na dodržování předpisů).
- Explicitně zadejte své obavy týkající se zabezpečení.
- Poznamenejte si všechny relevantní standardy kódování nebo pokyny, které váš tým sleduje.
Požádat o analýzu zabezpečení pomocí pracovního postupu agenta
Pomocí tohoto systematického pracovního postupu můžete analyzovat problémy se zabezpečením pomocí agenta Ask:
Krok 1: Otevření a výběr problematického kódu
Prvním krokem při analýze bezpečnostního problému je poskytnout GitHub Copilotu specifický kód k analýze.
Přejděte do souboru obsahujícího problém se zabezpečením a vyberte příslušnou část kódu. Výběr souboru nebo oddílu kódu se zaměřuje na analýzu GitHub Copilotu na konkrétní oblast zájmu.
Krok 2: Žádost o vysvětlení
Začněte s analýzou tím, že pochopíte, co kód dělá, a potvrdíte, že existuje ohrožení zabezpečení.
Začněte obecnou otázkou, abyste potvrdili ohrožení zabezpečení a porozuměli tomu, jak by se dala zneužít.
Příklad výzvy: "Vysvětlit, co tato vyhledávací funkce dělá a identifikovat případné obavy z zabezpečení".
GitHub Copilot popisuje, jak kód funguje, identifikuje typ ohrožení zabezpečení a vysvětluje potenciální metody zneužití.
Krok 3: Položte cílové otázky týkající se ohrožení zabezpečení
Jakmile porozumíte základnímu ohrožení zabezpečení, ponořte se hlouběji, abyste porozuměli všem možným vektorům útoku.
Podrobnější informace o konkrétních aspektech problému se zabezpečením
Příklad výzvy: "Jaké jsou všechny různé způsoby, jak by útočník mohl zneužít tuto zranitelnost SQL injektáže?"
Cílené otázky vám pomůžou porozumět plnému rozsahu rizika, včetně obejití ověřování, extrakce dat, úpravy dat a možností odepření služeb.
Krok 4: Prozkoumání možností nápravy
Pochopení více přístupů k řešení vám pomůže zvolit nejvhodnější opravu pro váš konkrétní kontext.
Požádejte o strategie řešení s klady a nevýhodymi.
Příklad výzvy: "Jaké jsou doporučené přístupy k opravě této zranitelnosti SQL injekce?" Zahrňte výhody a nevýhody každého přístupu."
GitHub Copilot může navrhnout několik řešení, jako jsou parametrizované dotazy, architektury Object-Relational Mapování (ORM) nebo uložené procedury, což vám pomůže zvolit nejvhodnější opravu pro vaši situaci.
Krok 5: Ověření hraničních případů a požadavků
Před implementací opravy se ujistěte, že rozumíte všem scénářům a speciálním případům, které je potřeba zpracovat.
Ujistěte se, že oprava funguje ve všech scénářích, a to tak, že se zeptáte na zvláštní aspekty.
Příklad výzvy: "Existují nějaké hraniční případy nebo zvláštní aspekty, které bych měl zpracovat při implementaci parametrizovaných dotazů pro tuto vyhledávací funkci?"
GitHub Copilot dokáže identifikovat požadavky na ověření vstupu, aspekty výkonu a aspekty obchodní logiky, které potřebujete vyřešit.
Krok 6: Plánování implementace
Posledním krokem před kódováním je vytvoření komplexního plánu, který provede proces implementace.
Požádejte o komplexní plán implementace, který zahrnuje požadavky na testování.
Příklad výzvy: "Na základě naší diskuze vytvořte plán krok za krokem pro opravu této zranitelnosti vůči injektáži SQL, včetně požadavků na testování."
GitHub Copilot může poskytovat strukturovaný plán zahrnující přípravu, implementaci, testování (jednotku, zabezpečení a regresi), nasazení a fáze dokumentace.
Tip
Po dokončení analýzy agenta Ask zvažte použití agenta plánu k formalizaci plánu implementace. Agent Plan vytváří strukturovaný plán implementace krok za krokem na základě zjištění z vaší analýzy a může jej předat přímo agentu Agent k implementaci. V zobrazení chatu vyberte ve výběru agentů možnost Plán.
Přístup k iterativní analýze
Analýza zabezpečení často vyžaduje několik kol otázek. Pro iterativní přístup se doporučuje následující kroky:
- Položte si následné otázky k objasnění.
- Požadovat příklady kódu pro navrhovaná řešení.
- Prozkoumejte alternativní přístupy.
- Zajistěte komplexní porozumění problému a procesu řešení.
Při iterativní analýze zvažte následující řadu výzev. Tento scénář předpokládá, že jste otevřeli soubor obsahující vyhledávací funkci, která je zranitelná vůči injektáži SQL, a vybral kód:
Vytvořte obecné znalosti o kódu a problému: "Vysvětlete, co vybraná vyhledávací funkce dělá, a identifikujte případné obavy z zabezpečení.".
Přejděte k podrobnostem o konkrétních rizicích: "Jaké jsou všechny různé způsoby, jak by útočník mohl toto ohrožení zabezpečení injektáže SQL zneužít?"
Prozkoumejte možnosti řešení. Jaké jsou doporučené přístupy pro opravu této zranitelnosti injekce SQL? Zahrňte výhody a nevýhody každého přístupu."
Vylepšete si znalosti doporučeného přístupu: "Proč je parametrizovaný dotaz lepší než uvozování vstupu pomocí funkce sanitizace?"
Zajistěte úplné a komplexní porozumění: "Existují nějaké hraniční případy nebo zvláštní aspekty, které bych měl zpracovat při implementaci parametrizovaných dotazů pro tuto vyhledávací funkci?"
Naplánujte implementaci: "Na základě naší diskuze vytvořte podrobný plán pro opravu tohoto ohrožení zabezpečení prostřednictvím injektáže SQL, včetně požadavků na testování."
Tento iterativní přístup vytváří komplexní porozumění a zajišťuje, abyste před úpravou kódu měli úplnou strategii nápravy.
Správa reakcí GitHub Copilota
GitHub Copilot je sice znalý, ale zacházejte s jeho odpověďmi jako s informovanými pokyny, nikoli jako s absolutní pravdou.
Ověření důležitých rozhodnutí o zabezpečení
Vždy ověřte doporučení zabezpečení vůči autoritativním zdrojům a vašim konkrétním požadavkům.
- Porovnejte doporučení od GitHub Copilotu s oficiální dokumentací.
- Informace o osvědčených postupech zabezpečení najdete v pokynech OWASP.
- Projděte si doporučení microsoftu k zabezpečení pro .NET.
- Zvažte konkrétní požadavky na dodržování předpisů.
Rozpoznávání omezení GitHub Copilotu
Pochopení toho, co GitHub Copilot dokáže a nedokáže, pomůže vám to efektivně používat při zachování vhodného dohledu.
GitHub Copilot je výkonný nástroj, ale má omezení, o které potřebujete vědět.
Berte v úvahu následující omezení:
- GitHub Copilot analyzuje statický kód, ale nemá kontext modulu runtime.
- GitHub Copilot nemusí vědět o konkrétní infrastruktuře nebo architektuře.
- GitHub Copilot nemá přístup k proprietárním zásadám zabezpečení.
- GitHub Copilot může přehlédnout jemné zranitelnosti, které vyžadují odborné znalosti.
Poskytnutí objasňujícího kontextu
Kvalita odpovědí GitHub Copilotu se výrazně zlepšuje, když zadáte více kontextu a podrobností.
Přesnost GitHub Copilota se zlepšuje díky lepšímu kontextu. Pokud se odpovědi zdají být mimo cíl:
- Přidejte další kontext o vašem prostředí.
- Do chatu zahrňte související soubory kódu.
- Explicitně zadejte omezení nebo požadavky.
- Přeformulujte svou otázku podrobněji.
Klíčové výhody agenta Ask pro analýzu zabezpečení
Použití agenta Ask pro analýzu zabezpečení nabízí několik výhod:
- Rychlé hodnocení: Získejte okamžitou analýzu bez zkoumání dokumentace.
- Komplexní perspektiva: GitHub Copilot zohledňuje vzory z milionů kódových databází.
- Vzdělávací: Seznamte se s principy zabezpečení prostřednictvím vysvětlení.
- Pomoc s plánováním: Před psaním kódu vytvořte strategie implementace.
- Průzkum bez rizika: Prozkoumejte více přístupů bez nutnosti upravovat kód.
Shrnutí
Agent Ask je výkonný nástroj pro analýzu problémů se zabezpečením systematicky. Položte cílové otázky a poskytněte odpovídající kontext, abyste získali nejlepší výsledky. Postupujte podle iterativního pracovního postupu, abyste důkladně porozuměli ohrožením zabezpečení a prozkoumali možnosti nápravy. Pomocí agenta Ask můžete před psaním kódu vytvořit komplexní plány implementace, poté přejít na agenta Plan a uspořádat svůj postup, nebo na agenta Agent a implementovat opravy přímo. Tento přístup vám pomůže vyřešit problémy se zabezpečením s jistotou a zároveň se naučit principy zabezpečení, které zlepšují budoucí kód.