Keamanan

Pelajari lebih lanjut tentang keamanan perangkat lunak core WordPress dalam artikel gratis berikut. Anda juga dapat mengunduhnya dalamformat PDF.

Ikhtisar

Dokumen ini adalah analisis dan penjelasan dari development software core WordPress dan proses keamanan yang terkait, juga pengujian keamanan yang menjadi bagian tetap dari software. Pengambil kebijakan yang sedang mengevaluasi WordPress sebagai pilihan CMS atau framework aplikasi web dapat menggunakan dokumen ini untuk analisis dan pengambilan keputusan mereka, dan juga untuk developer yang ingin membiasakan diri dengan komponen keamanan dan praktik terbaik dari software WordPress.

Informasi di dalam dokumen ini adalah informasi yang terkini, disesuaikan dengan rilis software yang stabil dan terbaru, WordPress 4.7 pada saat dokumen ini ditulis, dan juga relevan untuk kebanyakan versi sebelumnya, karena kompatibilitas terbalik adalah fokus utama tim development WordPress. Langkah dan perubahan spesifik terkait keamanan akan dicatat setelah ditambahkan ke core software. Kami menyarankan agar Anda menjalankan WordPress versi terbaru yang stabil untuk penggunaan yang paling aman.

Ringkasan Eksekutif

WordPress adalah sebuah content management system (sistem manajemen konten) open-source yang dinamis, yang dipakai oleh jutaan situs web, aplikasi web, dan blog. Saat ini, lebih dari 35% dari 10 juta website top di Internet memakai WordPress. Kegunaan, ekstensibilitas, dan komunitas development yang matang membuat WordPress populer dan menjadi pilihan untuk situs web dengan segala ukuran.

Sejak ditemukan tahun 2003, WordPress telah diperbarui terus menerus sehingga software core-nya dapat mengidentifikasi dan memitigasi ancaman keamanan yang umum, termasuk yang ada di daftar Top 10 dari Open Web Application Security Project/OWASP (Proyek Keamanan Aplikasi Web Terbuka), yang dibahas di dalam dokumen ini.

Tim Keamanan WordPress, bersama dengan Tim Kepemimpinan Core WordPress dan seluruh komunitas WordPress global, bekerja untuk mengidentifikasi dan memecahkan isu keamanan di software core WordPress, juga memberi rekomendasi dan mendokumentasi praktik keamanan terbaik untuk penyusun plugin pihak ketiga dan penyusun tema.

Developer dan administrator situs harus memperhatikan penggunaan API core yang benar dan konfigurasi server, yang biasanya menjadi sumber dari kerentanan, juga memastikan bahwa semua pengguna mempunyai password yang kuat untuk mengakses WordPress.

Gambaran Umum WordPress

WordPress adalah sebuah content management system (CMS) yang gratis dan terbuka. WordPress adalah software CMS yang paling banyak digunakan di dunia dan dipakai oleh lebih dari 35% 10 juta situs top dunia1, kira-kira menguasai 62% pasar dari semua situs yang menggunakan CMS.

WordPress berlisensi General Public License (GPLv2 atau seterusnya) yang menyediakan empat poin kebebasan, dan dapat dianggap sebagai “deklarasi hak-hak” WordPress:

  1. Kebebasan untuk menjalankan program, untuk tujuan apa pun.
  2. Kebebasan untuk mempelajari cara sebuah program bekerja, dan mengubahnya sesuai kebutuhan Anda.
  3. Kebebasan untuk mendistribusi ulang.
  4. Kebebasan untuk mendistribusikan salinan Anda versi modifikasi kepada orang lain.

Tim Kepemimpinan Core WordPress

Proyek WordPress adalah sebuah meritokrasi, dijalankan oleh tim pemimpin core, dan dipimpin oleh ko-kreator dan developer pemimpin utama, Matt Mullenweg. Tim tersebut mengelola semua aspek dari proyek, termasuk development core, WordPress.org, dan pembentukan komunitas.

