Remediați problemele folosind modul Agent al GitHub Copilot
După ce analizezi problemele de securitate folosind agentul Ask, ești gata să implementezi remedieri. Agentul GitHub Copilot îți permite să execuți sarcini complexe de remediere în siguranță, asigurând în același timp păstrarea funcționalității și îmbunătățirea calității codului.
Notă
Luați în considerare utilizarea agentului Ask pentru a analiza problemele de securitate și a formula un plan de remediere înainte de a folosi agentul pentru a implementa modificările. Această abordare asigură că refactorizarea se face cu atenție și siguranță.
Ce este modul Agent?
Modul Agent al GitHub Copilot este unul dintre cei trei agenți integrați în GitHub Copilot Chat. Spre deosebire de agentul Ask, care oferă îndrumare și sugestii în panoul de chat, modul Agent implementează modificări ca editări direct în fișierele tale de cod.
Capacitățile modului agent includ:
- Editarea fișierelor cu modificări precise ale codului.
- Aplicarea simultană a modificărilor în mai multe fișiere.
- Rularea testelor pentru a verifica modificările.
- Executarea comenzilor pe baza instrucțiunilor dvs.
- Înțelegerea contextului și a dependențelor proiectului.
- Menținerea consecvenței în baza de cod.
Modul agent este ideal pentru implementarea remedierilor de securitate în mai mulți pași care necesită o gestionare atentă a dependențelor, cazurilor limită și testării. Determină automat contextul necesar și execută pașii necesari pentru a atinge obiectivele tale de remediere.
Tipuri de agenți pentru remedierea securității
GitHub Copilot oferă mai multe tipuri de agenți care rulează în medii diferite. Pentru fluxurile de lucru de remediere a securității, cele două tipuri cele mai relevante sunt:
- Agent local (Agent în VS Code): rulează interactiv în editor cu acces complet la spațiul tău de lucru, unelte și modele. Acesta este tipul de agent descris în această unitate — ideal pentru remediere practică, pas cu pas, de securitate, unde analizezi fiecare schimbare.
- Copilot cloud agent: rulează de la distanță și se integrează cu GitHub pull request. Poți atribui o problemă GitHub direct agentului cloud, care apoi cercetează baza de cod, creează un plan de implementare și face modificări de cod pe o ramură pentru revizuirea ta. Disponibil cu planurile Copilot Pro+, Business și Enterprise.
Pentru majoritatea remedierilor de securitate, este recomandat Agentul local deoarece îți oferă vizibilitate în timp real asupra fiecărei schimbări. Cloud Agent este util pentru probleme bine definite, cu risc redus, unde implementarea autonomă este acceptabilă.
Niveluri de permisiune
Înainte de a începe o sesiune de remediere, alegeți un nivel de permisiune care să corespundă complexității și riscului lucrării:
| Nivel de permisiune | Descriere | Recomandat pentru |
|---|---|---|
| Aprobări implicite | Doar uneltele de citire și sigure rulează fără confirmare. Toate editările fișierelor și comenzile terminale necesită aprobarea ta. | Remedierea sensibilă la securitate — supraveghere maximă |
| Aprobări de ocolire | Aprobă automat toate apelurile unelte fără dialoguri de confirmare. | Reparații de rutină în care ai încredere în plan |
| Autopilot (Previzualizare) | Complet autonom — aprobă automat uneltele și răspunde automat până la finalizarea sarcinii. | Nu este recomandat pentru schimbări de securitate |
Selectează nivelul de permisiune din selectorul de permisiuni din vizualizarea Chat. Pentru remedierea securității, se recomandă Default Approvals , astfel încât să poți revizui fiecare editare de fișier înainte de aplicare.
Remedierea problemelor de securitate folosind Agentul
Poți folosi Agentul pentru a implementa corecturile de securitate identificate în timpul analizei Ask Agent. Agentul poate executa automat mai mulți pași de remediere păstrând funcționalitatea originală și îmbunătățind securitatea codului.
Strategii pentru remedierea problemelor de securitate
Iată strategiile cheie pentru utilizarea modului Agent pentru a remedia problemele de securitate:
Remediați vulnerabilitățile de injecție: Instruiți modul Agent să înlocuiască concatenarea șirurilor cu interogări parametrizate sau instrucțiuni pregătite.
Implementează criptare securizată: Lasă Agentul să actualizeze algoritmi slabi de hashing folosind alternative sigure precum bcrypt sau Argon2.
Curăță logarea: Folosește Agentul pentru a elimina datele sensibile din instrucțiunile de jurnal, menținând în același timp informații de diagnostic utile.
Validează căile fișierelor: Lasă Agentul să adauge validarea corectă a căilor care să prevină atacurile de traversare a directorelor.
Validare a intrărilor suplimentare: Să implementeze Agentul o validare cuprinzătoare a intrărilor și sanitizare.
Asigurați securitatea: Instruiți agentul să valideze că corecturile mențin toate verificările de securitate existente și nu introduc vulnerabilități noi.
Menținerea funcționalității: Folosește Agentul pentru a păstra toată logica de business existentă și gestionarea erorilor, îmbunătățind în același timp securitatea.
Solicitări ale agentului pentru remedierea problemelor de securitate
Când folosești Agentul pentru a remedia problemele de securitate, prompturile tale ar trebui să fie specifice, acționabile și să includă considerente de siguranță. Iată exemple de text în limbaj natural pe care le puteți include în solicitare atunci când remediați problemele de securitate:
Pregătire și siguranță
Aceste solicitări vă ajută să stabiliți măsuri de siguranță înainte de a efectua modificări de securitate la baza de cod.
- "Înainte de a face remedieri de securitate, creați teste unitare care verifică comportamentul curent al funcțiilor selectate."
- "Analizați codul selectat pentru dependențe și asigurați-vă că remedierile mențin toate funcționalitățile existente."
- "Creați o ramură de rezervă și rulați testele existente înainte de a implementa remedieri de securitate la codul selectat."
Operațiuni de remediere de bază
Utilizați aceste solicitări pentru a aborda vulnerabilitățile comune de securitate cu remedieri simple.
- "Refactorizați interogarea SQL selectată pentru a utiliza interogări parametrizate în loc de concatenarea șirurilor."
- "Înlocuiți hashing-ul parolei MD5 selectate cu bcrypt, inclusiv generarea corectă de sare."
- "Eliminați informațiile sensibile din instrucțiunile de înregistrare selectate, menținând în același timp valoarea de diagnosticare."
- "Adăugați validarea căii la operațiunile de fișiere selectate pentru a preveni atacurile de traversare a directorului."
Modele avansate de remediere
Aceste solicitări ghidează modul agent prin îmbunătățiri de securitate mai complexe care implică mai multe componente sau modificări arhitecturale.
- "Refactorizați funcția de autentificare selectată pentru a utiliza autentificarea securizată bazată pe tokenuri cu expirare corectă."
- "Implementați validarea completă a intrărilor pentru funcțiile selectate de procesare a datelor utilizatorului."
- "Înlocuiți implementarea de criptare slabă selectată cu criptare AES-256 urmând cele mai bune practici."
- "Refactorizați gestionarea erorilor selectate pentru a oferi mesaje ușor de utilizat, în timp ce înregistrați erorile detaliate în siguranță."
Calitate și validare
Utilizați aceste solicitări pentru a vă asigura că remedierile de securitate îndeplinesc standardele de calitate și nu introduc regresii.
- "După implementarea remedierilor de securitate, rulați toate testele și verificați dacă funcționalitatea rămâne identică."
- "Asigurați-vă că codul fix respectă liniile directoare de securitate C# și convențiile de codare ale Microsoft."
- "Validați că remedierile de securitate nu introduc regresii de performanță."
- "Creați teste unitare axate pe securitate pentru a verifica dacă vulnerabilitățile sunt pe deplin abordate."
Flux de lucru în modul agent pentru remedierea problemelor de securitate
Urmați acest flux de lucru sistematic pentru a remedia problemele de securitate utilizând modul Agent:
Pasul 1: Pregătiți-vă spațiul de lucru
Începerea cu un spațiu de lucru curat vă asigură că puteți urmări modificările cu precizie și puteți reveni dacă este necesar.
Asigurați-vă că lucrați într-o ramură git curată cu toată munca existentă angajată. Navighează către fișierul care conține vulnerabilitatea de securitate identificată în timpul analizei Ask agent și ai planul de remediere pregătit pentru consultare.
Pasul 2: Configurați măsuri de siguranță
Creați teste de referință înainte de a face modificări în cod. Când actualizările de cod sunt finalizate, utilizați teste de referință pentru a verifica dacă funcționalitatea rămâne intactă.
Înainte de a face modificări, creați teste pentru a verifica comportamentul curent.
Exemplu de solicitare: "Creați teste unitare cuprinzătoare pentru funcție pentru a verifica comportamentul SearchProducts curent înainte de a implementa remedieri de securitate."
Agentul creează teste care surprind comportamentul curent, oferind o bază de validare.
Sfat
VS Code creează automat puncte de control în puncte cheie în timpul sesiunilor agenților. Dacă o soluție de securitate introduce probleme neașteptate, folosește puncte de control pentru a reveni la o stare bună cunoscută fără a pierde alte lucrări. Acest lucru completează strategia de ramificare a funcționalității cu o opțiune detaliată de anulare.
Pasul 3: Începeți cu remedieri de securitate critice
Abordarea mai întâi a vulnerabilităților cu cel mai mare risc asigură că cele mai periculoase probleme sunt rezolvate prompt.
Începeți cu vulnerabilitățile cu cea mai mare prioritate.
Exemplu de solicitare: "Refactorizați SearchProducts metoda pentru a utiliza interogări parametrizate în loc de concatenarea șirurilor. Asigurați-vă că toți vectorii de injecție SQL sunt eliminați."
Agentul analizează codul, înlocuiește concatenarea șirurilor vulnerabile cu interogări parametrizate și adaugă validare a intrărilor pentru a elimina vulnerabilitatea injecției SQL.
Pasul 4: Implementați criptografia securizată
Actualizarea criptografiei slabe protejează datele sensibile, cum ar fi parolele, de a fi compromise, chiar dacă stocarea este încălcată.
Continuați cu îmbunătățirile criptografice.
Exemplu de solicitare: "Înlocuiți metoda de hashing a parolei MD5 cu HashPassword implementarea bcrypt, inclusiv generarea corectă de sare."
Agentul actualizează algoritmi slabi de hashing pentru alternative sigure precum bcrypt, adaugă validare a parolelor și creează o metodă de verificare.
Pasul 5: Igienizați înregistrarea și gestionarea erorilor
Eliminarea informațiilor sensibile din jurnale previne expunerea datelor, menținând în același timp capacitățile de diagnosticare necesare pentru depanare.
Abordați problemele de divulgare a informațiilor.
Exemplu de solicitare: "Eliminați informațiile sensibile din instrucțiunile de înregistrare în jurnal din modulul de autentificare, menținând în același timp valoarea de diagnosticare".
Agentul elimină datele sensibile din jurnale și înlocuiește mesajele detaliate de eroare cu alternative prietenoase, păstrând în același timp informațiile de diagnostic în jurnale securizate.
Pasul 6: Adăugați validarea căii
Validarea căilor de fișiere împiedică atacatorii să acceseze fișiere în afara domeniului de aplicare al directorului dorit.
Implementați securitatea căii fișierelor.
Exemplu de solicitare: "Adăugați validarea cuprinzătoare a căii la SaveFile metodă pentru a preveni atacurile de traversare a directorului".
Agentul implementează validarea traseului folosind Path.GetFileName(), verifică căile care rămân în directoarele intenționate și adaugă verificări pentru caractere invalide.
Pasul 7: Validați modificările
Testarea după fiecare remediere majoră asigură că vulnerabilitatea este rezolvată și că nu au fost introduse probleme noi.
După fiecare remediere majoră de securitate, validați modificările.
Exemplu de solicitare: "Rulați toate testele unitare și creați teste specifice securității pentru a verifica dacă vulnerabilitatea de injecție SQL este complet remediată."
Agentul rulează teste existente și creează alte teste de securitate care încearcă atacuri de injecție SQL pentru a verifica dacă vulnerabilitatea a fost rezolvată.
Pasul 8: Revizuiți și iterați
Abordarea eșecurilor de testare și rafinarea implementărilor asigură îndeplinirea tuturor cerințelor înainte de a considera remedierea finalizată.
Dacă se găsesc probleme, furnizați instrucțiuni specifice pentru rafinări.
Exemplu de solicitare: "Testul de validare a lungimii parolei eșuează. Actualizați validarea pentru a permite parole între 8 și 128 de caractere."
Agentul analizează testele care eșuează și face corecțiile necesare pentru a se asigura că toate cerințele sunt îndeplinite.
Această abordare structurată asigură remedierea în siguranță și sistematic, cu validare la fiecare pas.
Considerente de securitate și calitate
Când folosești Agentul pentru remedierea securității, ia întotdeauna în considerare implicațiile legate de securitate și calitate:
Cele mai bune practici de securitate
Respectarea acestor practici de securitate vă asigură că remedierile sunt cuprinzătoare și nu introduc noi vulnerabilități.
Luați în considerare următoarele practici de securitate atunci când remediați vulnerabilitățile:
- Validați temeinic: asigurați-vă că toate validările de intrare sunt cuprinzătoare și gestionează cazurile limită.
- Păstrați autorizarea: Verificați dacă remedierile de securitate nu ocolesc verificările de autentificare sau de autorizare.
- Mențineți apărarea în profunzime: asigurați-vă că mai multe straturi de securitate rămân intacte.
- Examinați dependențele: Verificați dacă remedierile de securitate nu introduc dependențe vulnerabile.
- Testați extensiv: Includeți atât cazuri de testare de securitate pozitive, cât și negative.
Standarde de calitate a codului
Menținerea calității codului împreună cu îmbunătățirile de securitate asigură că baza de cod rămâne întreținută și profesională.
Mențineți o calitate ridicată a codului urmând aceste instrucțiuni:
- Respectați convențiile: asigurați-vă că codul fix respectă convențiile de codare C# de la Microsoft.
- Mențineți lizibilitatea: Verificați dacă remedierile de securitate nu compromit claritatea codului.
- Modificări ale documentului: Adăugați comentarii care explică codul critic de securitate.
- Actualizați documentația: Asigurați-vă că README, politicile de securitate și documentele API reflectă modificările.
- Luați în considerare performanța: Validați că îmbunătățirile de securitate nu degradează semnificativ performanța.
Instrucțiuni de siguranță pentru modul agent
Agentul este puternic, dar necesită o supraveghere atentă.
Înainte de remediere
Luarea acestor măsuri de precauție înainte de a începe remedierea minimizează riscul de a pierde munca sau de a introduce modificări de rupere.
- Lucrați întotdeauna într-o ramură de caracteristici.
- Asigurați-vă că există o acoperire cuprinzătoare a testelor.
- Revizuiește planul de remediere din analiza agentului Ask.
- Setează nivelul de permisiune pe Aprobare implicită ca să revizuiești fiecare apel de unealtă.
- Înțelegeți vulnerabilitatea de securitate și efectele sale potențiale.
- Faceți o copie de rezervă a oricăror date sau configurații critice.
În timpul remedierii
Respectarea acestor practici în timpul remedierii vă ajută să detectați și să abordați problemele pe măsură ce apar, mai degrabă decât să le descoperiți mai târziu.
- Faceți modificări incrementale, mai degrabă decât transformări mari.
- Validați fiecare pas înainte de a trece la următorul.
- Revizuiți codul generat pentru corectitudine și securitate.
- Testați frecvent pentru a detecta problemele din timp.
- Monitorizați efectele secundare nedorite.
- Folosește checkpoint-uri din Visual Studio Code pentru a reveni la o stare bună cunoscută, dacă este nevoie.
După remediere
Acești pași post-remediere verifică dacă remedierile sunt complete, corecte și gata de implementare.
- Rulați teste cuprinzătoare, inclusiv teste de securitate.
- Efectuați revizuirea codului cu membrii echipei.
- Validați caracteristicile de securitate folosind instrumente de securitate.
- Actualizați problema GitHub cu detalii de remediere.
- Documentați lecțiile învățate pentru referințe viitoare.
Tratați modul Agent ca pe un asistent puternic
Deși Agentul poate efectua sarcini complexe de remediere, necesită supraveghere umană:
- Examinați toate modificările înainte de a le accepta.
- Validați dacă vulnerabilitățile de securitate sunt complet abordate.
- Asigurați-vă că nu sunt introduse noi vulnerabilități.
- Testați temeinic pentru a detecta problemele subtile.
- Verificați conformitatea cu politicile de securitate.
Agentul accelerează remedierea securității, dar nu înlocuiește necesitatea unei revizuiri și testări atente.
Integrare cu fluxul de lucru Git
Integrează modificările Agent în fluxul tău de lucru Git fără probleme, folosind uneltele integrate ale Visual Studio Code.
Comiterea modificărilor utilizând vizualizarea Control sursă
Vizualizarea integrată a controlului sursei din Visual Studio Code simplifică procesul de comitere și trimitere a remedierilor de securitate în depozitul dvs.
Vizualizarea Control sursă din Visual Studio Code oferă o modalitate integrată de a revizui și de a confirma remedierile de securitate:
Deschideți vizualizarea Control sursă selectând pictograma Control sursă din bara de activitate sau apăsând Ctrl+Shift+G.
Examinați modificările listate în "Modificări" pentru a verifica dacă sunt incluse toate remedierile de securitate.
Pregătiți fișierele trecând cu mouse-ul peste ele și selectând pictograma + sau înscenați toate modificările folosind pictograma + de lângă "Modificări".
Introduceți un mesaj descriptiv de commit în caseta de mesaj care face referire la problema GitHub:
Fix SQL injection vulnerability in SearchProducts - Replace string concatenation with parameterized queries - Add input validation for search terms - Implement security tests for injection attempts Fixes #42Notă
Pentru a vă lega comitetele la problemele GitHub, includeți numărul problemei în mesajul de confirmare utilizând sintaxa Remedieri #issue numere . Această sintaxă închide automat problema atunci când comiterea este îmbinată.
Selectați butonul Commit pentru a confirma modificările.
Selectați butonul Sincronizare modificări pentru a împinge ramura în depozitul la distanță.
Alternativ, puteți utiliza comenzile Git în terminalul integrat:
# Stage all changes
git add .
# Commit with a descriptive message referencing the GitHub issue
git commit -m "Fix SQL injection vulnerability in SearchProducts
- Replace string concatenation with parameterized queries
- Add input validation for search terms
- Implement security tests for injection attempts
Fixes #42"
# Push changes to the remote repository
git push origin your-branch-name
Rezumat
Utilizarea modului Agent al GitHub Copilot permite dezvoltatorilor să remedieze eficient problemele de securitate, menținând în același timp calitatea și funcționalitatea codului. Combinând informațiile analitice ale agentului Ask cu capacitățile de execuție ale agentului, poți aborda sistematic vulnerabilitățile din baza ta de cod. Alege tipul de agent potrivit pentru situația ta — folosește agentul local pentru remediere interactivă, pas cu pas, sau agentul cloud pentru a atribui probleme bine definite pentru rezolvare autonomă. Cheia succesului este oferirea unor instrucțiuni clare, stabilirea nivelurilor adecvate de permisiune, menținerea practicilor de siguranță, validarea temeinică a tuturor modificărilor și asigurarea unei documentări adecvate. Agentul este un asistent puternic care accelerează remedierea, dar supravegherea umană rămâne esențială pentru a asigura că remediile de securitate sunt complete, corecte și nu introduc vulnerabilități noi.