Bahaya! Password dan Token API Bisa Dicuri dengan Sangat Mudah di Github
Tidak perlu kemampuan khusus, tidak pelu tools yang canggih, hanya bermodal kata kunci, kita sudah bisa mencuri password dan token API di Github. Teknik ini mirip seperti Google Dork.
Peringatan: Tulisan ini bukan untuk mengajarkan anda menjadi pencuri dan melakukan perusakan, melainkan untuk berbagi pengetahuan. Agar developer semakin teliti dan berhati-hati dalam melakukan commit.
Password dan Token API dalam Kode
Bayangkan kita lagi mengerjakan proyek web dengan PHP. Nanti kalau sudah jadi, kodenya akan kita sebar di Github dengan repositori publik.
Lalu, ditengah-tengah penulisan kode ini, kita melakukan testing dengan konfigurasi production dari server yang sudah kita sewa. Kira-kira konfigurasinya akan seperti berikut ini.
<?php
// file: config.php
$dbhost = "mysql.petanikode.com";
$dbuser = "petanikode";
$dbpass = "kopi";
$dbname = "petanikode_web";
$api_token = "09vasd9a7sdny7asdwqmnbe";
Kemudian kita melakukan commit.
git add .
git commit -m "blablablabla"
Beberapa saat kemudian, kode sudah hampir jadi dan siap untuk dipublikasikan ke Github. Lalu kita menghapus password pada konfigurasi yang tadi, agar tidak diketahui orang.
<?php
// file: config.php
$dbhost = "YOUR DB HOST";
$dbuser = "YOUR DB USERNAME";
$dbpass = "YOUR DB PASS";
$dbname = "YOUR DB NAME";
$api_token = "YOUR API KEY";
Setelah itu melakukan commit lagi.
git add .
git commit -m "remove password"
Kemudian melakukan push.
git push origin master
Nah! Di sinilah letak kesalahan fatalnya.
Tunggu sebantar, maksudnya apa? Saya kan sudah menghapus password dan token API dalam kode. Kesalahan fatal bagaimana maksudnya?
Berburu Password dan Token API di Github
Berdasarkan kronologi cerita di atas, si Developer secara tidak sadar sudah menyebar password dan token API-nya di Github. Perhatikan saja pada commit “remove password”. Pada saat itu dilakukan, Git akan menyimpan perubahan yang ia lakukan.
Lalu seseorang mencari di Github dengan kata kunci “remove password”, dan boom! Lihatlah apa yang ditemukan.
Coba lihat salah satu.
Lihat, sekarang sudah tahu kan kesalahan fatalnya. Oke, mari kita coba tes.
Whihihi 😄 bisa.
Kata Kunci yang Lain
- add password
- add .env
- remove .env
- delete .env
- rm .env
- remove secrets
- hapus password
- DriverManager.getConnection(
- password extension:yaml extension:yml extension:json
- remove password extension:php
- I don’t know
- remove credentials
- Root password
- Hide password
- remove api key
- dll.
Solusi
Sebenarnya isu ini sedang ramai diperbincangkan di Hacker News. Orang-orang HN mengomentari commit yang dilakukan seperti di atas.
Solusi yang mereka tawarkan diantaranya:
- Masukan file konfigurasi ke dalam
.gitignore
- Gunakan git-crypt untuk mengenkripsi data sensitif.
- Ubah Password
- Gunakan Blackbox
- Ikuti saran dari Github
Penutup
Sekarang kita sudah tahu, bagaimana cara pencurian password dan token API di Github. Setidaknya kita bisa berhati-hati agar tidak melakukan kesalahan seperti di atas. Bayangkan kalau password server production yang kita sebar itu milik perusahaan atau pemerintah, apa yang akan terjadi?
Referensi: HN