Tim Pemimpin Core terdiri dari Matt Mullenweg, lima pemimpin developer, dan lebih dari selusin developer core dengan akses permanen untuk membuat commit. Developer ini yang membuat keputusan akhir untuk urusan teknis, diskusi arsitektur, dan implementasi.

WordPress mempunyai banyak developer kontributor (relawan). Beberapa sudah ikut berkontribusi sebelumnya, yang lainnya baru menjadi kontributor pertama kali. Developer kontributor ini adalah kontributor yang sudah lama dan dipercaya oleh sesama developer. Jika dibutuhkan, WordPress juga mempunyai developer tamu, orang-orang yang diberikan akses, biasanya untuk komponen spesifik, dalam jangka waktu sementara atau masa percobaan.

Developer core dan developer yang berkontribusi menentukan jalannya development WordPress. Di setiap versi, ratusan developer ikut menuliskan kode WordPress. Kontributor core ini adalah relawan yang menulis kode di core WordPress pada lini yang beragam.

Siklus Penerbitan WordPress

Setiap siklus rilis WordPress dipimpin oleh satu atau lebih developer core WordPress. Siklus ini biasanya berlangsung selama 4 bulan, mulai dari meeting penentuan scope awal hingga peluncuran versi.

Siklus penerbitan memiliki alur berikut2:

  • Fase 1: Perencanaan dan penentuan pemimpin tim. Fase ini dilakukan di ruang chat #core di Slack. Pemimpin rilis akan mendiskusikan fitur-fitur rilis berikutnya dari WordPress. Kontributor WordPress dapat ikut terlibat dalam diskusi tersebut. Pemimpin rilis akan menentukan pemimpin tim untuk setiap fitur baru yang akan dikerjakan.
  • Fase 2: Pengerjaan development dimulai. Pemimpin tim mengumpulkan tim dan mengerjakan fitur yang telah ditugaskan kepada mereka. Obrolan atau chat dijadwalkan berkala untuk memastikan ada kemajuan dalam proyek.
  • Phase 3: Beta. Betas are released, and beta-testers are asked to start reporting bugs. No more commits for new enhancements or feature requests are carried out from this phase on. Third-party plugin and theme authors are encouraged to test their code against the upcoming changes.
  • Phase 4: Release Candidate. There is a string freeze for translatable strings from this point on. Work is targeted on regressions and blockers only.
  • Tahap 5: Peluncuran. Versi WordPress diluncurkan dan tersedia di Admin WordPress untuk pembaruan.

Penomoran Versi dan Siaran Keamanan

A major WordPress version is dictated by the first two sequences. For example, 3.5 is a major release, as is 3.6, 3.7, or 4.0. There isn’t a “WordPress 3” or “WordPress 4” and each major release is referred to by its numbering, e.g., “WordPress 3.9.”

Major releases may add new user features and developer APIs. Though typically in the software world, a “major” version means you can break backwards compatibility, WordPress strives to never break backwards compatibility. Backwards compatibility is one of the project’s most important philosophies, with the aim of making updates much easier on users and developers alike.

A minor WordPress version is dictated by the third sequence. Version 3.5.1 is a minor release, as is 3.4.23. A minor release is reserved for fixing security vulnerabilities and addressing critical bugs only. Since new versions of WordPress are released so frequently — the aim is every 4-5 months for a major release, and minor releases happen as needed — there is only a need for major and minor releases.

Kompatibilitas Versi Sebelumnya

The WordPress project has a strong commitment to backwards compatibility. This commitment means that themes, plugins, and custom code continues to function when WordPress core software is updated, encouraging site owners to keep their WordPress version updated to the latest secure release.

WordPress dan Keamanan

Tim Keamanan WordPress

The WordPress Security Team is made up of approximately 50 experts including lead developers and security researchers — about half are employees of Automattic (makers of WordPress.com, the earliest and largest WordPress hosting platform on the web), and a number work in the web security field. The team consults with well-known and trusted security researchers and hosting companies3.

The WordPress Security Team often collaborates with other security teams to address issues in common dependencies, such as resolving the vulnerability in the PHP XML parser, used by the XML-RPC API that ships with WordPress, in WordPress 3.9.24. This vulnerability resolution was a result of a joint effort by both WordPress and Drupal security teams.

Risiko, Proses, dan Riwayat Keamanan WordPress

The WordPress Security Team believes in Responsible Disclosure by alerting the security team immediately of any potential vulnerabilities. Potential security vulnerabilities can be signaled to the Security Team via the WordPress HackerOne5. The Security Team communicates amongst itself via a private Slack channel, and works on a walled-off, private Trac for tracking, testing, and fixing bugs and security problems.

Each security report is acknowledged upon receipt, and the team works to verify the vulnerability and determine its severity. If confirmed, the security team then plans for a patch to fix the problem which can be committed to an upcoming release of the WordPress software or it can be pushed as an immediate security release, depending on the severity of the issue.

For an immediate security release, an advisory is published by the Security Team to the WordPress.org News site6 announcing the release and detailing the changes. Credit for the responsible disclosure of a vulnerability is given in the advisory to encourage and reinforce continued responsible reporting in the future.

Administrators of the WordPress software see a notification on their site dashboard to upgrade when a new release is available, and following the manual upgrade users are redirected to the About WordPress screen which details the changes. If administrators have automatic background updates enabled, they will receive an email after an upgrade has been completed.

Pembaruan Tertutup Otomatis untuk Penerbitan Keamanan

Starting with version 3.7, WordPress introduced automated background updates for all minor releases7, such as 3.7.1 and 3.7.2. The WordPress Security Team can identify, fix, and push out automated security enhancements for WordPress without the site owner needing to do anything on their end, and the security update will install automatically.

When a security update is pushed for the current stable release of WordPress, the core team will also push security updates for all the releases that are capable of background updates (since WordPress 3.7), so these older but still recent versions of WordPress will receive security enhancements.

Pemilik situs individual dapat memilih untuk menonaktifkan update otomatis di belakang layar dengan membuat perubahan kecil di file konfigurasi mereka, tetapi membiarkan fungsionalitas berjalan seperti biasa dan menggunakan rilis WordPress terbaru yang stabil sangat disarankan oleh tim core.

Top 10 OWASP 2013

The Open Web Application Security Project (OWASP) is an online community dedicated to web application security. The OWASP Top 10 list8 focuses on identifying the most serious application security risks for a broad array of organizations. The Top 10 items are selected and prioritized in combination with consensus estimates of exploitability, detectability, and impact estimates.

Bagian di bawah ini membahas tentang API, sumber daya, dan aturan yang WordPress gunakan untuk memperkuat software core dan plugin serta tema pihak ketiga untuk meminimalisir risiko keamanan.

A1 - Injeksi

A2 - Otentikasi yang Rusak dan Pengelolaan Sesi

Software core WordPress mengelola akun pengguna dan otentikasi dan detail seperti ID pengguna, nama, dan password, serta kuki otentikasi dikelola di server. Password dijaga di database menggunakan teknik standar salting dan stretching. Sesi yang aktif dihapus saat logout untuk versi WordPress setelah 4.0.

A3 - Cross Site Scripting (XSS)

WordPress menyediakan banyak fungsi yang menjamin bahwa data yang diberikan user tersimpan aman10. Pengguna yang dipercaya, yaitu administrator dan editor pada instalasi WordPress tunggal, serta administrator jaringan pada WordPress Multisitus, dapat menuliskan kode HTML atau Javascript yang tidak difilter di dalam artikel atau halaman. Konten yang diajukan oleh pengguna yang tidak dipercaya akan difilter untuk menghilangkan entitas yang berbahaya, menggunakan library KSES melalui fungsi wp_kses.

