Eksploitasi Kerentanan API REST WordPress Lanjutkan
Diterbitkan: 2017-02-14
Sudah hampir dua minggu sejak tim keamanan WordPress mengungkapkan kerentanan eskalasi hak istimewa yang tidak diautentikasi di titik akhir REST API di 4.7 dan 4.7.1. Kerentanan ditambal secara diam-diam dan pengungkapannya ditunda selama seminggu untuk memberi pemilik situs WordPress langkah awal dalam memperbarui ke 4.7.2. Minggu lalu ratusan ribu situs rentan telah dirusak dan laporan kerusakan masih terus bergulir.
Selama akhir pekan serangan meningkat dan perusahaan keamanan WordPress telah melihat lebih banyak upaya diblokir oleh firewall mereka. Sucuri, perusahaan keamanan situs web yang melaporkan kerentanan terhadap WordPress, melacak kampanye "Diretas oleh w4l3XzY3" minggu lalu dan memperkirakan 66.000 deface. Kampanye khusus itu sekarang telah melewati 260.000 halaman yang diindeks oleh Google. Ini adalah salah satu dari hampir dua lusin kampanye perusakan yang menargetkan kerentanan.
“Selama 24 jam terakhir kami telah melihat pertumbuhan rata-rata halaman yang di-deface per kampanye sebesar 44%,” kata CEO Wordfence Mark Maunder pada hari Jumat. “Jumlah total halaman yang dirusak untuk semua kampanye ini, seperti yang diindeks oleh Google telah berkembang dari 1.496.020 menjadi 1.893.690. Itu adalah peningkatan 26% dalam total halaman yang di-deface hanya dalam 24 jam.”
Maunder mereferensikan bagan Google Trends yang menurutnya menunjukkan keberhasilan kampanye perusakan wajah selama seminggu terakhir. Lonjakan dimulai pada hari WordPress mengungkapkan kerentanannya.
Namun, White Fir Design, perusahaan lain yang menawarkan layanan keamanan, membantah klaim Wordfence bahwa 1,8 juta halaman telah diretas. Angka ~2 juta halaman dikutip dalam laporan dari BBC, The Enquirer, Ars Technica, CIO.com, dan publikasi lainnya. White Fir Design berpendapat bahwa halaman yang diretas yang telah diindeks oleh Google bukanlah representasi yang akurat.
CTO Sucuri Daniel Cid juga tidak sepenuhnya setuju dengan penilaian Wordfence tentang situasi tersebut. Setelah melakukan penelitian selama akhir pekan, Sucuri memperkirakan lebih dari 50.000 situs diretas dengan 20-30 halaman per situs dirusak. Ini akan menjadi kira-kira satu juta di ujung bawah perkiraan dan berkisar hingga 1,5 juta.
Sucuri juga mulai melihat upaya yang lebih serius pada kerentanan REST API dalam bentuk serangan eksekusi kode jarak jauh (RCE) di situs menggunakan plugin yang memungkinkan eksekusi PHP dari dalam posting dan halaman. Salah satu kampanye tersebut mencoba untuk memasukkan PHP termasuk untuk menambahkan konten dari situs yang disusupi dan kemudian menyuntikkan pintu belakang yang tersembunyi di /wp-content/uploads.
"Deface tidak menawarkan keuntungan ekonomi, sehingga kemungkinan besar akan segera mati," kata Cid. “Yang tersisa adalah upaya untuk mengeksekusi perintah (RCE) karena memberikan penyerang kendali penuh atas sebuah situs – dan menawarkan berbagai cara untuk memonetisasi – dan SPAM SEO / tautan afiliasi / suntikan iklan. Kami mulai melihat mereka dicoba di beberapa situs, dan kemungkinan besar kerentanan ini akan disalahgunakan dalam beberapa hari, minggu, dan mungkin bulan mendatang.”
Peretas menargetkan situs mana pun yang belum memperbarui ke 4.7.2 – sepertinya tidak ada pola di antara mereka. Sekilas hasil Google untuk kampanye paling aktif menunjukkan bahwa situs yang disusupi mencakup blog, media, pemerintah, pendidikan, olahraga, medis, dan situs web teknologi.
Mengapa REST API Diaktifkan secara Default
WordPress REST API diaktifkan secara default, karena rencananya akan lebih banyak fungsi admin dan plugin yang mengandalkan REST API di masa mendatang. Setelah serangan baru-baru ini, beberapa pengguna mengomentari pengungkapan kerentanan untuk menanyakan mengapa ini diaktifkan secara default.
“Masalah keamanan ada pada fitur yang tidak saya gunakan di situs saya (REST API) namun tetap saja, fitur ini pertama kali diaktifkan secara default dan kedua sejak WordPress 4.7 Anda bahkan memerlukan plugin – yang dapat menimbulkan masalah keamanan lebih lanjut – untuk menonaktifkan fitur tersebut?” salah satu pengguna (@helios2121) mengomentari kiriman tersebut. “Tolong pikirkan kembali pendekatan Anda terhadap keamanan. Buat fitur yang tidak semua orang perlu ikut serta. Atau setidaknya berikan cara untuk memilih keluar tanpa memerlukan plugin tambahan.”

