Setelah pengujian ekstensif, GitHub membuatnya tersedia untuk umum untuk memindai kode dari kerentanan . Siapapun dapat menjalankan pemindai di repositori mereka sendiri dan menemukan kerentanan sebelum mereka pergi ke produksi. Pemindai bekerja untuk repositori di C, C ++, C #, JavaScript, TypeScript, Python, dan Go.
Pemindai ini didasarkan pada teknologi CodeQL yang dikembangkan oleh Semmle, yang diakuisisi oleh GitHub tahun lalu . CodeQL dianggap sebagai pemindai kerentanan pertama di dunia. Pengujian beta dimulai di GitHub pada Mei 2020. Fungsi tersebut sekarang tersedia untuk semua orang.
Bagaimana cara menyalakan
Pemindaian dimulai dari tab Keamanan di repositori.
Di sana kami mengklik Siapkan pemindaian kode .
Di jendela berikutnya, kita perlu memilih alur kerja yang ingin kita gunakan untuk pemindaian. Faktanya adalah bahwa CodeQL mendukung koneksi mesin pihak ketiga. Untuk mesin standar, pilih "Analisis CodeQL".
Pada prinsipnya, alur kerja ini dapat dikonfigurasi: aktifkan pemindaian terjadwal, pindai untuk setiap
push
atau tarik permintaan, gunakan file konfigurasi Anda sendiri, luncurkan kueri penelusuran tambahan selama pemindaian.
Kemudian klik tombol Mulai komit dan tulis nama untuk komit baru.
Kami memilih untuk berkomitmen ke cabang master atau membuat cabang baru dan meluncurkan permintaan penarikan.
Semuanya. Pada akhirnya, klik tombol Komit file baru atau Usulkan file baru .
Setelah menentukan komit, pemindai kerentanan akan menganalisis kode Anda sesuai dengan frekuensi yang ditentukan dalam alur kerja .
Setelah mengaktifkan CodeQL, Anda dapat melihat hasil dan mengubah parameter pemindaian .
Mesin CodeQL
Mesin CodeQL mencari potensi kerentanan menggunakan kamus yang berisi lebih dari 2000 kueri. Kamus disusun oleh GitHub dan komunitas pengguna yang telah menguji sistem. Basis data ini akan terus diperbarui, dan setiap orang dapat menambahkannya satu per satu, cukup dengan mengedit file konfigurasi.
Alat pemindaian dibangun di atas standar analisis kode statis SARIF (OASIS Static Analysis Results Interchange Format) dan mendukung mesin pihak ketiga yang terhubung yang akan bekerja dalam satu antarmuka. Ekspor hasil melalui API terpadu juga didukung.
Sejak pengiriman pada Mei 2020, lebih dari 12.000 repositori telah dipindai (total 1,4 juta lintasan) dan lebih dari 20.000 masalah keamanan telah diidentifikasi, termasuk kerentanan eksekusi kode jarak jauh (RCE), injeksi SQL, dan skrip lintas situs (XSS).
Pengembang dan pengelola memperbaiki 72% kerentanan yang ditemukan dalam waktu 30 hari sejak penemuan mereka, sebelum menggabungkan kode ke dalam cabang utama. Ini adalah hasil yang bagus, karena menurut statistik, kurang dari 30% kerentanan yang ditemukan diperbaiki dalam waktu satu bulan setelah deteksi.
Sebagai hasil dari pengujian beta, 132 komit dari komunitas dibuat ke kamus kueri sumber terbuka. Untuk memungkinkan pengguna GitHub menjalankan alat pihak ketiga, perjanjian telah disepakati dengan lebih dari selusin pengembang sistem keamanan dan alat sumber terbuka untuk analisis statis, pemindaian kontainer, dan validasi infrastruktur sebagai kode (Infrastruktur-sebagai-Kode; IaC) - ini adalah pendekatan untuk mengelola dan mendeskripsikan infrastruktur melalui konfigurasi file, dan tidak melalui pengeditan manual konfigurasi di server atau interaksi interaktif.
Selain mencari kerentanan, GitHub juga bermitra dengan 24 penyedia layanan pihak ketiga untuk menemukan rahasia mereka dalam kode yang tidak dapat dipublikasikan secara jelas, seperti kunci akses. Mitra termasuk AWS, Google Cloud, Azure, Dropbox, Slack, Discord, npm, Stripe, dan Twilio. Pemindaian rahasia terjadi secara otomatis di repositori publik dan pribadi.
Pemindaian kode gratis untuk repositori publik dan disertakan dalam paket Keamanan Lanjutan untuk GitHub Enterprise (yang merupakan layanan berbayar ). Beberapa opsi eksotis (daftar alamat IP yang diizinkan, SAML, dukungan LDAP, dll.) Hanya tersedia dalam versi berbayar.
Namun, Anda perlu menambahkan lalat dalam salep ke tong madu ini. Beberapa penulis program open source mengeluh ( 1 ,2 ) bahwa pemindaian memberikan terlalu banyak positif palsu.
Secara teori, pemeriksaan otomatis semua repositori adalah hal yang baik, tetapi dalam praktiknya tidak menyenangkan untuk terus-menerus terganggu oleh laporan "kerentanan" palsu, terutama dalam repo dev atau arsip usang yang tidak akan pernah diproduksi. Ini menjadi membosankan dengan sangat cepat. Beberapa penulis mengatakan bahwa sebagian besar kerentanan dalam kode mereka sendiri sebenarnya berisik atau tidak berlaku dalam kasus tertentu.
Artinya, perayap GitHub dapat memicu semua gejala kondisi yang dikenal sebagai kelelahan keamanan. Untuk informasi lebih lanjut tentang kondisi ini, lihat artikel ilmiah(doi: 10.1109 / MITP.2016.84). Ini menyatakan bahwa kondisi ini pada seseorang memperkuat keengganan mereka untuk mengikuti rekomendasi keselamatan dan mempengaruhi keseluruhan analisis manfaat-biaya.