WPForms Güvenlik Açığı Kullanıcıların Abonelik Ödemeleri Yapmasına İzin Veriyor


CVE-2024-11205 olarak takip edilen kritik bir güvenlik açığı yakın zamanda dünya çapında 6 milyondan fazla aktif kuruluma sahip olan popüler WordPress eklentisi WPForms’ta keşfedildi.

Araştırmacı villus164 tarafından Wordfence Bug Bounty Programı aracılığıyla tespit edilen bu kusur, en azından abone düzeyinde izinlere sahip kimliği doğrulanmış kullanıcıların Stripe ödemeleri için yetkisiz geri ödeme yapmasına ve Stripe aboneliklerini iptal etmesine olanak tanıyor.

“Ödeme İadesi ve Abonelik İptalinde Eksik Yetki” başlığı altında kategorize edilen güvenlik açığı, WPForms eklentisinin 1.8.4 ile 1.9.2.1 arasındaki sürümlerini etkiliyor.

– Reklamcılık –
Hizmet Olarak SIEMHizmet Olarak SIEM

CVSS puanı 8,5 olan yüksek ciddiyeti göz önüne alındığında, bu kusur, ödemeleri ve abonelikleri yönetmek için WPForms’a güvenen işletmeler için mali kayıplara yol açabilir.

KOBİ ve MSP Siber Güvenlik Liderleri için 2024 MITRE ATT&CK Sonuçlarından Yararlanma – Ücretsiz Web Seminerine Katılın

Teknik Detaylar

WPForms, sürükle ve bırak oluşturucuyu kullanarak ödeme ve abonelik formları da dahil olmak üzere formlar oluşturmak için yaygın olarak kullanılır.

Güvenlik açığı, eklentinin Stripe ödeme iadesi ve abonelik iptali süreçlerindeki yetersiz yetkilendirme kontrollerinden kaynaklanıyor.

Söz konusu temel işlevler şunlardır:

  1. ajax_single_payment_refund()
  2. ajax_single_payment_cancel()

Bir nonce bu işlevleri korurken, uygun yetenek kontrollerinden yoksundur. Sonuç olarak, daha düşük izinlere sahip kimliği doğrulanmış kullanıcılar (aboneler gibi) bu güvenlik açığından yararlanabilir.

Aşağıda eklentinin güvenlik açığı bulunan kodundan bir kesit verilmiştir:

public function ajax_single_payment_refund() {
    if ( ! isset( $_POST['payment_id'] ) ) {
        wp_send_json_error( [ 'message' => esc_html__( 'Missing payment ID.', 'wpforms-lite' ) ] );
    }
    $this->check_payment_collection_type(); 
    check_ajax_referer( 'wpforms-admin', 'nonce' ); 
    $payment_id = (int) $_POST['payment_id']; 
    $payment_db = wpforms()->obj( 'payment' )->get( $payment_id ); 
    if ( empty( $payment_db ) ) { 
        wp_send_json_error( [ 'message' => esc_html__( 'Payment not found in the database.', 'wpforms-lite' ) ] ); 
    }
    $args = [ 
        'metadata' => [ 'refunded_by' => 'wpforms_dashboard', ], 
        'reason' => 'requested_by_customer', 
    ]; 
    $refund = $this->payment_intents->refund_payment( $payment_db->transaction_id, $args ); 
}

Yukarıdaki kod, saldırganların yeterli yetenek kontrolü olmadan AJAX işlevini nasıl kötüye kullanabileceğini vurgulamaktadır. Aboneliğin iptal edilmesini sağlayan ajax_single_payment_cancel() işlevinde de benzer sorunlar mevcuttur.

Etkilenen WPForms eklenti sürümlerinin (1.8.4 ila 1.9.2.1) kullanıcılarının, bu kritik güvenlik açığını derhal azaltmak için 1.9.2.2 sürümüne güncelleme yapmaları önerilir.

Wordfence Premium, Care ve Response kullanıcıları 15 Kasım 2024’te erken korumaya kavuşurken, ücretsiz kullanıcılar bu hakkı 15 Aralık 2024’te alacaktır.

Investigate Real-World Malicious Links,Malware & Phishing Attacks With ANY.RUN - Try for Free



Source link