Sebagai contoh, tim core WordPress menemukan bahwa fungsi the_search_query() disalahgunakan oleh banyak penyusun tema sebelum rilis WordPress 2.3, dengan mengabaikan fungsi escaping untuk output di HTML. Jarang sekali kompatibibilitas terbalik menjadi rusak, output fungsi tersebut telah dirubah di WordPress 2.3; dibuat menjadi pre-escaped.

A4 - Referensi Direct Object Tidak Aman

WordPress seringkali menyediakan referensi direct object, seperti nomor ID akun pengguna atau konten yang tersedia di URL atau formulir. Walaupun nomor ID ini menampilkan informasi sistem secara langsung, WordPress mempunyai sistem kontrol perizinan dan akses yang canggih, sehingga dapat mencegah akses pengguna yang tidak bertanggung jawab.

A5 - Kesalahan Konfigurasi Keamanan

Kebanyakan operasi konfigurasi keamanan WordPress dibatasi hanya untuk satu administrator yang punya otoritas. Pengaturan awal untuk WordPress terus dievaluasi oleh tim core, dan tim WordPress core menyediakan dokumentasi dan praktik terbaik untuk meningkatkan keamanan untuk konfigurasi server untuk menjalankan situs WordPress11.

A6 - Paparan Data yang Sensitif

Kata sandi akun pengguna WordPress di garami dan di hash berdasarkan Portable PHP Password Hashing Framework12. Sistem hak akses WordPress digunakan untuk mengendalikan akses pada informasi pribadi seperti PII pengguna terdaftar, alamat surel pemberi komentar, konten privat terpublikasi, dsb. Dalam WordPress 3.7, kekuatan kata sandi dimasukkan pada inti perangkat lunak memberikan tambahan informasi bagaimana pengguna mengatur kata sandi-nya dan memberi petunjuk untuk meningkatkan kekuatan. WordPress juga memiliki konfigurasi pengaturan opsional untuk mewajibkan HTTPS.

A7 - Kontrol Akses Level Fungsi yang Hilang

WordPress memeriksa otorisasi dan perizinan untuk semua fungsi permintaan akses level sebelum tindakan dijalankan. Akses atau visualisasi dari URL administratif, menu, dan halaman tanpa autentikasi yang benar terintegrasi erat dengan sistem autentikasi untuk mencegah akses dari pengguna yang tidak berwenang.

A8 - Pemalsuan Permintaan Lintas Situs (CSRF)

WordPress menggunakan token kriptografik yang disebut nonces13, untuk memvalidasi intensi permintaan aksi dari pengguna terotorisasi untuk melindungi dari ancaman CSRF potensial. WordPress menyediakan API untuk menghasilkan token ini untuk menciptakan dan memverifikasi token untik dan temporer, dan token ini terbatas untuk pengguna spesifik, aksi spesifik, objek spesifik, dan waktu spesifik, yang dapat ditambahkan pada formulir dan URL sesuai kebutuhan. Sebagai tambahan, semua nonces akan di-invalidasi saat keluar.

A9 - Penggunaan Komponen dengan Kerentanan yang Dipahami

Tim WordPress core selalu mengawasi library dan framework yang terintegrasi dengan fungsionalitas inti WordPress. Sebelumnya, tim core telah melakukan kontribusi ke beberapa komponen pihak ketiga untuk membuat komponen tersebut lebih aman, seperti update untuk memperbaiki kerentanan antar-situs pada TinyMCE di WordPress 3.5.214.

Jika diperlukan, tim core dapat memutuskan untuk melakukan fork atau menggantikan komponen eksternal yang penting, seperti ketika SWFUpload library digantikan secara resmi oleh Plupload library di versi 3.5.2, dan sebuah fork dari SWFUpload dibuat oleh tim keamanan<15 untuk plugin-plugin yang sementara masih memakai SWFUpload.

A10 - Pengalihan dan Penerusan yang Tidak Divalidasi

Sistem autentikasi dan kontrol akses internal WordPress akan melindungi dari upaya untuk mengarahkan pengguna ke tujuan yang tidak diinginkan atau pengarahan otomatis. Fungsi ini juga tersedia bagi developer plugin melalui API wp_safe_redirect()16.

