Geçtiğimiz hafta WordPress‘in en çok kullanılan mail işlemcisi eklentisi olan Easy WP SMTP‘nin yapmış olduğu bir güncelleme çok önemli bir güvenlik açığına neden oldu. WordPress’in paylaştığı verileri göre 300,000 site tarafından aktif olarak kullanılmakta olan bu eklentinin 1.3.9 sürümünde meydana gelen güvenlik açığı bir çok internet sitesini etkilemiştir.
Blog yazımda bahsedeceğim bu güvenlik açığı eklentinin 1.3.9 sürümünde mevcuttur ve acilen eklentiyi 1.3.9.1 sürümüne güncellemenizi şiddetle tavsiye ederim.Eğer ki eklentiyi henüz güncellemediyseniz saldırganlar aktif olarak bu güvenlik açığını kullanarak sitelere zarar vermektedirler. Eğer sizin sitenizde bu açıktan dolayı zarar görmüşse, blog yazımda o zararı nasıl gidereceğinizi, nasıl önlem alabileceğinizi anlatacağım. Bu güvenlik açığından henüz etkilenmediyseniz, eklentinizi mutlaka son sürüme güncelleyin.
Easy WP SMTP eklentisi bildiğiniz üzere sitenizde mail işlemlerinin sorunsuz bir şekilde işlemesine olanak sağlayan bir eklentidir. Blogunuza yeni bir yorum geldi bunu size mail ile ulaştırıyor. Kullanıcınızın bir yorumunu onayladınız mı bu onay bilgisini kullanıcıya mail yoluyla iletiyor eklentin amacı bu. Bunları gerçekleştirebilmesi için bir takım yetkiler ve izinlere ihtiyaç duyuyor.
Gerekli yetkileri ve izinleri eklentiyi aktif ettiğiniz de kısmen vermiş oluyorsunuz ancak eklentinin ayarlarını yapılandırmanız lazım bunu yaptığınız da eklentiye bir takım verilerinizi görebilmeyi (örneğin; yorum yapan kullanıcının mail adresini), bu verileri okuma ve değiştirme yetkisini veriyorsunuz.
Eklentinin en son sürümünden önce ki sürüm olan 1.3.9’da işte bu yetkilendirme konusunda bir güvenlik açığı meydana geldi. Verileri okuma/alma ve ekleme gibi bir takım işlemleri yapan ve bunları belli yetkilendirme komutları gerçekleştiren ayarlarda yetkilendirme hatası yapıldı.
Yapılan bu hatadan dolayı yetkisi olmayan bir kişi/robot ayarlarınızı okuyabiliyor, değiştirebiliyor ve hatta yerine yenilerini ekleyebilir hale geldi. Bu sadece Easy WP SMTP eklentisi için geçerli değil WordPress admin panelinizde ki tüm eklentilere yapabilme potansiyeline sahip oldu.
Güvenlik açığının temeli Easy WP SMTP eklentisinin 1.3.9 sürümünde revize edilen ekleme/çıkarma işlevlerini yerine getiren admin-init fonksiyonunda yapılan yetkilendirme hatasından kaynaklanıyor. Bu fonksiyon wp-admin/ klasöründe bulunan admin-ajax.php ve admin-post.php dosyalarıyla ilişkili olduğundan ötürü sadece eklentiyi etkilemiyor diğer eklenti ve WordPress dosyalarını da ekleme/çıkarma yapılmasına olanak sağlıyor.
Eklentinin 1.3.9 sürümünde revize edilen ve güvenlik açığının oluşmasını sağlayan kod satırı;
$is_import_settings = filter_input( INPUT_POST, 'swpsmtp_import_settings', FILTER_SANITIZE_NUMBER_INT );
if ( $is_import_settings ) {
$err_msg = __( 'Error occurred during settings import', 'easy-wp-smtp' );
if ( empty( $_FILES[ 'swpsmtp_import_settings_file' ] ) ) {
echo $err_msg;
wp_die();
}
$in_raw = file_get_contents( $_FILES[ 'swpsmtp_import_settings_file' ][ 'tmp_name' ] );
try {
$in = unserialize( $in_raw );
if ( empty( $in[ 'data' ] ) ) {
echo $err_msg;
wp_die();
}
if ( empty( $in[ 'checksum' ] ) ) {
echo $err_msg;
wp_die();
}
if ( md5( $in[ 'data' ] ) !== $in[ 'checksum' ] ) {
echo $err_msg;
wp_die();
}
$data = unserialize( $in[ 'data' ] );
foreach ( $data as $key => $value ) {
update_option( $key, $value );
}
set_transient( 'easy_wp_smtp_settings_import_success', true, 60 * 60 );
$url = admin_url() . 'options-general.php?page=swpsmtp_settings';
wp_safe_redirect( $url );
exit;
Yukarıda ki kodu incelediğimiz de ilk satırda bulunan işlem bir POST metodur ve bu post metodu çalıştığında, yani bir gönderme işlemi yapıldığında swpsmtp_import_settings fonksiyonu devreye giriyor ve fonksiyonda ise bir filtreleme uygulanıyor bu filtreleme de döndürülen bilgi eğer 1 olursa bir içe aktarmanın gerçekleştiği varsayılıyor ve bir diğer fonksiyon olan swpsmtp_import_settings_file çalıştırılıyor, bu fonksiyona gelen istekler ise bir request (istek) paketi haline getirilip, update_option fonksiyonu çalıştırılıyor. Kısaca eklentinin ayarları güncelleme işlemi devreye giriyor.
İşte işin alengirli tarafı burada başlıyor. İlk olarak, ve en önemlisi, bu işlemler sırasında hiçbir yetkilendirme kontrolü yapılmıyor olması, bu nedenle bir saldırganın bu işlemi yetkisiz bir şekilde yapabilmesine olanak sağlanmış oluyor. Bu aşamayı geçen saldırgan WordPress’in ayarları güncellemek için kullandığı yöntem olan AJAX görevini devreye sokarak, yetkilendirme sıkıntısı olmadığı için güncelleme işlemini eklentinin dışına çıkartabilir yani WordPress daha ne olduğunu anlamadan sitede ki bir başka ayarı REST api üzerinden rahatlıkla geçirtip, ayarları güncelletebilir.
WordPress bütün ayar yapılarını veritabanında wp-options tablosunda tutmaktadır. Bu tabloda bir işlem yapabilmek için en az Editör yetkisine sahip olunması gerekiyor ancak oluşan bu güvenlik açığından dolayı saldırgan herhangi bir yetkiye ihtiyaç duymadan ve hatta wordpress admin panelinde oturum açmasına bile gerek kalmadan wp-options tablosuna erişebiliyor ve bu tabloda değişiklik yapabilecek konuma gelebiliyor. Aktif olarak şu anda saldırganların kullandığı açıkta tam da budur.
Güvenlik açığını olabildiğince sadeleştirip aktarmaya çalıştım. Eğer ki, bu güvenlik açığından etkilenmişseniz ve sitenizde bu açıktan dolayı oluşan bir aksama var ise bu aksalıkları aşağıda ki adımları takip ederek yerine getirebilirsiniz;
Saldırganlar sitenizde bu güvenlik açığından faydalanarak ftp dosyalarınıza da erişim sağlayabiliyor ve değişiklik yapabiliyorlar ve rapor edilen bilgilere göre en çok site kök dizinin de bulunan ve tema dosyalarında bulunan index.php dosyasına aşağıda ki internet sitelerinin bağlantıları girilmiş;
Bu sitelere ait bir takım kod satırları da eklenmektedir bu kod satırı ise ;
<script type='text/javascript' async src='https://setforspecialdomain[.]com/in2herg42t2?type=in2&frm=scr&'></script>
Yukarı da ki sitelere ve kodlara benzer site ve kodlar var ise temanız da ve kök dizinde bulunan index.php dosyasından bu kodları ve siteleri kaldırın.
Bütün bu adımları sırasıyla yerine getirdiğinizde bu güvenlik açığından sitenizi arındırmış olacaksınız.
Yazı Bağlantısını Kopyala & Paylaş
Bu yazıya şimdiye kadar 4 Yorum yapılmıştır.
bilgilendirme için teşekkürler, eklentiyi otomatik olarak güncellenmişti benim ancak yine de kontrollerimi yaptım, sıkıntı yok gibi teşekkürler.
Rica ederim 🙂
Bir site üzerinden o siteye bağlı 15 farklı siteme bulaşmış. Hepsini tek tek düzeltmek günlerimi alacak. Teşekkürler paylaşım için.
FTP dosyalarınızı da dikkatli şekilde kontrol edin, açık bir kapı bırakmış olabilir, bilmediğiniz,yabancı ve şifreli php dosyaları veya js dosyaları var ise derhal temizleyin. Geçmiş olsun, kolay gelsin.
Bir Cevap Yaz