Git Hound, Truffle Hog membasmi kebocoran GitHub

Ini App Dev 101: Jangan kode keras token API, kunci enkripsi, dan kredensial pengguna. Tetapi jika Anda melakukannya, pastikan untuk mengeluarkannya dari kode Anda sebelum berkomitmen ke GitHub atau repositori kode publik lainnya.

Empat tahun lalu, GitHub memperkenalkan fitur pencarian yang memudahkan untuk menemukan kata sandi, kunci enkripsi, dan informasi sensitif lainnya dalam repositori yang tersedia untuk umum. Masalahnya belum membaik; tahun lalu, peneliti menemukan 1.500 token Slack di seluruh proyek GitHub, yang bisa saja disalahgunakan oleh orang lain untuk mendapatkan akses ke obrolan, file, dan data sensitif lainnya yang dibagikan dalam tim Slack pribadi.

Truffle Hog dan Git Hound adalah dua contoh alat yang tersedia yang membantu administrator dan pengembang mencari kunci rahasia yang secara tidak sengaja bocor melalui proyek mereka di GitHub. Mereka mengambil pendekatan yang berbeda untuk menyelesaikan masalah yang sama, tetapi tujuannya sama: Membantu administrator menghentikan rahasia kriptografi agar tidak diposting ke situs publik.

Truffle Hog "akan menelusuri seluruh riwayat komit dari setiap cabang, dan memeriksa setiap perbedaan dari setiap komit, dan mengevaluasi entropi shannon untuk kumpulan karakter base64 dan kumpulan karakter heksadesimal untuk setiap gumpalan teks yang lebih besar dari 20 karakter yang terdiri dari karakter tersebut menetapkan di setiap perbedaan, "kata pengembang alat, Dylan Ayrey. Entropi Shannon, dinamai menurut matematikawan Claude E. Shannon, menentukan keacakan, dan entropi tinggi akan menyarankan string kemungkinan digunakan untuk rahasia kriptografi, seperti token akses atau kunci pribadi. Truffle Hog mencetak string dengan entropi tinggi yang dapat diselidiki oleh administrator untuk mencari tahu apa yang ada di dalam file. Ditulis dengan Python, Truffle Hog hanya membutuhkan pustaka GitPython untuk dijalankan.

Git Hound menggunakan pendekatan berbeda: Git Hound menggunakan plugin Git yang ditulis di Go untuk memindai file sesaat sebelum menggunakan GitHub. Plugin mencari kecocokan dengan ekspresi reguler yang ditentukan dalam file terpisah, .githound.yml, dan mencetak peringatan sebelum mengizinkan komit, atau gagal dan menghentikan komit dari proses. Hound dapat "mengendus perubahan sejak pengubahan terakhir dan meneruskan ke git-commit saat bersih", kata Ezekiel Gabrielse, pengembang alat tersebut. Meskipun akan "sangat sederhana" untuk menyiapkan pemeriksaan di hook pra-komit, Gabrielse mengatakan plugin memberikan lebih banyak fleksibilitas.

Menggunakan ekspresi reguler memungkinkan Git Hound menangani berbagai informasi sensitif, karena daftarnya dapat menyertakan kredensial, token akses, dan bahkan nama file dan sistem. Plugin dapat digunakan untuk mengendus perubahan sejak komit terakhir, seluruh basis kode, atau bahkan seluruh riwayat repositori. Karena .githound.yml tidak ditambahkan ke repositori GitHub, regexps tetap bersifat pribadi.

Waktu pemeriksaan itu penting, karena Hound mengendus kode sebelum melakukan ke GitHub, memasukkan pemeriksaan keamanan penting ini ke dalam alur kerja pengembang. Alat keamanan yang sesuai dengan alur kerja pengembang lebih mungkin digunakan pada waktu yang tepat.

Itu seharusnya tidak terjadi, tetapi kunci sensitif yang secara tidak sengaja diposting ke repositori kode publik karena mereka berada dalam kode keras di dalam proyek perangkat lunak terlalu sering terjadi. Peneliti keamanan menemukan hampir 10.000 kunci akses untuk Amazon Web Services dan instans Elastic Compute Cloud di dalam repositori GitHub yang dapat diakses publik, yang mendorong Amazon untuk mengadopsi praktik pemindaian GitHub secara teratur untuk kunci tersebut dan mencabutnya sebelum dapat disalahgunakan.

Meskipun bagus bahwa Amazon telah mengambil tugas ini, banyak jenis rahasia lain yang mungkin bocor. Truffle Hog dan Git Hound memungkinkan administrator dan pengembang mengetahui kesalahan sebelum terjadi kecelakaan yang merugikan.