antond.net

0 %
Anton Darmawanto
Front-end Developer
Ui/UX Designer
  • Residence:
    Indonesia
  • City:
    Jakarta Selatan
  • Age:
    40
Indonesian
English
Jawa
html
CSS
Js
PHP
WordPress
Proxmox
Laravel
Linux server (ubuntu, debian, fedora)
Alibaba Cloud
  • Proxmox, Vm Ware
  • Stylus, Sass, Less
  • Gulp, Webpack, Grunt
  • GIT knowledge
0

No products in the cart.

Return To Shop

Celah Bypass Login di Plugin WPO365 WordPress: Ketika Salah Paham Nonce Membuka Pintu Admin bagi Peretas

15/10/2026

Di era transformasi digital saat ini, integrasi antar-platform menjadi pemandangan lumrah di perkantoran modern Indonesia. Banyak perusahaan swasta, instansi pemerintah, hingga perguruan tinggi membangun portal intranet dan sistem informasi berbasis WordPress, lalu menghubungkannya dengan akun Microsoft 365 atau Microsoft Entra ID (dahulu bernama Azure Active Directory).

Dengan skema Single Sign-On atau SSO ini, karyawan dan dosen cukup memasukkan satu akun email kantor untuk membaca pengumuman internal, mengunduh slip gaji, atau mengakses materi pelatihan tanpa perlu menghafal banyak kata sandi terpisah.

Salah satu jembatan paling populer untuk mewujudkan integrasi tersebut adalah plugin WPO365 (WPO365 | LOGIN). Plugin buatan Swiss ini telah dipercaya puluhan ribu organisasi di seluruh dunia karena kemampuannya menyinkronkan data pengguna secara mulus dengan ekosistem Microsoft Cloud.

Namun pada tanggal 9 hingga 11 Oktober 2026, dunia keamanan WordPress dikejutkan oleh pengumuman resmi dari National Vulnerability Database (NVD) serta lembaga intelijen ancaman Wordfence dan Patchstack. Sebuah kerentanan berisiko tinggi dengan kode CVE-2026-104759 (skor keparahan CVSS 8.1) terungkap pada seluruh versi plugin WPO365 hingga versi 44.1.

Celah ini memungkinkan penyerang tanpa hak akses apa pun untuk membobol sistem login dan mengambil alih akun administrator website secara penuh. Yang membuat kasus ini sangat menarik untuk dipelajari bukanlah kerumitan serangannya, melainkan akar masalahnya: sebuah salah paham mendasar mengenai cara kerja fungsi keamanan bawaan WordPress yang berujung pada kelalaian logika program yang fatal.

Mari kita telaah bagaimana kesalahan penulisan kode ini terjadi, mengapa dampaknya sangat berbahaya bagi website korporat, serta langkah-langkah mitigasi darurat yang wajib dilakukan pengelola website di tanah air.

Dari Replay Token Menuju Pengambilalihan Hak Admin

Protokol OpenID Connect atau OIDC adalah standar modern yang digunakan secara luas untuk proses autentikasi identitas digital di internet. Ketika seorang staf kantor mengeklik tombol Masuk dengan Akun Microsoft di halaman login WordPress, peramban mereka akan diarahkan ke server Microsoft untuk memverifikasi email dan kata sandi. Setelah berhasil, Microsoft mengirimkan kembali sebuah tanda pengenal digital yang disebut id_token ke website WordPress Anda.

Di dalam token identitas tersebut tersimpan informasi penting, seperti alamat email pengguna, nama lengkap, masa berlaku sesi, dan sebuah nilai acak unik yang disebut nonce (number used once). Nilai acak ini berfungsi sebagai penangkal serangan pengulangan atau replay attack. Tujuannya adalah memastikan bahwa token yang dikirimkan benar-benar baru dibuat untuk sesi saat itu, bukan token basi hasil sadapan jaringan yang dikirimkan ulang oleh penyerang.

Di sinilah bencana keamanan pada plugin WPO365 bermula.

Peneliti keamanan dari Wordfence PRISM menemukan bahwa pada modul pengurai token lawas (deprecated parser), pengembang plugin mencoba memvalidasi nonce kiriman Microsoft tersebut menggunakan fungsi bawaan inti WordPress bernama wp_verify_nonce().

Masalahnya, fungsi bawaan WordPress dan standar nonce kriptografi modern berbicara dalam dua bahasa yang sama sekali berbeda.

