WordPress çevrimiçi kurs eklentisi ‘LearnPress’, kimlik doğrulama öncesi SQL enjeksiyonu ve yerel dosya dahil etme dahil olmak üzere çok sayıda kritik öneme sahip kusurlara karşı savunmasızdı.
LearnPress, WordPress web sitelerinin kolayca çevrimiçi kurslar, dersler ve sınavlar oluşturmasına ve satmasına olanak tanıyan, web sitesi geliştiricisinden kodlama bilgisi gerektirmeden ziyaretçilere kullanıcı dostu bir arayüz sağlayan bir öğrenme yönetim sistemi (LMS) eklentisidir.
100.000’den fazla aktif sitede kullanılan eklentideki güvenlik açıkları, 30 Kasım – 2 Aralık 2022 tarihleri arasında PatchStack tarafından keşfedildi ve yazılım satıcısına bildirildi.
Sorunlar, 20 Aralık 2022’de LearnPress 4.2.0 sürümünün yayınlanmasıyla giderildi. Ancak, WordPress.org istatistiklerine göre, güncellemeyi yalnızca yaklaşık %25’i uygulamıştır.
Bu, kabaca 75.000 web sitesinin, LearnPress’in savunmasız bir sürümünü kullanıyor olabileceği ve kötüye kullanılması ciddi sonuçlara yol açabilecek ciddi güvenlik açıklarına maruz kalabileceği anlamına gelir.
Güvenlik açığı ayrıntıları
PatchStack tarafından keşfedilen ilk güvenlik açığı, saldırganların web sunucusunda depolanan yerel dosyaların içeriğini görüntülemesine olanak tanıyan kimliği doğrulanmamış bir yerel dosya ekleme (LFI) hatası olan CVE-2022-47615’tir.
Bu, kimlik bilgilerini, yetkilendirme belirteçlerini ve API anahtarlarını açığa çıkararak daha fazla uzlaşmaya yol açabilir.
Güvenlik açığı, belirli değişkenleri ($template_pagination_path, $template_path ve $template_path_item) düzgün bir şekilde doğrulamayan “list_courses” işlevinde yer alan ve web sitesi için API isteklerini işleyen bir kod parçasında bulunur.
Bir saldırgan, özel hazırlanmış bir API isteği göndererek ve üç değişken için kötü amaçlı değerler kullanarak CVE-2022-47615’ten potansiyel olarak yararlanabilir.
İkinci kritik kusur, potansiyel olarak hassas bilgilerin ifşasına, veri değişikliğine ve rastgele kod yürütülmesine yol açan kimliği doğrulanmamış bir SQL enjeksiyonu olan CVE-2022-45808’dir.
Bu güvenlik açığı, web sitesi için SQL sorgularını işleyen ve sorgu parametrelerindeki “$filter” değişkenini doğru bir şekilde temizlemeyen ve doğrulamayan bir işlevden kaynaklanmaktadır ve bu da bir saldırganın kötü amaçlı kod eklemesine olanak tanır.
Eski LearnPress sürümlerini etkileyen üçüncü kusur, eklentinin iki kısa kodunda (“learn_press_recent_courses” ve “learn_press_featured_courses”) kimliği doğrulanmış bir SQL enjeksiyon hatası olan CVE-2022-45820’dir ve “$args” değişkeninin girişini düzgün bir şekilde doğrulamaz ve temizlemez.
PatchStack, bir ‘Katkıda bulunan’ kullanıcının, hazırlanmış bir gönderide özel olarak hazırlanmış bir kısa kod kullanarak SQL enjeksiyonunu nasıl tetikleyebileceğini gösteren bir kavram kanıtı istismarı sağladı.
Bu güvenlik açığının, kusur riskini sınırlayarak yeni bir blog gönderisi düzenleme veya oluşturma becerisine sahip bir kullanıcı tarafından gerçekleştirilmesi gerekir.
Satıcı, bir izin verilenler listesi sunarak ve güvenlik açığı bulunan değişkenleri temizleyerek veya kullanıcı girişine şablon ekleme özelliğini kaldırarak yukarıdaki sorunları düzeltti.
LearnPress’e güvenen web sitesi sahiplerine, mevcut güvenlik güncellemesini uygulayana kadar 4.2.0 sürümüne yükseltmeleri veya eklentiyi devre dışı bırakmaları önerilir.