Menganalisis masalah menggunakan mode Tanya pada GitHub Copilot

Selesai

Mengidentifikasi dan memahami masalah keamanan adalah langkah pertama untuk menyelesaikannya. Agen Ask GitHub Copilot menyediakan cara interaktif untuk menganalisis kode, mengidentifikasi kerentanan, dan merencanakan strategi remediasi.

Apa itu agen Ask?

Agen Ask adalah salah satu dari tiga agen bawaan di GitHub Copilot Chat, yang diintegrasikan ke dalam Visual Studio Code. Anda mengajukan pertanyaan tentang kode Anda, dan GitHub Copilot merespons menggunakan konteks yang Anda berikan. Agen Ask berfungsi seperti kolega yang berpengetahuan luas yang dapat membaca kode Anda dan memberikan panduan. Untuk mengaktifkan agen Tanya di tampilan Obrolan, pilih Tanyakan dari menu dropdown Atur Agen .

Agen Ask sangat ideal untuk:

  • Memahami apa yang dilakukan kode tertentu.
  • Mengidentifikasi potensi kerentanan keamanan.
  • Menjelajahi pendekatan implementasi alternatif.
  • Mendapatkan penjelasan tentang konsep keamanan.
  • Merencanakan strategi remediasi sebelum membuat perubahan.

Agen Ask tidak memodifikasi file kode Anda. Ini memberikan analisis, penjelasan, dan saran yang dapat Anda gunakan untuk membuat keputusan berdasarkan informasi tentang cara melanjutkan.

Menganalisis masalah keamanan menggunakan agen Tanya

Anda dapat menggunakan agen Ask untuk secara sistematis mengidentifikasi dan memahami kerentanan keamanan dalam basis kode Anda. GitHub Copilot membantu Anda memahami sifat masalah keamanan, efek potensialnya, dan pendekatan remediasi yang sesuai.

Strategi untuk menganalisis masalah keamanan

Berikut adalah strategi efektif untuk menggunakan agen Minta untuk menganalisis masalah keamanan:

  • Pahami kode: Minta GitHub Copilot untuk menjelaskan apa yang dilakukan kode yang rentan dan bagaimana kode tersebut memproses data.

  • Mengidentifikasi kerentanan: Meminta analisis potensi masalah keamanan di bagian kode tertentu.

  • Menilai dampak: Jelajahi potensi konsekuensi kerentanan jika dieksploitasi.

  • Temukan kasus edge: Identifikasi skenario di mana kode mungkin berperilaku tidak terduga atau tidak aman.

  • Mengevaluasi solusi: Minta beberapa pendekatan untuk mengatasi masalah dan memahami kompromi dari masing-masing solusi.

  • Verifikasi pemahaman: Konfirmasikan interpretasi Anda tentang masalah keamanan sebelum menerapkan perbaikan.

  • Rencanakan secara sistematis: Kembangkan rencana remediasi langkah demi langkah yang membahas semua aspek kerentanan.

Tanyakan permintaan agen untuk analisis keamanan

Perintah yang efektif bersifat spesifik, memberikan konteks, dan fokus pada wawasan yang dapat ditindaklaksikan.

Pemahaman dan analisis

Perintah ini membantu Anda memahami apa yang dilakukan kode dan mengidentifikasi implikasi keamanannya.

  • "Jelaskan apa yang dilakukan fungsi autentikasi yang dipilih dan identifikasi masalah keamanan apa pun."
  • "Analisis kode yang dipilih untuk kerentanan injeksi SQL dan jelaskan bagaimana mereka dapat dieksploitasi."
  • "Tinjau implementasi penyimpanan kata sandi yang dipilih dan jelaskan mengapa tidak aman."
  • "Risiko keamanan apa yang ada dalam kode penanganan file yang dipilih?"

Penilaian kerentanan

Gunakan perintah ini untuk menganalisis secara mendalam potensi eksploitasi dan menilai tingkat keparahan masalah keamanan.

  • "Identifikasi semua cara penyerang dapat mengeksploitasi validasi input yang dipilih."
  • "Informasi sensitif apa yang mungkin diekspos melalui penanganan kesalahan yang dipilih?"
  • "Analisis implementasi enkripsi yang dipilih untuk kelemahan."
  • "Apakah kode yang dipilih mengikuti pedoman keamanan OWASP Top 10? Jelaskan pelanggaran apa pun."

