Selamat datang di tutorial pemindaian kode Java! Tutorial ini akan membawa Anda melalui cara mengatur Github Advanced Security: Code scanning serta menafsirkan hasil yang mungkin ditemukannya. Repositori berikut berisi kerentanan injeksi SQL untuk tujuan demonstrasi.
Pemindaian kode adalah fitur yang Anda gunakan untuk menganalisis kode dalam repositori GitHub untuk menemukan kerentanan keamanan dan kesalahan pengkodean. Masalah apa pun yang diidentifikasi oleh analisis ditunjukkan dalam GitHub.
Anda dapat menggunakan pemindaian kode dengan CodeQL, mesin analisis kode semantik. CodeQL memperlakukan kode sebagai data, memungkinkan Anda untuk menemukan kerentanan potensial dalam kode Anda dengan kepercayaan yang lebih besar daripada analisis statis tradisional.
Tutorial ini dengan menggunakan Analisis CodeQL dengan pemindaian kode untuk mencari kerentanan dalam kode Anda.
Mulailah dengan membuat repositori baru dari garpu (publik) atau mengkloning repositori.

Di mana membuat repositori bercabang, pastikan
Klik pada tab Security .

Klik Set up code scanning .

Klik Tombol Setup this workflow dengan Analisis CodeQL.

Ini akan membuat file alur kerja Tindakan GitHub dengan CodeQL yang sudah diatur. Karena Java adalah bahasa yang dikompilasi, Anda perlu mengatur build di langkah -langkah selanjutnya. Lihat dokumentasi jika Anda ingin mengonfigurasi analisis CodeQL dengan sistem CI pihak ke -3 alih -alih menggunakan tindakan GitHub.
File Alur Kerja Tindakan berisi sejumlah bagian yang berbeda termasuk:

Klik Start Commit -> Commit this file untuk melakukan perubahan ke Cabang Utama .
Ada sejumlah peristiwa yang dapat memicu alur kerja tindakan GitHub. Dalam contoh ini, alur kerja akan dipicu

Menyiapkan alur kerja CodeQL yang baru dan memberikannya ke cabang utama di langkah di atas akan memicu pemindaian.
Klik Tab Actions -> CodeQL
Klik menjalankan alur kerja tertentu. Anda dapat melihat kemajuan alur kerja yang dijalankan sampai analisis selesai.

Setelah alur kerja selesai, klik Tab Security -> Code Scanning Alerts . Peringatan keamanan "kueri yang dibangun dari sumber yang dikendalikan pengguna" harus terlihat.
Mengklik peringatan keamanan akan memberikan perincian tentang peringatan keamanan termasuk:

Klik Show more untuk melihat desciption penuh peringatan termasuk contoh dan tautan ke informasi tambahan.


Analisis CodeQL dapat melacak jalur Dataflow dari sumber ke tenggelam dan memberi Anda kemampuan untuk melihat jalur traversal dalam peringatan.
Klik show paths Untuk melihat jalur Dataflow yang menghasilkan peringatan ini.


Untuk memperbaiki peringatan khusus ini, kita perlu memastikan parameter yang digunakan dalam kueri SQL divalidasi dan disanitasi.
Klik pada tab Code dan edit file IndexController.java di folder Controllers , ganti konten dengan file fixme .

Klik Create a new branch for this commit and start a pull request , beri nama fix-sql-injection cabang, dan buat permintaan tarik.
Dalam permintaan tarik, Anda akan melihat bahwa analisis CodeQL telah dimulai sebagai pemeriksaan status. Tunggu sampai selesai.

Setelah alur kerja selesai klik pada Details oleh Code Scanning Results / CodeQL .

Perhatikan bahwa pemindaian kode telah mendeteksi bahwa permintaan tarik ini akan memperbaiki kerentanan injeksi SQL yang terdeteksi sebelumnya.

Gabungkan permintaan tarik. Setelah permintaan tarik digabungkan, alur kerja lain akan dimulai untuk memindai repositori untuk kerentanan.
Setelah alur kerja terakhir selesai, navigasikan kembali ke tab Security dan klik Closed . Perhatikan bahwa kueri yang dibangun dari Sumber Sumber yang dikendalikan pengguna sekarang muncul sebagai masalah tertutup.

Klik pada peringatan keamanan dan perhatikan bahwa itu merinci ketika perbaikan dilakukan, oleh siapa, dan komit khusus. Ini memberikan keterlacakan penuh untuk detail kapan dan bagaimana peringatan keamanan diperbaiki dan apa yang diubah untuk memulihkan masalah.

Sekarang kami memiliki analisis CodeQL pengaturan dan telah memperbaiki peringatan keamanan, kami dapat mencoba memperkenalkan peringatan ke dalam permintaan tarik.
Buat permintaan tarik baru dengan cabang dasar sebagai cabang main Anda dan cabang perbandingan sebagai cabang new-feature .

Pastikan cabang dasar diatur ke cabang main repositori Anda sendiri versus cabang main repositori asli.
Setelah permintaan tarik telah dibuat, Anda akan melihat bahwa analisis CodeQL telah dimulai sebagai pemeriksaan status. Tunggu sampai selesai.
Setelah alur kerja selesai, Code Scanning Results / CodeQL akan gagal. Perhatikan bahwa pemindaian kode telah mendeteksi bahwa permintaan tarik ini memperkenalkan peringatan keamanan baru.

Langsung dalam permintaan tarik, Anda akan melihat bahwa bot pemindaian kode github telah meninggalkan peninjauan permintaan tarik dengan detail peringatan keamanan. Ini akan membantu pengembang untuk dengan cepat mengidentifikasi masalah keamanan yang diperkenalkan dalam permintaan tarik mereka.

Ini juga memungkinkan kolaborasi antara pengembang dan tim keamanan untuk membahas peringatan keamanan dan cara memulihkannya.

Klik Show more details dengan Code Scanning Alert baru untuk melompat ke tab Security dan melihat detail peringatan keamanan.

Perhatikan bahwa peringatan keamanan ditemukan In pull request dan tidak di cabang main (produksi).
Siap berbicara tentang fitur keamanan canggih untuk Github Enterprise? Hubungi penjualan untuk informasi lebih lanjut!
Lihat halaman Fitur Keamanan GitHub untuk lebih banyak fitur keamanan yang tertanam ke dalam GitHub.
Lihat dokumentasi pemindaian kode untuk opsi konfigurasi tambahan dan detail teknis.