Rilis keamanan Desember 2021/Pertanyaan umum
Serangkaian kelemahan telah ditemukan di MediaWiki yang memungkinkan penyerang membocorkan isi halaman dari wiki pribadi dan mengabaikan izin penyuntingan.
Vektor utama untuk kebocoran ini adalah menggunakan tindakan berisiko di halaman yang dicantumkan di $wgWhitelistRead
dan dapat diakses secara publik.
MediaWiki sekarang hanya membuat tindakan "view" bisa diakses secara publik di halaman dalam $wgWhitelistRead
secara bawaan.
Masalah ini telah diperbaiki di 1.35.5, 1.36.3, dan 1.17.1, lihat pengumuman untuk pranala ke tarball dan tambalannya.
Apa saja masalahnya?
- CVE-2021-44858: Fitur "balikkan" (
action=edit&undo=##&undoafter=###
) memungkinkan penyerang melihat isi sembarang revisi, meskipun mereka tidak punya izin untuk melakukan hal tersebut. Ini juga ditemukan dalam tindakan "mcrundo" dan "mcrrestore" (action=mcrundo
danaction=mcrrestore
). - CVE-2021-45038: Fitur "rollback" (
action=rollback
) bisa digunakan dengan parameter yang dibuat secara khusus untuk memungkinkan penyerang membaca konten sembarang halaman, sekalipun mereka tidak punya izin untuk melakukan hal tersebut. - CVE-2021-44857: Tindakan "mcrundo" dan "mcrrestore" (
action=mcrundo
danaction=mcrrestore
) tidak memeriksa izin penyuntingan, dan memungkinkan penyerang mengambil konten dari sembarang revisi dan menyimpannya di halaman mana pun yang dia pilih. Ini mempengaruhi wiki publik ataupun halaman publik di wiki pribadi.
Saya tidak punya waktu untuk menambalnya, bagaimana cara mematikannya saja?
Tambahkan ini ke LocalSettings.php Anda:
$wgActions['mcrundo'] = false;
$wgActions['mcrrestore'] = false;
Jika wiki Anda pribadi (harus masuk log untuk membaca halaman), Anda juga harus mengatur:
$wgWhitelistRead = [];
$wgWhitelistReadRegexp = [];
Ini seharusnya mematikan seluruh kode yang lemah. Perubahan ini juga akan bekerja pada versi MediaWiki lemah yang sudah kedaluwarsa dan tidak punya tambalan.
Jika Anda menggunakan $wgWhitelistRead
untuk memungkinkan pengguna di luar log untuk melihat halaman utama dengan teks bantuan, Anda sebaiknya memindahkan teks bantuan tersebut ke pesan MediaWiki:Loginreqpagetext, yang ditampilkan ketika galat "wajib masuk log".
Apakah saya terpengaruh?
- Jika wiki Anda publiK (semua orang bisa membaca halaman): ya
- Jika wiki Anda pribadi, dan
$wgWhitelistRead
atau$wgWhitelistReadRegexp
punya paling tidak satu halaman: ya
Jika Anda menggunakan ekstensi seperti Lockdown atau Whitelist Pages untuk membuat beberapa halaman tidak bisa dibaca oleh beberapa pengguna, Anda kemungkinan juga terpengaruh.
Versi apa saja yang terpengaruh?
Semua versi MediaWiki sejak 1.23.0 sampai 1.34.x, dan 1.35.x, 1.36.x, 1.37.x sebelum diperbaiki (lihat bagian paling atas), lemah terhadap serangan pengabaian izin membaca wiki pribadi (CVE-2021-44858, CVE-2021-45038).
Semua versi MediaWiki sejak 1.32.0 lemah terhadap serangan pengabaian izin menyunting (CVE-2021-44857).
Bagaimana ini diperbaiki secara jangka panjang?
Semua tindakan kecuali "view" sekarang mewajibkan hak pengguna eksplisit "read". Ini mirip dengan pemeriksaan izin yang digunakan di API Action dan REST. Jika kelemahan lebih lanjut ditemukan dalam tindakan, paling tidak kelemahan tersebut tidak akan bisa dimanfaatkan oleh pengguna di luar log di wiki pribadi.
Tindakan yang harus bisa digunakan di halaman $wgWhitelistRead
bisa mengabaikan fungsi Action::needsReadRight()
baru.
Bagaimana cara melihat apakah seseorang telah memanfaatkan kelemahan itu di wiki saya?
Cari action=mcrundo
atau action=mcrrestore
di log akses Anda. Kecuali jika Anda secara spesifik menyalakan ekstensi yang menggunakan revisi multikonten, tidak ada penggunaan yang dibenarkan untuk kedua tindakan tersebut.
Selain itu, cari permintaan action=edit&undo=###&undoafter=###
dan periksa apakah ID revisinya adalah milik judul yang berbeda dengan halaman yang sedang disunting.
Untuk kutu rollback, cari action=rollback&from=...
yang parameter "from"-nya berisi transklusi templat (contohnya, from={{:halaman pribadi}}
).
Kutu ini tidak menyebabkan kehilangan data, jadi semua tindakan menulis yang penyerang lakukan akan direkam di riwayat halaman layaknya suntingan biasa.
Kredit
Masalah ini ditemukan oleh Dylsss, terima kasih banyak kepadanya karena telah mengidentifikasi dan melaporkan masalah tersebut. Jika Anda menemukan sebuah kutu di MediaWiki, tolong lihat proses untuk melaporkan kutu keamanan.