-
ACE Veen
KSK
CVE-2026-109218: kleor Contact Manager WordPress Eklentisinde RCE
Zafiyet Özeti
- Zafiyet Tanımı: Arbitrary File Upload (Rastgele Dosya Yükleme) to RCE
- CVE Kodu: CVE-2026-109218
- Etkilenen Yazılım: WordPress - kleor Contact Manager Plugin
- Etkilenen Sürümler: <= 9.1.2 ve altındaki tüm sürümler
- Kritiklik Derecesi: 9.8 CRITICAL (CVSS v3)
- Yetki Gereksinimi: Unauthenticated (Yetkisiz/Ziyaretçi)
Zafiyetin Teknik Analizi (Root Cause) Zafiyet, eklentinin mesaj gönderme/ek ekleme süreçlerini yöneten add_message fonksiyonundaki bir "Blacklist Bypass" mantık hatasından kaynaklanmaktadır. Eklenti geliştiricisi, tehlikeli uzantıları (.php, .phar vb.) engellemek için bir kara liste (blacklist) mekanizması kurmuştur. Ancak saldırganlar bu filtreyi aşmak için Trailing Dot (Sondaki Nokta) tekniğini kullanmaktadır.
1. Kara Liste Bypass: Saldırgan, multipart/form-data isteğinde dosya adını shell.phar. (sonunda nokta olacak şekilde) manipüle eder. Eklentinin uzantı yakalama rutini bu sondaki noktadan dolayı uzantıyı boş string döndürür ve kara listeye takılmadan geçmesini sağlar. 2. WordPress Çekirdek Müdahalesi: Filtreyi aşan dosya ismi, WordPress'in dahili sanitize_file_name() fonksiyonuna gönderilir. Bu fonksiyon işletim sistemi uyumluluğu adına dosyanın sonundaki geçersiz noktayı siler. Sonuç olarak dosya diske temiz bir şekilde shell.phar olarak yazılır. 3. Race Condition (Yarış Durumu): Eklenti normal şartlarda istek sonunda bu dosyayı unlink() ile silmektedir. Ancak dosyanın sunucuda var olduğu o milisaniyelik süreçte (Race Condition penceresi) dosyaya HTTP GET isteği atan saldırgan, Apache (libapache2-mod-php) mimarilerinde PHAR uzantısı PHP olarak yorumlandığı için Uzaktan Kod Çalıştırabilmektedir (RCE).
Savunma ve Önlemler (Mitigation) 1. Acil Güncelleme: Sitemizde veya müşterilerinizin altyapısında bu eklenti kuruluysa derhal v9.1.3 veya daha üst bir sürüme yükseltilmelidir. Geliştirici yeni sürümde uzantı kontrol mantığını düzeltmiştir. 2. Upload Dizininde Yürütme Koruması (.htaccess): Eklentinin dosyaları yüklediği klasör içinde PHP/PHAR çalışmasını engellemek için /wp-content/uploads/ dizinine şu kurallar eklenmelidir:
Code:
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|php8|phar|phps)$"> Order Deny,Allow Deny from all </FilesMatch> <IfModule mod_php.c> php_flag engine off </IfModule>
Code:
(http.request.uri.path matches ".*\.(php|phar|phtml)\..*") or (http.request.body.mime matches ".*\.(php|phar|phtml)\..*")
🔒 Bu içeriği görmek için giriş yapın