Fungsi formulir pendaftaran ini menggunakan field tersembunyi bernama urhidden
. Field ini menentukan user role (seperti admin atau editor) untuk akun yang dibuat. Data pada field ini dienkripsi agar terlihat aman, tetapi ada masalah.
Jika seorang penyerang berhasil mendapatkan akses ke kunci rahasia tertentu (AUTH_KEY
dan AUTH_SALT
), misalnya melalui celah keamanan atau jika situs menggunakan kunci default yang lemah, mereka dapat melakukan dekripsi dan memanipulasi data yang telah terenkripsi tersebut. Dengan begitu, penyerang dapat membuat akun dengan peran (user role) apa pun yang mereka inginkan, termasuk role level admin, sehingga mereka dapat mengambil alih kontrol situs sepenuhnya.
Solusi untuk patch/perbaikan: menambahkan mekanisme nonce untuk memperkuat enkripsi. Seperti ini implementasinya:
P.S.:
Snippet di atas didapat dari riset software plugin WordPress: WP User Frontend