WordPress Patreon eklentisinde güvenlik açığı bulundu

WordPress için Patreon eklentisinin dahili denetimi sırasında, JetPack tarama ekibi, birinin bir web sitesini ele geçirmesine izin veren birkaç zayıf nokta buldu. Bu güvenlik açığı, derhal 1.7.2 sürümünü yayınlayan ve tüm bu sorunları geliştiren eklenti üreticisine açıklandı. Daha uzun bir eklenti sürümü çalıştırırsanız, lütfen bugün güncelleyin! Tüm teknik detaylar için okumaya devam edin. Bu kafanın ötesine geçerse endişelenmeyin. Sizin için kötü amaçlı yazılım taraması ve otomatik kaldırma veya kaldırma işlemini işlemek için bir jetpack taraması sunuyoruz. Ekibimiz, yerel ifşa dosyaları, siteler arası istek asmeri (CSRF) ve yansıtılan siteler arası komut dosyası (XSS) güvenlik açığı dahil olmak üzere çeşitli saldırı vektörlerini tanımlar.
Yerel dosya açıklamasının güvenlik açığı, kötü aktörler tarafından web sitesinin gizli anahtarı ve kimlik bilgisi veritabanı gibi önemli bilgilere erişmek için kullanılabilecek bir hatadır. Sahtekarlıklar arası komut dosyaları ve yansıtılan site taleplerine karşı savunmasızlık, saldırganın dikkatlice yapılan tehlikeli bağlantıları tıklamaları için aldatarak şüpheli olmayan kullanıcı adına belirli eylemleri yapmasını sağlayan bir sorundur. Eğer sömürülürse, bazıları kötü bireylerin savunmasız web sitelerini ele geçirmesine izin verebilir. Etkilenen yerel dosyaların açıklanmasına karşı güvenlik açığı: <1.7.0 ID CVE: CVE-2021-24227 CVSSV3: 7.5 CWSS: 83.6
Genel statik işlev Servakatrononlyimage ($ image = false) {
if ((! isset ($ Image) veya! $ Image) ve isset ($ _request ['patron_only_image']))) {
$ image = $ _request ['patron_only_image'];
}
if (! $ Image veya $ Image == '') {
// Bu yeniden yazılmış bir görüntü isteği değildir. Çıkış.
dönüş;
}
if (!
}
$ upload_locations = wp_upload_dir ();
// Temel yüklemeyi istiyoruz, böylece var olması durumunda bugüne dayalı alt klasörlerde yapılan değişiklikleri hesaba katabiliriz
$ upload_dir = substr (wp_make_link_relative ($ upload_locations ['baseurl']), 1);
$ image = get_site_url (). '/'. $ upload_dir. '/'. $ görüntü;
if (current_user_can ('manage_options'))) {
Patreon_protect :: ReadandServeImage ($ Image);
}
// Aşağıda tanımlama, çekirdek kilitleme işlevini atlamak ve eklentiden özel bir işlevi kullanmak için herhangi bir eklentide tanımlanabilir
// Tanımlanıp tanımlanmadığını kontrol ettiği için eklenti yük siparişinden bağımsızdır.
//_Content filtresi çalıştırılmadan hemen önce herhangi bir eklenti tarafından tanımlanabilir.
if (appling_filters ('ptrn/bypass_image_filting', tanımlanmış ('patreon_bypass_image_filtering'))))) {) {
Patreon_protect :: ReadandServeImage ($ Image);
}
// Görüntünün korunup korunmadığını kontrol edin:
$ attacment_id = attakment_url_to_postid ($ image);
// attment_url_to_postid, ek yayın kimliğini bulabilirse 0 döner
if ($ attacment_id == 0) {
// Ek Destek Kimliği belirleyemedi. Küçük resimlerden kimlik almaya çalışın
$ attackment_id = patreon_protect :: fiberidfromthumbnailurl ($ görüntü);
// Gitme. Dışarı çıkıp görüntüyü normal olarak servis etmelisiniz
if ($ attacment_id == 0 veya! $ attebment_id) {
Patreon_protect :: ReadandServeImage ($ Image);
Patreon-Connect, siteyi ziyaret eden herkes tarafından kötüye kullanılabilecek yerel dosyaların açıklanmasının güvenlik açığını içerir. Bu saldırı vektörünü kullanarak, saldırgan, nces ve çerez yapımında kullanılan kimlik bilgisi veritabanını ve kriptografik anahtarları içeren wp-config.php gibi önemli dahili dosyaları sızdırabilir. Başarılı bir şekilde sömürülürse, bu güvenlik zayıflığı sitenin sitesine neden olabilir. tamamen kötü aktörler tarafından. XSS, giriş formunun etkilenen versiyonuna yansır: <1.7.2 ID CVE: CVE-2021-24228 CVSSV3: 8.8 CWSS: 80.6
Genel statik işlev prosespatreonMessages () {
$ patreon_error = '';
if (isset ($ _request ['patreon_error'])))))) {
// Patreon'dan herhangi bir belirli hata mesajı gönderilirse, hazırlayın
$ Patreon_error = ' – Patreon döndü:'. $ _Request ['patreon_error'];
}
if (isset ($ _request ['patreon_message'])))))) {
Dönüş '
'. Applate_filters ('ptrn/error_message', self :: $ Message_map [$ _request ['patreon_message']]]. $ Patreon_error). '
';
Patreon-Connect, WordPress Oturum Açma Formunu (WP-Login.php) bağlar ve kullanıcıların Patreon hesaplarını kullanarak siteleri yönetmelerini sağlamayı teklif eder. Ne yazık ki, ekranın arkasındaki bazı mantık mantık hataları, kullanıcının kontrollü girişin giriş sayfasına yansıtılmasına izin verir, temiz değil.
Bu güvenlik açığından yararlanmayı başarmak için, saldırganların tehlikeli JavaScript kodu içeren tuzak bağlantısını ziyaret etmek için kurbanları kandırmaları gerekiyor. JavaScript kurbanın tarayıcısı bağlamında çalıştığından, saldırgan, kullanıcının ayrıcalığının izin verdiği her şeyi yapmak için bağlantıdaki gizli kodu ayarlayabilir. Bu saldırı yöneticiye karşı başarılı olursa, komut dosyası siteyi tamamen ele geçirebilir. Etkilenen Ajax 'Patreon_save_attachment_Patreon_Level' versiyonunda XSS'yi yansıtır: $ attakment_id,
‘patreon_level’ => $ _request [‘patreon_attachment_patreon_level’],
‘Mesaj’ => $ Mesaj,
);
echo self :: make_image_lock_interface ($ args);
public işlevi_image_lock_interface ($ args = array ()) {
$ arayüz = ”;
$ arayüz. = ‘
‘;
$ arayüz. = ‘ & time;
$ arayüz. = ”;
$ arayüz. = ‘

kilidi görüntüsü

‘;
$ arayüz. = ‘
‘;
$ arayüz. = ‘ $ ‘;
Bu eklenti ayrıca, Patreon müşterilerinin verilen eklere erişmesi için gereken vaatlerin seviyesini güncellemek için Ajax Hooks kullanır. Bu eyleme, ‘manage_options’ ayrıcalıklarına sahip kullanıcı hesapları için erişilebilir (örneğin, yalnızca yöneticiler). Ne yazık ki, bu AJAX’ın son noktasında kullanılan parametrelerden biri, kullanıcıya yeniden yazılmadan önce sterilize edilmez, bu nedenle risk Temsil eder, açıkladığımız önceki XSS güvenlik açığı ile aynıdır. CSRF, saldırganın etkilenen kullanıcı meta’sını oluşturmasına/yapmasına izin verir: <1.7.0 ID CVE: CVE-2021-24230 CVSSV3: 6.5 CWSS: 42
genel işlev toggle_option () {
if (! (Is_admin () && current_user_can ('manage_options'))))))) {
dönüş;

}
$ current_user = wp_get_current_user ();
$ option_to_toggle = $ _request [‘toggle_id’];
$ current_value = get_user_meta ($ current_user-> id, $ option_to_toggle, true);
$ new_value = ‘kapalı’;
if (! $ current_value veya $ current_value == ‘kapalı’) {
$ new_value = ‘açık’;
}
update_user_meta ($ current_user-> id, $ option_to_toggle, $ new_value);
}
Birkaç bitiş noktası, kullanıcının yasal işleminden sonra gönderdiği talebi nonce kullanarak yapabileceğiniz doğrulamaz. Korunmasız son noktalardan biri, kötü bireylerin ziyaret ettikten sonra kurbanın hesabında kullanıcının meta verilerini keyfi olarak yapacak bir tuzak bağlantısı yapmasına izin verir.
Kullanılansa, bu hata, etkilenen kullanıcı hesabının rolünü ve ayrıcalıklarını içeren “WP_CAPABILITYITY” meta olmak için kullanılabilir. Bunu temel olarak yapmak onları siteden kilitleyerek ücretli içeriğe erişmelerini engelleyecektir. CSRF, saldırganın Sitenin bağlantısını Patreon’un etkilenen sürümünden ayırmasına izin verir: $ değer) {
delete_option ($ option_to_delete [$ tuş]);
}
Update_option (‘patreon-installation-api-sürüm’, ‘2’);
Update_option (‘Patreon-can-use-api-v2’, true);
WP_REDIRECT (admin_url (‘admin.php? Sayfa = patreon_wordpress_setup_wizard & setup_stage = reconnect_0’));
çıkış;
}
Bu, aynı tür saldırıdaki (CSRF) son güvenlik açığına benzer, ancak yöneticileri hedefler. Bu özel saldırı vektörü eskisi gibi çalışıyor. Saldırganın özel bir bağlantıyı ziyaret etmesi için gelen yöneticiye sorması gerekiyor.
Bu özel son noktası Patreon’dan siteye karar verebileceğinden, bu saldırının vektörünü hedefleyen saldırgan da bunu yapabilir, bu da siteye senkronize edilmiş yeni içeriği önleyecektir. Zaman çizelgesi
İlk İletişim Çaba (Başarısız) – 4 Aralık
İkinci İletişim Çabaları – 11 Aralık
Yazar raporu tanıyor – 15 Aralık
Sürüm 1.7.0 Yayınlanan – 5 Ocak
İki ek XSS problemini rapor ediyoruz – 9 Mart
Yazar ikinci raporu tanıyor – 9 Mart
Sürüm 1.7.2 Yayınlanan – 11 Mart
Sonuç Sitenizde kullandığınız Patreon-Connect eklentisinin geçerli sürümünü kontrol etmenizi ve 1.7.2 olmasa da mümkün olan en kısa sürede güncellemenizi öneririz!
Jetpack’te, web sitenizin bu tür güvenlik açığından korunmasını sağlamak için çok çalışıyoruz. Yeni tehditlerin bir adım önünde kalmak için, güvenlik taraması ve otomatik kötü amaçlı yazılımların kaldırılmasını içeren JetPack taramasına bakın. Bu güvenlik açıklama kredisi George Stephanis, Fioravante Souza, Miguel Neto, Benedict şarkıcısı ve Marc Montpas sayesinde mümkündür.

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir