Studi ini berfokus pada kerentanan polusi prototipe, jenis kerentanan keamanan "baru", yang pertama kali ditemukan pada tahun 2018, yang belum dipelajari secara mendalam. Kerentanan mengeksploitasi desain javascript yang berorientasi pada prototipe. Dengan memodifikasi prototipe objek asli seperti objek, dari mana sebagian besar objek lain mewarisi properti dan metode, itu mungkin, tergantung pada logika aplikasi spesifik, untuk meningkat ke hampir semua kerentanan web lainnya.
Kami mengumpulkan kode JavaScript yang berisi contoh kerentanan polusi prototipe kata nyata yang mencari pada database kerentanan seperti penasihat gitub dan sumber lainnya. Untuk memastikan bahwa contoh yang dikumpulkan sebenarnya rentan kami menulis bukti sederhana dari eksploitasi konsep untuk setiap fungsi yang rentan. Kami menjalankan alat analisis statis yang dipertimbangkan terhadap aplikasi yang rentan. Di antara dataset kerentanan kami memilih beberapa studi kasus yang kami analisis secara rinci untuk menjelaskan berbagai pola kode yang mengarah pada kerentanan. Studi kasus ini dipilih untuk menunjukkan hasil yang menarik yang memungkinkan kami untuk menyoroti kekuatan dan keterbatasan masing -masing alat.
Pendekatan baru ODGEN/OBJLUPANSYS, berdasarkan grafik ketergantungan objek yang berhasil memodelkan pencarian objek berdasarkan rantai prototipe, dapat mendeteksi hampir semua kasus kerentanan. Implementasi eksperimental saat ini, bagaimanapun, dipengaruhi oleh bug ketika menemukan beberapa pola kode. Ini juga menderita masalah kinerja yang serius ketika menganalisis paket besar atau pola tertentu. Juga, sangat rentan untuk menandai positif palsu ketika dieksekusi terhadap versi yang ditambal dari fungsi rentan sebelumnya.
Aturan SEMGREP tidak mencakup semua kasus seperti penugasan langsung, karena perbedaan termasuk kasus ini tanpa memiliki tingkat positif palsu yang sangat tinggi. Mesin SEMGREP hanya menawarkan analisis dataflow intraprocedural yang terbatas, dan seperti yang diharapkan tidak selalu dapat mendeteksi kerentanan yang didistribusikan di berbagai fungsi (misalnya panggilan rekursif tidak langsung). Aturan menandai banyak hal positif palsu ketika dieksekusi terhadap versi yang ditambal dari fungsi -fungsi rentan yang sudah ada sebelumnya, karena sebagian besar teknik mitigasi bahkan tidak dipertimbangkan.
CodeQL dapat mengidentifikasi hampir semua contoh kerentanan yang dikumpulkan. Pertanyaan yang dipertimbangkan tampaknya ditulis dengan baik, masalah yang dihadapi kemungkinan besar merupakan batasan mesin sumber tertutup. Untuk apa yang menyangkut post peringkat palsu, sebagian besar teknik mitigasi dipertimbangkan, sehingga kueri CodeQL berkinerja lebih baik secara signifikan daripada alat lainnya.
Rincian lebih lanjut dalam tesis pdf