Morten Rand-Hendriksen membuka tiket pelacakan untuk membahas penonaktifan REST API secara default dan hanya mengaktifkannya saat admin situs memintanya, atau tema atau plugin bergantung padanya.
Core Committer Sergey Biryukov mengkonfirmasi bahwa rencananya adalah untuk memperkenalkan lebih banyak fungsi inti yang bergantung pada REST API. “Mematikan REST API seperti mematikan admin-ajax.php — keduanya akan merusak situs Anda,” kata Biryukov.
Rand-Hendriksen bertanya mengapa titik akhir konten tidak dapat dilindungi secara default sementara mengizinkan REST API diaktifkan secara default untuk tujuan admin. Pengguna lain bertanya mengapa titik akhir Pengguna tidak dilindungi secara default (yaitu https://news.microsoft.com/wp-json/wp/v2/users atau https://www.obama.org/wp-json/wp /v2/users), yang “membuatnya lebih mudah dari sebelumnya untuk mendapatkan semua nama pengguna” di situs mana pun menggunakan 4.7+.

“Jika Anda benar-benar ingin menonaktifkan REST API di situs Anda, ini adalah rekomendasi kami saat ini: batasi hanya untuk pengguna yang diautentikasi,” kata Core Committer James Nylen. “Namun, kami ingin terus meningkatkan adopsi dan penggunaan REST API, dan saya berharap bahkan modifikasi ini akan merusak lebih banyak fungsi WP seiring berjalannya waktu, seperti tema dan penyematan berbasis API.”
Nylen merekomendasikan plugin Nonaktifkan JSON API bagi mereka yang ingin mengikuti rekomendasi itu di situs yang menggunakan WordPress 4.7+. Plugin saat ini memiliki lebih dari 10.000 pemasangan aktif.
Tim keamanan WordPress bekerja dengan rajin untuk mengurangi serangan dengan membantu host dan perusahaan keamanan menerapkan perlindungan sebelum masalah dipublikasikan. Namun, pengungkapan penuh kerentanan itu terkubur di blog Make/Core, sebuah situs yang tidak banyak dibaca di kalangan pemilik situs WordPress biasa. Tautan ke pengungkapan itu diterbitkan sebagai tambahan untuk posting sebelumnya di blog berita WordPress seminggu kemudian.
"Meskipun saya menghargai pengungkapan yang bertanggung jawab atas masalah ini dan upaya untuk menyelesaikannya, saya harap Anda mempertimbangkan untuk membuat pengumuman di masa mendatang melalui posting baru di situs WordPress News, daripada hanya menambahkan pembaruan ke posting sebelumnya," komentar pengguna @johnrork pada pengungkapan resmi. "Saya mungkin bukan satu-satunya yang bisa menghindari kompromi jika ini muncul sebagai item baru di pembaca RSS saya pada hari Rabu."
Mereka yang membaca Make blog memiliki langkah awal untuk memperbaiki situs mereka sendiri dan/atau situs klien mereka. Mereka yang bergantung pada blog berita WordPress untuk mendapatkan informasi tentang pembaruan keamanan mungkin membaca kiriman tersebut saat pertama kali diterbitkan dan tidak pernah kembali untuk melihat pembaruan tersebut seminggu kemudian. Masalah yang parah ini menjamin transparansi WordPress dalam posting baru di blog beritanya. Ini juga akan secara otomatis mengirimkan tweet ke lebih dari setengah juta pengikut di akun WordPress resmi dan akun Facebook yang memiliki lebih dari satu juta suka.
Untungnya, jumlah situs rentan yang juga memiliki plugin yang memungkinkan penyerang membonceng kerentanan ini jumlahnya jauh lebih sedikit. Situs yang dirusak memang memalukan tetapi mudah diperbaiki. Dalam kebanyakan kasus, administrator hanya perlu memperbarui ke 4.7.2 dan mengembalikan posting yang rusak ke revisi terbaru. Sebagian besar pemilik situs tidak tahu seberapa cepat eksploitasi mulai muncul setelah pengungkapan publik, tetapi situasi ini memberikan pengingat lembut tentang pentingnya memperbarui WordPress dan manfaat membiarkan pembaruan otomatis aktif.