Risiko dan Kepentingan Keamanan Lebih Lanjut

Serangan pemrosesan XXE (XML eXternal Entity)

Saat memroses XML, WordPress menonaktifkan dimuatnya entitas XML khusus untuk mencegah serangan External Entity dan Entity Expansion. Di luar fungsionalitas PHP core, WordPress tidak menyediakan API pemrosesan XML tambahan yang aman untuk penyusun plugin.

Serangan SSRF (Server Side Request Forgery)

Request HTTP yang dikeluarkan WordPress disaring untuk mencegah akses ke loopback dan alamat IP privat. Selain itu, akses ini hanya diperbolehkan untuk port HTTP standar.

Keamanan Plugin dan Tema WordPress

Tema Asal

WordPress memerlukan sebuah tema aktif untuk bisa memunculkan konten di ujung depan. Tema awal yang disertakan dengan WordPress core (saat ini "Twenty Twenty") telah diperiksa dan diuji secara intensif, terutama dari sisi keamanan, oleh tim developer tema dan tim pengembangan core.

Tema awal dapat menjadi titik mula untuk pengembangan tema khusus, dan developer situs dapat membuat tema turunan yang mencakup kustomisasi tetapi tetap mengacu ke tema awal untuk fungsionalitas dan keamanan. Tema awal dapat dihapus dengan mudah oleh administrator jika tidak dibutuhkan.

Repositori Tema dan Plugin WordPress.org

Kira-kira ada 50.000+ plugin dan 5.000+ tema tersedia di WordPress.org. Tema dan plugin yang tersedia ini didaftarkan dan diperiksa secara manual oleh relawan sebelum dimasukkan ke repositori.

Adanya plugin dan tema di repositori tidak menjamin keamanan plugin dan tema tersebut. Panduan disediakan bagi penyusun plugin sebelum mereka memasukkan plugin di repositori17, dan dokumentasi lengkap tentang bagaimana melakukan pengembangan tema WordPress18 tersedia di situs WordPress.org.

Setiap plugin dan tema dapat terus dikembangkan oleh pemilik plugin atau tema tersebut, dan perbaikan atau penambahan fitur dapat diunggah ke repositori dan dibuat tersedia untuk pengguna yang telah menginstal tema atau plugin tersebut, dengan deskripsi perubahan yang dibuat. Administrator situs akan diberikan notifikasi di dasbor mengenai plugin yang harus diupdate.

Ketika ada kerentanan dalam sebuah plugin ditemukan oleh Tim Keamanan WordPress, mereka akan menghubungi penyusun plugin dan bekerjasama untuk memperbaiki dan merilis versi yang lebih aman. Jika penyusun plugin tidak menjawab atau tingkat kerentanannya parah, maka plugin atau tema tersebut akan ditarik dari direktori publik, dan di kasus-kasus tertentu, diperbaiki dan diupdate langsung oleh Tim Keamanan.

Tim Peninjau Tema

Tim Kaji Ulang Tema terdiri dari sekelompok relawan, dipimpin oleh anggota komunitas WordPress yang berpengalaman. Mereka mengkaji dan menyetujui tema sebelum dimasukkan ke dalam direktori resmi Tema WordPress. Tim Kaji Ulang Tema mengurus Panduan Pengkajian Tema resmi19, Data Tes Unit Tema20, dan Plugin Theme Check21, dan terus berusaha melibatkan dan mengedukasi komunitas developer Tema WordPress mengenai praktik development terbaik. Siapa saja yang masuk di tim ini diatur oleh core commiter dari tim development WordPress.

Peran Penyedia Hosting dalam Keamanan WordPress

WordPress dapat diinstal di banyak platform. Walaupun software WordPress core cukup untuk menjalankan aplikasi web yang aman, yang telah disebutkan dalam dokumen ini, konfigurasi sistem operasi dan server tempat software ini berjalan juga sama pentingnya untuk menjaga agar aplikasi WordPress aman.