Fungsi wp_verify_nonce() di WordPress dirancang khusus untuk memvalidasi token formulir internal berukuran 10 karakter heksadesimal yang dihitung berdasarkan salt unik dan waktu relatif sepuluh hingga dua puluh empat jam. Fungsi ini sama sekali tidak mengenali string acak panjang 64 karakter yang dihasilkan oleh modul OIDC modern.

Akibat ketidakcocokan format ini, setiap kali fungsi wp_verify_nonce() dipanggil untuk memeriksa token Microsoft, fungsi tersebut pasti selalu mengembalikan status kegagalan atau nilai salah (false).

Antarmuka formulir autentikasi login pengguna di layar monitor

Kesalahan Logika Fatal: Gagal tapi Tetap Diberi Jalan Masuk

Dalam perancangan sistem keamanan yang benar, ketika sebuah pemeriksaan integritas atau tanda tangan digital gagal diverifikasi, program komputer harus segera menghentikan proses eksekusi seketika itu juga (fail-closed). Pengguna harus ditolak masuk dan sistem menampilkan pesan kesalahan.

Namun di dalam berkas kode Id_Token_Service_Deprecated.php baris ke-110, pengembang plugin melakukan kesalahan logika yang sangat mendasar: hasil pengembalian fungsi validasi yang gagal tersebut tidak dipasangi pengondisian pembatalan program. Sistem tidak mengeksekusi perintah keluar ataupun memutus aliran data.

Akibatnya, alur program tetap melenggang santai menuju fungsi berikutnya, yaitu authenticate_oidc_user().

Bagi penyerang siber, pintu belakang ini bagaikan karpet merah. Seorang peretas yang berhasil memperoleh rekaman token lama milik salah satu staf atau petinggi kantor (misalnya dari log jaringan yang bocor atau serangan man-in-the-middle) cukup mengirimkan kembali token kedaluwarsa tersebut ke titik akhir login WPO365.

Karena pemeriksaan nonce selalu lolos dari saringan, sistem WordPress dengan patuh mengidentifikasi penyerang sebagai pemilik email yang sah. Jika akun email yang disalin tersebut memiliki hak akses administrator di WordPress, penyerang langsung menduduki kursi kemudi website secara instan, tanpa perlu mengetahui kata sandi asli akun korban.

Situasi diperparah dengan temuan kerentanan kedua pada berkas yang sama, yaitu CVE-2026-96765 (skor CVSS 7.2). Celah ini berupa Stored Cross-Site Scripting (XSS) tanpa autentikasi yang dapat menyuntikkan skrip jahat ke dalam data sementara transient wpo365_errors. Skrip tersebut akan aktif mengeksekusi perintah di peramban ketika administrator asli membuka panduan konfigurasi plugin di dasbor wp-admin.

Parameter EvaluasiMekanisme Nonce WordPress CoreNonce Standar OIDC (Microsoft Entra ID)
Panjang Karakter10 karakter heksadesimal32 hingga 64 karakter acak bebas
Basis PerhitunganHash sesi pengguna, aksi spesifik, dan saltBilangan acak kriptografis sekali pakai
Siklus Kedaluwarsa12 sampai 24 jam (window tick)Beberapa menit (hanya untuk satu kali sesi)
Fungsi Validasiwp_verify_nonce($nonce, $action)Pencocokan string sesi persis di peladen
Tujuan UtamaMencegah pemalsuan formulir (CSRF)Mencegah pengulangan sesi autentikasi (Replay)
Dampak KetidakcocokanSelalu gagal verifikasi tanpa peringatan sintaksisAutentikasi bocor jika galat diabaikan
Rak peladen pusat data jaringan server komputasi awan

Kondisi Spesifik yang Menjadikan Website Anda Rentan

Meskipun kerentanan ini berstatus kritis, pengembang WPO365 mencatat bahwa celah ini hanya aktif pada instalasi yang menyalakan opsi konfigurasi tertentu, yaitu opsi use_id_token_parser_v2.

Opsi ini biasanya diaktifkan oleh pengelola website yang melakukan migrasi konfigurasi dari versi lama plugin ke versi yang lebih baru, atau mereka yang memerlukan kompatibilitas dengan skema token kustom Microsoft Azure generasi awal. Jika opsi pengurai lawas ini aktif, seluruh verifikasi token akan dialihkan melalui jalur kode yang rusak tersebut.

