Cara Mudah Menghasilkan Uang dari Bug Bounty

Gambar 2


Tentunya Anda sudah sering mendengar ungkapan "bug hunt". Saya berani berasumsi, Anda tidak akan keberatan mendapatkan satu atau dua ratus (atau bahkan ribuan) dolar dengan menemukan potensi kerentanan dalam program seseorang. Pada artikel ini, saya akan memberi tahu Anda tentang trik yang akan membantu menganalisis proyek sumber terbuka untuk menemukan kerentanan semacam itu.

Bug Bounties pada Perangkat Lunak Bebas dan Sumber Terbuka - apakah itu?


Bug Bounty adalah nama umum untuk berbagai program, di mana pengembang situs web dan perangkat lunak menawarkan hadiah uang tunai untuk menemukan bug dan kerentanan. Selain program Bug Bounty yang terkenal dari perusahaan besar seperti Apple atau Microsoft, ada juga program untuk mencari kerentanan dalam proyek sumber terbuka.

Banyak dari mereka dapat ditemukan di HackerOne, tetapi mungkin yang terbesar adalah FOSSA - Audit Perangkat Lunak Bebas dan Sumber Terbuka. Ini adalah program mencari kerentanan di berbagai proyek sumber terbuka, disponsori oleh Uni Eropa. Total dana hadiah adalah jumlah yang mengesankan - sebanyak 850.000 euro!

Bagaimana cara berpartisipasi?


Pertama, Anda harus mendaftar di HackerOne . Kami hanya perlu proyek sumber terbuka. Ada daftar lengkap di HackerOne.

Jika Anda ingin mengambil bagian dalam Bug Bounty dari Uni Eropa, daftar proyek, yang berpartisipasi dalam program ini, dapat ditemukan di sini . Untuk sebagian besar proyek, itu akan cukup untuk didaftarkan di HackerOne, tetapi banyak program yang terdaftar juga di situs web intigriti.com.

Untuk berpartisipasi, Anda harus memilih proyek yang sesuai untuk diri Anda sendiri dan kemudian dengan cermat membaca ketentuan partisipasi. Jika Anda setuju dengan mereka, lanjutkan ke bagian praktis.

Untuk menemukan kerentanan dan mendapatkan uang Anda, Anda hanya perlu mengunduh proyek (atau mengkloningnya dari GitHub) dan menganalisis dengan cermat setiap baris kode, memeriksa setiap ekspresi untuk kemungkinan kesalahan. Jika Anda menemukan sesuatu, itu dapat memengaruhi keamanan program - buat laporan dan kirim ke pengembang. Jika mereka menilai temuan Anda layak untuk dihargai - Anda memiliki uang di saku Anda :).

Tapi di mana kesederhanaannya?


Bagian yang sederhana adalah Anda tidak perlu menganalisis kode hanya secara manual. Ada alat yang memungkinkan Anda mencari kesalahan dalam kode secara otomatis. Misalnya - analisa kode statis. Saya lebih suka menggunakan alat kami - PVS-Studio . Alat analisa PVS-Studio dapat menemukan kesalahan dalam kode, ditulis dalam C ++, C # dan Java, serta memiliki antarmuka yang ramah pengguna. Selain itu, ada beberapa opsi penggunaan gratis. Lagi pula, ada berbagai analisis kode lainnya .

Tentu saja, penganalisa statis dapat mengungkapkan tidak semua kesalahan. Sudahlah! Bagaimanapun, kita memiliki tujuan untuk menemukan kesalahan dengan cepat dan mudah, dan bukan untuk menemukan semuanya.

Setelah proyek diunduh dan dibangun, hanya perlu beberapa klik untuk memulai analisis. Hasilnya akan berupa laporan dengan sejumlah (biasanya signifikan) sejumlah peringatan yang dihasilkan oleh penganalisa. Di PVS-Studio, mereka diklasifikasikan menjadi tiga tingkat kepastian. Anda harus mulai dengan peringatan tingkat pertama, sehingga tingkat oranye dan kuning dapat disingkirkan dari hasil analisis.

Gambar 1


Contoh penyaringan hasil analisis.

Jadi, Anda hanya perlu melihat peringatan lainnya dan memilih tempat-tempat yang dapat menimbulkan bahaya terbesar. Penting untuk memeriksa apakah mungkin untuk mereproduksi salah satunya secara langsung saat menjalankan program. Jika Anda berhasil melakukannya - itu tidak hanya akan meningkatkan peluang bahwa pengembang akan menerima laporan, tetapi juga tentu akan meningkatkan jumlah pembayaran. Dalam hal ini, visibilitas adalah teman terbaik Anda.

Anda juga perlu mempertimbangkan apakah bug yang Anda temukan memengaruhi keamanan program. Lagi pula, dalam hal ini, jumlah yang dibayarkan kepada Anda akan beberapa kali lebih banyak :)

Tangkapan layar menunjukkan antarmuka Visual Studio. Namun, jangan biarkan itu menyesatkan Anda. Analisator dapat digunakan tidak hanya sebagai plugin untuk Visual Studio, tetapi juga sendiri, termasuk lingkungan Linux dan macOS .