Catatan tentang WordPress.com dan keamanan WordPress

WordPress.com adalah pemasang WordPress terbanyak didunia, dan dimiliki dan dikelola oleh Automattic, Inc., yang didirikan oleh Matt Mullenweg, salah satu pembuat proyek WordPress. WordPress.com berjalan pada inti perangkat lunak WordPress, dan memiliki pemrosesan keamanan sendiri, resiko, dan solusi22. Dokumen ini mengacu pada keamanan terkait hosting-sendiri, perangkat lunak WordPress sumber terbuka yang dapat diunduh dari WordPress.org dan dapat dipasang di server manapun di dunia.

Lampiran

Inti WordPress APIs

API (Application Programming Interface) WordPress Core terdiri dari beberapa API individual23, masing-masing mencakup fungsi yang terlibat, dan memakai serangkaian fungsionalitas. Bersama-sama, semua API membentuk antarmuka proyek yang memungkinkan plugin dan tema untuk saling berinteraksi, mengubah, dan memperluas fungsionalitas WordPress core secara aman.

Sementara setiap API WordPress menyediakan praktik terbaik dan cara standar untuk berinteraksi dengan dan memperluas inti perangkat lunak WordPress, API WordPress berikut ini adalah yang paling relevan untuk membangun dan memperketat keamanan WordPress:

Basis Data API

API24 basis data, ditambahkan pada WordPress 0.71, menyediakan metode yang tepat untuk mengakses data sebagai isian yang diberi nama yang disimpan di lapisan basis data.

Filesystem API

API25 sistem file, ditambahkan pada WordPress 2.626, yang mulanya dibuat untuk WordPress’ memiliki fitur pembaruan otomatis. API sistem file mengabstraksi fungsionalitas yang diperlukan untuk membaca dan menulis file-file lokal ke sistem file secara aman, pada semua hosting.

Hal ini dijalankan melalui class WP_Filesystem_Base , dan beberapa subclasses yang menerapkan cara-cara berbeda dalam menghubungkan sistem file local, tergantung pada fitur hosting masing-masing. Semua tema dan plugin yang menuliskan file secara lokal menjalankan hal serupa menggunakan kelompok WP_Filesystem classes.

HTTP API

API27 HTTP, ditambahkan di WordPress 2.728 dan dikembangkan di WordPress 2.8, menstandarisasikan permintaan HTTP untuk WordPress. API menangani kuki, pengodean dan mendekodekan gzip, pendekodean bongkah (jika HTTP 1.1), dan implementasi protokol HTTP lain. API menstandarisasikan permintaan, menguji setiap metode sebelum pengiriman, dan, berdasarkan konfigurasi server Anda, menggunakan metode yang sesuai untuk menjalan perintah.

Perizinan dan API pengguna saat ini

Izin dan API29 pengguna aktif merupakan sekumpulan fungsi yang berguna untuk verifikasi izin dan otoritas pengguna yang sedang aktif untuk menjalankan perintah atau operasi yang diminta, dan melindungi dari pengguna yang tidak dikenal mengakses dan menjalankan fungsi diluar kapabilitas yang diizinkan mereka.

Lisensi konten artikel

Teks di dalam dokumen ini (tidak termasuk logo WordPress atau merk dagang) berlisensi CC0 1.0 Universal (CC0 1.0) Public Domain Dedication. Anda dapat menggandakan, mengubah, mendistribusikan dan menggunakan, bahkan untuk keperluan komersil, tanpa harus meminta izin.

Terima kasih khusus kepada security white paper Drupal, yang telah menginspirasi.

Bacaan Lebih Lanjut


Ditulis oleh Sara Rosso

Kontribusi dari Barry Abrahamson, Michael Adams, Jon Cave, Helen Hou-Sandí, Dion Hulse, Mo Jangda, Paul Maiorana

Versi 1.0 March 2015


Catatan kaki