Eksplorasi solusi

Instruksi ini membantu Anda mengevaluasi berbagai pendekatan untuk memperbaiki masalah keamanan dan memahami kompromi yang terkait.

  • "Apa saja pendekatan yang direkomendasikan untuk memperbaiki injeksi SQL dalam kueri yang dipilih?"
  • "Tampilkan saya alternatif aman untuk implementasi hashing kata sandi yang dipilih."
  • "Bagaimana cara menerapkan validasi jalur untuk mencegah traversal direktori?"
  • "Apa cara paling aman untuk mencatat kesalahan tanpa mengekspos informasi sensitif?"

Analisis konsekuensi

Gunakan perintah ini untuk memahami potensi konsekuensi dari kerentanan keamanan jika dieksploitasi.

  • "Apa dampak potensial jika kerentanan injeksi SQL yang dipilih dieksploitasi?"
  • "Jelaskan konsekuensi dari menyimpan kata sandi dalam teks biasa."
  • "Jenis data apa yang berpotensi dikompromikan melalui kerentanan traversal jalur yang dipilih?"
  • "Seberapa serius masalah pengelogan yang dipilih dibandingkan dengan kerentanan lain di basis kode?"

Verifikasi praktik terbaik

Perintah ini membantu Anda memastikan kode Anda mengikuti standar industri dan pedoman keamanan.

  • "Apakah kode yang dipilih mengikuti pedoman keamanan Microsoft untuk .NET?"
  • "Apakah implementasi enkripsi yang dipilih menggunakan praktik terbaik saat ini?"
  • "Peningkatan keamanan apa yang akan Anda rekomendasikan untuk alur autentikasi yang dipilih?"
  • "Bagaimana kode yang dipilih dibandingkan dengan standar industri untuk penyimpanan kata sandi yang aman?"

Menetapkan konteks obrolan yang efektif

Kualitas analisis GitHub Copilot tergantung pada konteks yang Anda berikan. Ikuti praktik ini untuk memastikan Copilot memiliki informasi yang memadai:

Menambahkan file dan kode yang relevan