Kelebihan dari Pendekatan ini


Pertama, menggunakan penganalisa statis adalah salah satu cara termudah untuk menemukan bug. Anda tidak harus memiliki pengetahuan khusus untuk menggunakan penganalisa kode: Anda hanya perlu memahami bahasa di mana kode tersebut ditulis.

Kedua, penganalisa penuh perhatian. Mereka tidak lelah dan tidak kehilangan kewaspadaan, tidak seperti manusia. Oleh karena itu, mereka dapat digunakan untuk menganalisis basis kode besar yang Anda inginkan dengan biaya yang hampir minimal.

Ketiga, analis sering memiliki lebih banyak pengetahuan daripada manusia. Apa artinya Biarkan saya menjelaskan pikiran saya dengan contoh dari kode kernel Android:

static void FwdLockGlue_InitializeRoundKeys() { unsigned char keyEncryptionKey[KEY_SIZE]; .... memset(keyEncryptionKey, 0, KEY_SIZE); // Zero out key data. } 

Tampaknya, di mana ada kesalahan di sini?

Ternyata, sebuah kompiler, melihat bahwa array tidak digunakan di tempat lain, dapat mengoptimalkan kode dan menghapus panggilan fungsi memset darinya. Dan itu akan dilakukan hanya ketika membangun konfigurasi rilis. Semuanya akan baik-baik saja, tetapi hanya kunci enkripsi yang akan tetap ada dalam RAM untuk beberapa waktu, cara ini dapat diperoleh oleh penyusup. Pelanggaran keamanan nyata!

Selain itu, sulit ditemukan sendiri: dalam mode debugging, panggilan memset berfungsi dengan baik. Tes juga tidak akan membantu ... Satu-satunya yang tersisa adalah untuk menyadari dan mengingat tentang fitur ini sendiri.

Bagaimana jika pengembang proyek tidak tahu tentang fitur ini? Bagaimana jika Anda tidak tahu tentang fitur ini ketika Anda mencari bug? Sedangkan untuk penganalisa, ia memiliki diagnostik V597 , jadi Anda pasti akan mengetahui tentang fitur ini saat melihat laporan.

Akhirnya, poin keempat. Salah satu keuntungan paling bermanfaat menggunakan analisis statis saat mengejar Bug Bounty adalah kecepatan. Memang benar bahwa Anda dapat memeriksa dua, tiga, empat proyek dalam satu malam - tetapi itu tidak semua.

Yang utama adalah Anda bisa menjadi yang pertama. Sementara penghargaan ditawarkan untuk menemukan bug dalam proyek apa pun, proyek ini terus disempurnakan dan dikembangkan. Pengembang mengirimkan rilis baru dan fitur baru bersama dengan kode baru dan ruang baru untuk kesalahan. Saat menggunakan pendekatan yang saya jelaskan, Anda akan dapat secara tepat mempertimbangkan kesalahan baru dan potensi kerentanan di hari pertama dirilis.

Gambar 4


Kerentanan potensial


Pembaca yang penuh perhatian mungkin bingung:

Tunggu, tunggu! Di satu sisi, Anda mengatakan tentang mencari kesalahan dalam kode dalam program, di sisi lain - Anda menyebutkan kerentanan potensial. Kerentanan lebih menarik dalam hal Bug Bounty. Tolong jelaskan apa yang Anda maksud!

Faktanya adalah bahwa kesalahan dan kerentanan potensial pada dasarnya adalah hal yang sama. Tentu, hanya beberapa kesalahan / potensi kerentanan terbukti menjadi kerentanan nyata dalam penelitian lebih lanjut. Namun, kesalahan yang tidak berbahaya dan kerentanan penting mungkin terlihat persis sama dalam kode. Artikel " Bagaimana PVS-Studio Dapat Membantu dalam Mendeteksi Kerentanan? " Memberikan beberapa bug yang tampaknya umum yang sekarang dikenal sebagai kerentanan.

Omong-omong, menurut laporan oleh Institut Nasional Standar dan Teknologi (NIST), sekitar 64% kerentanan dalam aplikasi terkait dengan kesalahan perangkat lunak, bukan masalah yang terkait langsung dengan keamanan.

Jadi pegang jelatang, dapatkan PVS-Studio dan mulailah mencari kesalahan dan kelemahan keamanan! Klasifikasi menurut CWE akan sangat membantu di sini.

Kesimpulan


Mudah-mudahan, saya membantu pembaca dalam mencari bug yang akan memberinya penghargaan dan penghargaan uang. Saya yakin bahwa analisis statis akan membantu dalam hal ini! Ingat bahwa pengembang biasanya tidak punya waktu untuk menganalisis bug secara detail, jadi Anda harus membuktikan bahwa temuan Anda benar-benar dapat memengaruhi program. Cara terbaik adalah dengan mereproduksi secara visual. Dan ingat: semakin bug merusak keamanan - semakin Anda akan dibayar untuk itu.

Baiklah, itu saja. Semoga beruntung dalam mencari hadiah!

Source: https://habr.com/ru/post/id464553/


All Articles