Bir milyondan fazla sitede kurulu Duplicator eklentisinde, sıradan bir yorumla tetiklenebilen açık
WordPress'in yaygın yedekleme ve taşıma eklentisi Duplicator'da, giriş yapmamış bir saldırganın sitede bıraktığı bir yorumun, yönetici siteyi taşırken çalışmasına yol açan bir açık bulundu. Ücretsiz sürümde bu, sunucuda komut çalıştırmaya kadar gidiyor. Eski sürümle oluşturulmuş yedek paketler, eklenti güncellendikten sonra da riskli kalıyor.
- 3 dk okuma
- 1 kaynak
Kısaca
- Saldırgan, hazırladığı değeri sıradan bir WordPress yorumuna bırakıyor. Yönetici bu yorumu içeren bir Duplicator paketi oluşturup siteyi taşıdığında, paketteki kurulum programı bu değeri PHP nesnesi olarak çalıştırıyor.
- Duplicator 1.5.17 ve öncesi ile Duplicator Pro 4.6.10 ve öncesi etkileniyor. Wordfence iki sürüm için de 5.0.0 ve sonrasına geçilmesini, eski paketlerle taşıma yapmadan önce yeni paket oluşturulmasını öneriyor. Wordfence'in yazısında açığın saldırılarda kullanıldığına dair bir bilgi yok.
Duplicator, bir WordPress sitesinin dosyalarını ve veritabanını tek bir pakette toplayan ve siteyi başka bir sunucuya taşımayı sağlayan bir eklenti. Paketle birlikte, siteyi yeni yerde yeniden kuran bağımsız bir kurulum programı (installer) da geliyor. Eklenti bir milyondan fazla sitede kurulu.
Wordfence’in tehdit istihbarat ekibi, yapay zekâ destekli araştırma sistemi Wordfence Argus’un yardımıyla Duplicator’da CVE-2026-82814 numaralı bir PHP Object Injection açığı buldu. Açığın CVSS puanı 8.8.
Açığın işleyişi
Bu bir second-order (iki aşamalı) açık. Saldırı bir anda değil, iki ayrı zamanda gerçekleşiyor.
- Bekleyen değer: Giriş yapmamış bir saldırgan, özel hazırlanmış serileştirilmiş (serialized) bir PHP değerini sıradan bir WordPress yorumuna yazıyor. Bu değer, sitede zararsız bir metin gibi bekliyor.
- Paket: Yönetici daha sonra, bu yorumu da içeren bir Duplicator paketi oluşturuyor.
- Taşıma: Yönetici paketi kullanarak siteyi taşıdığında, kurulum programı veritabanındaki eski adresleri yenileriyle değiştiriyor. Bu sırada
DUPX_UpdateEngine::unserializeTest()fonksiyonu, veritabanındaki değeri kontrol etmeden PHP’ninunserialize()fonksiyonuna veriyor ve saldırganın bıraktığı nesne çalışıyor.
Wordfence’e göre sorun, adres değiştirme işleminin serileştirilmiş verileri bozmamak için bu verileri tanımaya çalışmasından kaynaklanıyor. Etkilenen sürümler değeri yalnızca incelemekle kalmıyor, gerçekten çözümlüyor.
İki sürümde farklı sonuç
- Duplicator (ücretsiz): Kurulum programıyla birlikte gelen Requests 1.7 kütüphanesindeki sınıflar birleştirilerek, saldırganın seçtiği bir işletim sistemi komutu doğrudan çalıştırılabiliyor.
- Duplicator Pro: Başka bir yerleşik sınıf üzerinden, saldırganın seçtiği bir dosya silinebiliyor. Wordfence,
wp-config.phpdosyasının silinmesiyle WordPress kurulum ekranının yeniden açılabildiğini gösterdi. Saldırgan kurulum ekranına herkesten önce ulaşır ve kendi kontrolündeki bir veritabanını verirse, siteyi ele geçirip PHP kodu çalıştırabiliyor.
Saldırı, yöneticinin bir paket oluşturup bu paketle taşıma ya da içe aktarma yapmasını gerektiriyor. Saldırganın değeri, paket oluşturulmadan önce bırakmış olması gerekiyor.
Yama süreci
Wordfence açığı 30 Ağustos’ta buldu ve 31 Ağustos’ta geliştiriciye bildirdi. Geliştirici 2 Eylül’de raporu aldığını doğruladı, 8 Eylül’de Duplicator 5.0.0’ı yayımladı ve 25 Eylül’de bu sürümün düzeltmeyi içerdiğini bildirdi. Wordfence’in ücretli kullanıcıları 15 Ekim’de açığa özel bir güvenlik duvarı kuralı aldı. Ücretsiz kullanıcılar bu kuralı 14 Kasım’da alacak.
Eski paketler sorun
Eklentiyi güncellemek, daha önce oluşturulmuş paketleri yeniden oluşturmuyor. Wordfence’e göre eski bir paket sadece depolandığı için açığı tetiklemiyor. Ancak içinde, onu oluşturan eski sürümün kurulum programını taşıyor. Bu paketle standart bir taşıma ya da içe aktarma yapılırsa, eski ve açık barındıran kod yeniden çalışabiliyor.
Önerilen önlemler
- Duplicator ve Duplicator Pro’yu 5.0.0 ya da daha yeni bir sürüme güncelleyin.
- Eski bir sürümle oluşturulmuş bir paketle taşıma ya da içe aktarma yapmadan önce, mümkünse güncel sürümle yeni bir paket oluşturun.
- Artık ihtiyaç duyulmayan ve herkese açık konumda duran bağımsız kurulum (installer) dosyalarını sunucudan kaldırın.
Kaynaklar
Bu konuda
- KritikYeni
Zafiyet · 4 dk
Citrix NetScaler'da 28 açık kapatıldı, biri varsayılan kurulumları da etkiliyor
- YüksekYeni
Zafiyet · 3 dk
PostgreSQL'de 52 açık kapatıldı, PostgreSQL 14'ün desteği sona erdi
- KritikYeni
Zafiyet · 2 dk
Chrome 157 güncellemesi beşi kritik 83 güvenlik açığını kapattı