Menyediakan konteks komprehensif membantu GitHub Copilot memberikan analisis keamanan yang lebih akurat dan relevan.

  • Ketik # input obrolan untuk mereferensikan file tertentu (misalnya, #file:SearchProducts.cs), folder, simbol, atau seluruh basis kode Anda (#codebase).
  • Pilih bagian kode tertentu sebelum mengajukan pertanyaan untuk memfokuskan analisis.
  • Sertakan file terkait yang menyediakan konteks (seperti file konfigurasi, kelas pembantu, atau model data).
  • Rujuk output terminal (#terminalSelection) dengan menyertakan error kompiler atau kegagalan pengujian sebagai konteks.
  • Lampirkan cuplikan layar kesalahan atau hasil pemindaian keamanan — agen Ask mendukung visi, sehingga Anda dapat menempelkan gambar langsung ke dalam obrolan.

Berikan deskripsi masalah yang jelas

Konteks yang jelas membantu GitHub Copilot memahami situasi spesifik Anda dan memberikan panduan keamanan yang lebih ditargetkan.

  • Jelaskan apa yang anda coba capai.
  • Sebutkan batasan atau persyaratan apa pun (pertimbangan performa, kebutuhan kepatuhan).
  • Tentukan masalah keamanan Anda secara eksplisit.
  • Perhatikan standar atau panduan pengkodan yang relevan yang diikuti tim Anda.

Tanyakan alur kerja agen untuk analisis keamanan

Ikuti alur kerja sistematis ini untuk menganalisis masalah keamanan menggunakan agen Tanya:

Langkah 1: Buka dan pilih kode bermasalah

Langkah pertama dalam menganalisis masalah keamanan adalah menyediakan GitHub Copilot dengan kode tertentu yang ingin Anda analisis.

Navigasi ke file yang berisi masalah keamanan dan pilih bagian kode yang relevan. Memilih file atau bagian kode mengarahkan analisis GitHub Copilot pada area analisis khusus.

Langkah 2: Minta penjelasan

Mulai analisis Anda dengan memahami apa yang dilakukan kode dan mengonfirmasi bahwa ada kerentanan.

Mulailah dengan pertanyaan pemahaman yang luas untuk mengonfirmasi kerentanan dan memahami bagaimana hal itu dapat dieksploitasi.

Contoh prompt: "Jelaskan apa yang dilakukan fungsi pencarian ini dan identifikasi masalah keamanan apa pun."

GitHub Copilot menjelaskan cara kerja kode, mengidentifikasi jenis kerentanan, dan menjelaskan metode eksploitasi potensial.

Langkah 3: Ajukan pertanyaan yang ditargetkan tentang kerentanan

Setelah Anda memahami kerentanan dasar, gali lebih dalam untuk memahami semua kemungkinan vektor serangan.

Telusuri lebih dalam aspek tertentu dari masalah keamanan.

Contoh prompt: "Apa saja cara yang berbeda yang dapat dieksploitasi penyerang terhadap kerentanan injeksi SQL ini?"

Pertanyaan yang ditargetkan membantu Anda memahami cakupan penuh risiko, termasuk bypass autentikasi, ekstraksi data, modifikasi data, dan penolakan kemungkinan layanan.

Langkah 4: Jelajahi opsi remediasi

Memahami beberapa pendekatan solusi membantu Anda memilih perbaikan yang paling tepat untuk konteks spesifik Anda.

Mintalah strategi solusi dengan pro dan kontra.

Contoh prompt: "Apa saja pendekatan yang direkomendasikan untuk memperbaiki kerentanan injeksi SQL ini? Sertakan pro dan kontra dari setiap pendekatan."

GitHub Copilot dapat menyarankan beberapa solusi seperti kueri berparameter, kerangka kerja pemetaan Object-Relational (ORM), atau prosedur tersimpan, membantu Anda memilih perbaikan yang paling tepat untuk situasi Anda.

Langkah 5: Memverifikasi kasus tepi dan persyaratan yang dibutuhkan

Sebelum menerapkan perbaikan, pastikan Anda memahami semua skenario dan kasus khusus yang perlu ditangani.

Pastikan perbaikan berfungsi dalam semua skenario dengan bertanya tentang pertimbangan khusus.

Contoh prompt: "Apakah ada kasus tepi atau pertimbangan khusus yang harus saya tangani saat menerapkan kueri berparameter untuk fungsi pencarian ini?"

GitHub Copilot dapat mengidentifikasi persyaratan validasi input, pertimbangan performa, dan masalah logika bisnis yang perlu Anda atasi.

Langkah 6: Merencanakan implementasi

Langkah terakhir sebelum pengkodan adalah membuat rencana komprehensif yang memandu proses implementasi.

Minta rencana implementasi komprehensif yang mencakup persyaratan pengujian.

Contoh prompt: "Berdasarkan diskusi kami, buat rencana langkah demi langkah untuk memperbaiki kerentanan injeksi SQL ini termasuk persyaratan pengujian."

GitHub Copilot dapat menyediakan rencana terstruktur yang mencakup persiapan, implementasi, pengujian (unit, keamanan, dan regresi), penyebaran, dan fase dokumentasi.

Tip

Setelah menyelesaikan analisis Ask agent Anda, pertimbangkan untuk menggunakan Plan agent guna memformalkan rencana implementasi. Agen Rencana membuat rencana implementasi langkah demi langkah terstruktur dari temuan analisis Anda dan dapat menyerahkan langsung ke Agen untuk implementasi. Pilih Plan dari pemilih agen di tampilan Chat.

Pendekatan analisis berulang

Analisis keamanan sering memerlukan beberapa putaran pertanyaan. Langkah-langkah berikut direkomendasikan untuk pendekatan berulang:

  • Ajukan pertanyaan tindak lanjut untuk klarifikasi.
  • Contoh kode permintaan untuk solusi yang disarankan.
  • Jelajahi pendekatan alternatif.
  • Pastikan pemahaman komprehensif tentang masalah dan proses penyelesaian.

Pertimbangkan serangkaian perintah berikut dalam pendekatan analisis berulang. Skenario ini mengasumsikan Anda membuka file yang berisi fungsi pencarian yang rentan terhadap injeksi SQL dan memilih kode:

  1. Tetapkan pemahaman umum tentang kode dan masalah: "Jelaskan apa yang dilakukan fungsi pencarian yang dipilih dan identifikasi masalah keamanan apa pun."

  2. Telusuri paling detail risiko tertentu: "Apa saja cara yang berbeda bagi penyerang untuk mengeksploitasi kerentanan injeksi SQL ini?"

  3. Jelajahi opsi solusi: "Apa saja pendekatan yang direkomendasikan untuk memperbaiki kerentanan injeksi SQL ini? Sertakan pro dan kontra dari setiap pendekatan."

  4. Tingkatkan pemahaman Anda tentang pendekatan yang direkomendasikan: "Mengapa kueri berparameter lebih baik daripada menghindari masukan dengan fungsi penyaringan?"

  5. Pastikan pemahaman lengkap dan komprehensif: "Apakah ada kasus tepi atau pertimbangan khusus yang harus saya tangani saat menerapkan kueri berparameter untuk fungsi pencarian ini?"

  6. Rencanakan implementasi: "Berdasarkan diskusi kami, buat rencana langkah demi langkah untuk memperbaiki kerentanan injeksi SQL ini termasuk persyaratan pengujian."

Pendekatan berulang ini membangun pemahaman komprehensif dan memastikan Anda memiliki strategi remediasi lengkap sebelum memodifikasi kode.

Mengelola tanggapan GitHub Copilot

Meskipun GitHub Copilot memiliki pengetahuan, perlakukan responsnya sebagai panduan berdasarkan informasi daripada kebenaran absolut.

Memverifikasi keputusan keamanan penting

Selalu validasi rekomendasi keamanan terhadap sumber otoritatif dan persyaratan spesifik Anda.

  • Referensi silang saran GitHub Copilot dengan dokumentasi resmi.
  • Lihat panduan OWASP untuk praktik terbaik keamanan.
  • Tinjau rekomendasi keamanan Microsoft untuk .NET.
  • Pertimbangkan persyaratan kepatuhan spesifik Anda.

Mengenali batasan GitHub Copilot

Memahami apa yang dapat dan tidak dapat dilakukan oleh GitHub Copilot dapat membantu Anda menggunakannya secara efektif sambil mempertahankan pengawasan yang sesuai.

GitHub Copilot adalah alat yang kuat, tetapi memiliki batasan yang perlu Anda waspadai.

Pertimbangkan batasan berikut:

  • GitHub Copilot menganalisis kode statis tetapi tidak memiliki konteks runtime.
  • GitHub Copilot mungkin tidak tahu tentang infrastruktur atau arsitektur spesifik Anda.
  • GitHub Copilot tidak dapat mengakses kebijakan keamanan kepemilikan.
  • GitHub Copilot mungkin melewatkan kerentanan halus yang memerlukan keahlian domain.

Memberikan konteks klarifikasi

Kualitas respons GitHub Copilot meningkat secara signifikan ketika Anda memberikan lebih banyak konteks dan detail.

Akurasi GitHub Copilot meningkat dengan konteks yang lebih baik. Jika respons tampak di luar target:

  • Tambahkan konteks lainnya tentang lingkungan Anda.
  • Sertakan file kode terkait dalam obrolan.
  • Tentukan batasan atau persyaratan secara eksplisit.
  • Susun ulang pertanyaan Anda dengan detail lebih lanjut.

Manfaat utama dari agen Ask untuk analisis keamanan

Menggunakan agen Ask untuk analisis keamanan memberikan beberapa keuntungan:

  • Penilaian cepat: Dapatkan analisis langsung tanpa meneliti dokumentasi.
  • Perspektif komprehensif: GitHub Copilot mempertimbangkan pola dari jutaan basis kode.
  • Pendidikan: Pelajari prinsip keamanan melalui penjelasan.
  • Bantuan perencanaan: Mengembangkan strategi implementasi sebelum menulis kode.
  • Eksplorasi bebas risiko: Selidiki beberapa pendekatan tanpa memodifikasi kode.

Ringkasan

Agen Ask adalah alat yang ampuh untuk menganalisis masalah keamanan secara sistematis. Ajukan pertanyaan yang ditargetkan dan berikan konteks yang sesuai untuk mendapatkan hasil terbaik. Ikuti alur kerja berulang untuk memahami kerentanan secara menyeluruh dan menjelajahi opsi remediasi. Gunakan agen Ask untuk mengembangkan rencana implementasi komprehensif sebelum menulis kode, lalu transisi ke agen Rencana untuk menyusun pendekatan Anda atau Agen untuk menerapkan perbaikan secara langsung. Pendekatan ini membantu Anda memperbaiki masalah keamanan dengan percaya diri sambil mempelajari prinsip keamanan yang meningkatkan kode masa depan Anda.