Bagi website korporat di Indonesia, risiko ini sangat nyata. Sering kali pengelola IT kantor hanya melakukan instalasi awal, mengikuti tutorial online hingga login berhasil, lalu membiarkan seluruh opsi bawaan aktif tanpa pernah mengaudit ulang alur datanya.

Celah ini menjadi sasaran empuk penyerang karena serangan dapat dilancarkan secara otomatis melalui skrip bot dari luar jaringan kantor, tanpa membutuhkan kredensial awal apa pun.

Langkah Mitigasi Konkret bagi Pengelola Website

Jika website kantor, portal universitas, atau situs perusahaan Anda menggunakan plugin WPO365 untuk integrasi login Microsoft, berikut adalah panduan langkah penanganan yang harus segera dieksekusi:

1. Perbarui Plugin ke Versi 45.0 atau Lebih Baru Seketika

Pengembang plugin telah merilis versi tambalan resmi WPO365 versi 45.0 yang menghapus total kode pengurai token lama yang bermasalah. Masuk ke dasbor WordPress Anda, buka menu Plugins, dan lakukan pembaruan ke versi terbaru. Jika plugin dibeli melalui lisensi premium, unduh paket arsip terbaru dari portal resmi pengembang dan timpa berkas lama Anda.

2. Nonaktifkan Opsi Pengurai Token Lawas

Jika karena alasan tertentu Anda belum bisa langsung memperbarui plugin hari ini, segera buka menu pengaturan WPO365 di dasbor wp-admin. Periksa tab Authentication atau Advanced Settings, lalu pastikan centang pada opsi use_id_token_parser_v2 dalam kondisi mati (disabled). Dengan mematikan opsi ini, sistem akan dipaksa menggunakan pengurai modern yang bebas dari celah logika nonce tersebut.

3. Bersihkan Data Transients dan Cache Sistem

Untuk membersihkan sisa muatan skrip jahat yang mungkin tersimpan pada celah XSS CVE-2026-96765, hapus seluruh data transient WordPress Anda. Anda dapat menggunakan perintah WP-CLI sederhana melalui terminal peladen hosting:

wp transient delete wpo365_errors
wp cache flush

Perintah di atas akan menghapus rekaman galat sementara yang menampung muatan token manipulatif dari penyerang.

4. Lakukan Audit Forensik Daftar Pengguna Administrator

Setelah menambal lubang keamanan, jangan lupa memeriksa daftar pengguna di menu Users > All Users. Perhatikan apakah ada akun administrator baru yang mencurigakan, perubahan peran pengguna staf biasa menjadi administrator, atau aktivitas login di luar jam kerja normal melalui plugin audit keamanan seperti Wordfence atau WP Activity Log.

Pengembang web memeriksa baris kode keamanan di laptop kerja

Pelajaran Berharga bagi Komunitas Pengembang Perangkat Lunak

Kasus celah CVE-2026-104759 pada plugin WPO365 memberikan pelajaran arsitektur perangkat lunak yang sangat mahal bagi para pembuat plugin dan pengembang web di seluruh dunia.

Pertama, pahami batasan dan tujuan dari setiap fungsi pustaka bawaan framework. Nama fungsi wp_verify_nonce() terdengar sangat meyakinkan seolah-olah fungsi tersebut mampu memverifikasi segala jenis nonce di dunia digital. Namun bagi pengembang WordPress yang teliti, nonce di WordPress sejatinya adalah token anti-CSRF sederhana, bukan mekanisme pengesahan token identitas OpenID Connect. Memaksa fungsi internal untuk kebutuhan protokol standar terbuka tanpa membaca dokumentasi sumber aslinya adalah resep bencana.

Kedua, terapkan selalu pola pikir pengamanan ketat atau fail-secure. Ketika sebuah cabang logika pengecekan keamanan gagal memenuhi syarat, program harus selalu memilih jalan yang paling aman: hentikan proses, buang token yang mencurigakan, dan catat insiden tersebut ke dalam berkas log peladen.

Menjaga keamanan website perusahaan bukanlah soal memasang sebanyak mungkin plugin canggih, melainkan tentang ketelitian memahami setiap baris kode yang diberi wewenang memegang kunci pintu gerbang sistem Anda.

Posted in WordPressTags: