Banyak pengembang web mengira bahwa sistem validasi file mereka sudah aman hanya karena file berbahaya akan dihapus jika tidak lolos pengecekan. Padahal, jika urutan logika kodenya keliru, penyerang tetap bisa mengeksploitasi server memanfaatkan celah bernama Race Condition.
Race Condition terjadi ketika sistem melakukan dua atau lebih operasi secara bersamaan, dan keamanan sistem tersebut bergantung pada operasi mana yang selesai lebih dulu. Pada fitur upload, celah ini muncul akibat adanya jeda waktu singkat (window of time) antara saat file disimpan ke server hingga file tersebut dihapus karena gagal validasi.
Mengapa Celah Ini Bisa Terjadi? (Root Cause)
Masalah utama dari kerentanan ini terletak pada alur logika kode (source code) backend yang terbalik. Perhatikan contoh alur yang keliru berikut:
Secara teori, file berbahaya memang akan terhapus. Namun secara teknis, ada sepersekian detik di mana file berbahaya tersebut sempat eksis di folder publik sebelum fungsi unlink() dieksekusi. Jeda waktu inilah yang dimanfaatkan oleh peretas.
Skenario Eksploitasi
Untuk membuktikannya dalam pengujian penetrasi (pentesting), skenario ini biasanya diuji menggunakan alat bantu seperti Burp Suite untuk mengirimkan banyak permintaan secara bersamaan (parallel requests).
Selain menggunakan teknik manipulasi waktu ini, penguji keamanan juga sering kali menggabungkan temuan celah database dengan mempelajari cara upload shell via sqlmap
untuk mendapatkan akses perintah OS shell secara otomatis dari terminal.
Cara Pencegahan (Remediation)
Untuk memperbaiki celah keamanan ini, pengembang wajib mengubah urutan logika pada kode pemrograman mereka:
Celah Race Condition membuktikan bahwa validasi yang ketat saja gak cukup jika tidak dibarengi dengan urutan logika eksekusi yang benar. Bagi pengembang web, pastikan aset yang masuk selalu diperiksa sebelum disimpan ke direktori publik. Sementara bagi pentester, pemahaman mendalam tentang timing dan struktur alur aplikasi menjadi kunci utama untuk menemukan kerentanan kritis ini secara efektif.
Leave a Comment