WordPress Eklentilerinin kullanımı güvenli midir?
Yayınlanan: 2020-04-16Yıllar içinde yapılan araştırmalar, en popüler 50 WordPress eklentisinin %20'sinden fazlasının yaygın Web saldırılarına karşı savunmasız olduğunu tespit etti. Ayrıca, e-ticaret eklentilerine yönelik hedefli bir araştırma, en popüler 10 e-ticaret eklentisinden 7'sinin güvenlik açıkları içerdiğini keşfetti. Ne yazık ki, bilgisayar korsanları genellikle sağlık kayıtları ve finansal ayrıntılar gibi hassas bilgilere erişmek için bu savunmasız uygulamalardan yararlanır. Diğer durumlarda, güvenlik açıkları, bilgisayar korsanlarının siteleri tahrif etmesine veya onları saldırgan tarafından kontrol edilen diğer sitelere yönlendirmesine olanak tanır.

Daha yakın zamanlarda, kötü niyetli WordPress eklentilerinin yalnızca güvenliği ihlal edilmiş sunuculara erişimi sürdürmek için değil, aynı zamanda kripto para madenciliği yapmak için de kullanıldığını gördük. Bu, WordPress eklentilerinin ne kadar güvenli olduğu sorusunu gündeme getiriyor.
Bu blogda, potansiyel güvenlik ihlali kaynakları olarak WordPress Eklentilerine derinlemesine odaklanacağız.
Eklenti tabanlı Web Geliştirme.
Genel olarak konuşursak, WordPress, Web'in %30'undan fazlasına güç sağladığı için dünyadaki en popüler İçerik Yönetim Sistemidir (CMS).
Bununla birlikte, WordPress'in temel gücü, on binlerce eklenti ve temadan oluşan kapsamlı teklifiyle sitelerin özelleştirilmesine izin verme yeteneğinde yatmaktadır. Bu eklentiler, siteye bir iletişim formu eklemekten SEO için bir blogu optimize etmeye ve hatta Facebook'ta otomatik olarak yeni gönderiler yayınlamaya kadar tür ve işlevsellik bakımından farklılık gösterir.
Üçüncü Taraf Geliştirme.
Eklenti tabanlı geliştirmenin arkasındaki ana fikir, bir sistemin temel yeteneklerini genişletmek için ek özellikler sunmaktır. Esasen, uygulamanın çekirdeği tipik olarak bir dizi uzun vadeli geliştirici tarafından korunurken, üçüncü taraflar uygulamanın çekirdeği etrafında bir dizi eklenti oluşturur.
Bu süreç, hem uygulama sağlayıcısı hem de eklenti sağlayıcısı için faydalıdır, çünkü uygulama sağlayıcısı temel işlevselliğe daha fazla odaklanabilirken, eklenti sağlayıcısı, uygulamanın temel işlevselliği tarafından sağlanan eklentinin altyapısı hakkında endişelenmek zorunda değildir. Genel olarak WordPress, binlerce ticari ve açık kaynaklı yazılım geliştiricisi ve meraklısından oluşan küresel bir topluluk tarafından da desteklenir.
Güvenlik Yönergesi Yok
Genel olarak, bazı kodlama standartları ve önerileri mevcut olsa da, teknik olarak bir eklenti geliştiricisinin kesinlikle uyması gereken güvenlik yönergeleri veya standart gereksinimler yoktur. Bu, bir eklentideki bir güvenlik açığının milyonlarca web sitesine yayılabileceği anlamına gelir.
Ve WordPress yaygın olarak kullanıldığı için saldırılar için popüler bir hedeftir. Bu nedenle, özünde, bir eklentinin güvenlik açığından yararlanan bir bilgisayar korsanı binlerce siteye bulaşabilir. Birçok blog yazarı tarafından zaten tanık olunan bir senaryo.
Ne yazık ki, eklentiyle ilgili güvenlik açıkları da yinelenen, kötüye kullanılabilir ve tespit edilmesi zor olma eğilimindedir. Bu nedenle, ilgili güvenlik tehditlerini azaltmak için bu tür güvenlik açıklarını daha fazla anlamaya ihtiyaç vardır. Daha derine inelim, olur mu?

WordPress Gerçekten Güvenli mi?
Her şeyden önce, bu soruyu cevaplayalım. Çoğunlukla, ham bir eko sistem olarak WordPress, en iyi WordPress güvenlik uygulamalarına bağlı kalındığı sürece çok güvenlidir. Ortalama olarak, web'de her gün yaklaşık 30.000 yeni web sitesi saldırıya uğruyor. Bu bilgisayar korsanları, eklenti güvenlik açıkları, zayıf şifreler ve eski yazılımlar nedeniyle WordPress web sitelerini hedefleme eğilimindedir. Bu nedenle, en iyi güvenliği elde etmek, bir düzeyde kasıtlılık gerektirir; bu, saldırıya karşı savunmasızlığınızı azaltmak için birkaç temel WordPress güvenlik en iyi uygulamasını izlemek anlamına gelir.
Devamını Okuyun: WordPress Web Sitenizi Yüksek Trafik için Ölçeklendirmenin 11 Etkili Yolu
Bu Güvenlik Açıkları nereden geliyor?
wpscan.org tarafından yakın zamanda yayınlanan bir rapor, WordPress'in yaklaşık 4.000 bilinen güvenlik açığına sahip olduğunu ortaya koydu. Bu güvenlik açıklarının büyük çoğunluğuna eklentiler neden oldu. Eklentiyle ilgili bu güvenlik açıklarından bazıları ciddi sonuçlara yol açsa da, birçoğu düzeltilmeden önce yıllarca fark edilmeden kalır. Çoğu durumda, kaynak kodlarında küçük ve yerelleştirilmiş değişikliklerle genellikle düzeltilebilirler.
Ancak, kendimizi aşmadan önce, bir adım geriye gidelim.
Eklentiler nedir?
Temel olarak eklentiler, uygulamaları yeni özel olarak tasarlanmış işlevsellik ve davranışla tamamlayan yazılım uzantılarıdır. Özellikle WordPress, binlerce özelleştirilmiş web uygulaması oluşturmak için kullanılmış binlerce eklenti (52.000'den fazla) sunar.
Eklenti tabanlı web uygulamaları daha yaygın hale geldiğinden, daha fazla geliştirici dikkatlerini farklı eklentileri en son işlevlerle oluşturarak, yapılandırarak ve genişleterek web uygulamalarını yeniden tasarlama potansiyellerini keşfetmeye yöneltti.
Eklenti Geliştirmenin Etkileri
Bununla birlikte, web sistemlerini ek ve özel işlevlerle genişletmek için eklentilerden yararlanma yeteneğinin geliştiriciler için hem olumlu hem de olumsuz etkileri vardır. İlk olarak, olumlu bir not olarak, normalde aralarından seçim yapılabilecek birden fazla özelleştirme seçeneği vardır ve bu da geliştiricilere kullanıcıların ihtiyaçlarına göre özel olarak tasarlanmış web uygulamalarını hızlı ve kolay bir şekilde oluşturma yeteneği verir. Böylece hızlı prototipleme ve geliştirmeyi kolaylaştırır.
Bununla birlikte, olumsuz tarafta, bir web uygulaması, farklı kaynaklardan gelen birden çok eklentinin karmaşık bir bileşimi haline gelebilir. Bu da sonuçta eklentilerin güvenliği ile ilgili endişeler doğurur. Örneğin, milyonlarca WordPress tabanlı uygulama tarafından kullanılan bir eklenti olan TimThumb'un, saldırganların kasıtlı olarak uzaktan kod çalıştırabileceği bir istismara açık olduğu bildirildi.
Nitekim, Amerika Birleşik Devletleri Ulusal Güvenlik Açığı Veritabanına (NVD) göre web sistemlerindeki güvenlik açıklarının kabaca %15'i kritik olarak kabul edilebilir ve bunların yaklaşık %35'i kolayca istismar edilebilir güvenlik açıklarıdır.
Ele Geçirilmiş Eklentilerin Sonuçları Nelerdir?
Kullanıcıların finansal bilgilerini kaybetmesinin ve hatta sağlık kayıtlarının tehlikeye girmesinin yanı sıra, bir güvenlik açığı ne kadar ciddi olursa, yazılım şirketleri üzerindeki finansal etki o kadar büyük olur. Ek olarak, geliştiriciler açıklama sırasında uygun bir yol yayınlayamazlarsa bu durum daha da kötüleşir. Bu nedenle, eklenti satıcıları genellikle daha güvenli uygulamalar oluşturmaya çalışırlar.
Şimdi, sonuçları ve etkileri hakkında daha geniş bir anlayış elde etmek için eklentilerde tipik olarak bulunan bazı güvenlik açıklarını inceleyelim.
Güvenlik Açıkları
Topladığımız gibi, güvenlik açıkları, yazılım sistemlerinin olası kötüye kullanımı için fırsatlar yaratır. Sonuç olarak, WordPress dünya çapında milyonlarca geliştiricinin kendi eklentilerini oluşturmasına izin verdiğinden, eklentilerde bir düzeyde uzlaşma olmasını beklememek gerçekçi değildir.
Sonuç olarak, güvenlik, çekirdek sistemle beklenmedik eklenti etkileşimleri tarafından ihlal edilebilir ve bu da saldırganlar tarafından potansiyel olarak yararlanılabilecek güvenlik açıklarına yol açabilir. Bu, web sistemlerinin güvenliğinin hem çekirdek sistemi hem de eklenti güvenlik açıklarını kontrol altında tutmaya bağlı olduğu anlamına gelir.
WordPress Karmaşıklığı
WordPress'in karmaşıklığı nedeniyle, bazen güvenlik açıklarından rahatsız olma eğilimindedir. Örneğin, WordPress, paylaşılan küresel durumu değiştirerek veya sistem çekirdeğinin yürütülmesinde belirli bir noktada bir işlevi çalıştırarak eklentilerin yeni özelliklere katkıda bulunabileceği sezgisel bir altyapı sağlar. Sonuç olarak, eklenti, uygun temizleme veya giriş doğrulaması olmadan çekirdek bileşenlere kötü amaçlı girdi verileri gönderdiğinde bir eklenti güvenlik açığı ortaya çıkabilir.
Eklenti Güvenlik Açıklarına Örnekler
Sonuç olarak, en yaygın eklenti güvenlik açıkları siteler arası komut dosyası çalıştırma, SQL Enjeksiyon ve Siteler Arası İstek Sahteciliğidir. Genel olarak, saldırganlar tarafından kolayca yararlanılabilecek en tehlikeli güvenlik açığı türü SQL Injection'dır. Ancak, diğer güvenlik açıkları, ihlal kaynakları ve uzlaşmalar mevcuttur, yani:
- Veri İşleme Hataları
- Yanlış Giriş Doğrulaması
- Bilgiye Maruz Kalma
- Yol Geçişi
- Güvenlik özellikleri
- Erişim Kontrolleri
- Yanlış Erişim Kontrolü
- Uygunsuz Yetkilendirme
- Yanlış Kimlik Doğrulama
- Siteler Arası İstek Sahteciliği
- Sınırsız Dosya Yükleme
- Harici Tarafların Erişebileceği Dosyalar
- Bağlantı İzleniyor
- Yönlendirmeyi Aç
- Komut Enjeksiyonu
- İşletim Sistemi Komut Enjeksiyonu
- Siteler Arası Komut Dosyası Çalıştırma
- SQL Enjeksiyonu
- Kod Enjeksiyonu

Daha fazla bağlam için en yaygın saldırı ve güvenlik açıklarını inceleyelim.
- · SQL Enjeksiyonu: SQL enjeksiyonları genellikle bir saldırgan bir kullanıcının WordPress veritabanına ve web sitesinin tüm verilerine erişim kazandığında gerçekleşir. SQL enjeksiyonları, kötü amaçlı veya spam web sitelerine bağlantılar dahil olmak üzere bir veritabanına yeni veriler eklemek için de kullanılabilir.
SQL enjeksiyonları, hassas bilgilerin çıkarılması gibi arka uç sunucuda komutların yürütülmesine izin verir. Barındırılan bir ortamda, bir SQL Injection saldırısı, savunmasız olmayan sitelere yönelik saldırılar için bir atlama taşı olarak kullanılabilir.
- · Siteler Arası Komut Dosyası Oluşturma: Bu saldırı, erişim kontrollerini atlamak için istemcide bir komut dosyasının çalıştırılmasına izin verir. Genellikle bir sitenin tüm ziyaretçilerini hedefler. Barındırılan bir ortamda, bu tür bir saldırı, site yöneticisinin oturum çerezlerini çalmak için kullanılabilir ve saldırganın yönetici olarak poz vermesine olanak tanır.
- · Siteler Arası İstek Sahteciliği: Bu güvenlik açığı, bilgisayar korsanının kurban adına uygulama düzeyinde bir işlem gerçekleştirmesine olanak tanır. Barındırılan bir ortamda, bir saldırgan yönetici adına siteye giriş yapabilir ve kullanıcıları yeniden yönlendirmek veya yönetici işlemleri gerçekleştirmek gibi kötü niyetli faaliyetler gerçekleştirebilir.
WordPress eklentilerinde yaygın olan, siteler arası komut dosyası çalıştırma güvenlik açıkları şu şekilde çalışır - bir saldırgan, güvenli olmayan JavaScript komut dosyaları içeren web sayfalarını yüklemek için bir kurban bulmanın bir yolunu bulur.

Çoğu güvenlik açığı nerede ortaya çıkıyor?
Teknik bir çalışma, çoğu güvenlik açığının (yaklaşık %92) eklenti kodunda göründüğünü keşfetti. Ayrıca sonuçlara göre, Siteler Arası Komut Dosyası Çalıştırma ve Siteler Arası İstek Sahteciliği gibi güvenlik açıkları eklenti kodunda daha yaygınken, diğer güvenlik açıkları çekirdek kodda daha yaygındı. Buna bağlı olarak, çalışma, eklentilerin kalitesinin değiştiğini ve eklentilerin derecelendirmeleri ile onlarda bulunan güvenlik açıklarının sayısı arasında bir ilişki olmadığını ortaya koydu.

PHP Kod Yazma Süreci
Kod yazma işlemi, herhangi bir güvenlik açığının veya uzlaşmanın başlangıcı olabilir. Genel olarak konuşursak, PHP, ana bilgisayar işletim sistemini doğrudan çağırmadan sunucu tarafında rastgele kod yürütülmesini desteklemesiyle tanınır. Bununla birlikte, geliştiriciler kod yazma işlemi sırasında ihmal ettiklerinde, Siteler Arası Komut Dosyası güvenlik açıklarının eklenti koduna girme olasılığını artırır.
Öte yandan, SQL Injection ile ilgili olarak, kolayca tespit edilip yararlanılabildiği için yaygın bir güvenlik açığıdır. İronik olarak, küçük bir kullanıcı tabanına sahip bir web sitesinin bile SQL Injection saldırısı girişimine maruz kalması muhtemeldir.
Güvenlik açıklarına maruz kalmanın bir kısmı, güvenli olmayan kaynakları kullanan geliştiricilerden kaynaklanmaktadır. Benzer şekilde, uygun giriş doğrulama, eklenti geliştiricileri için hala büyük bir zorluktur, çünkü yakın zamanda geliştirilen eklentilerin çoğu, çok yetenekli olmayan geliştiriciler tarafından oluşturulmuştur.
WordPress Eklentilerinin neden olduğu güvenlik açıkları kritik midir?
Her şey düşünüldü; bir güvenlik açığı web sistemini çeşitli şekillerde olumsuz etkileyebilir. Örneğin, bir güvenlik açığından başarılı bir şekilde yararlanılması, kullanılabilirlik kaybı olmaksızın gizliliğin tamamen kaybolmasına neden olabilir.
Belirtildiği gibi, SQL Injection, sistemin bütünlüğünü, kullanılabilirliğini ve gizliliğini yalnızca kısmen etkilemesine rağmen, en tehlikeli güvenlik açığı türü gibi görünmektedir. Ancak, böyle bir güvenlik açığı, saldırganların dosyalara veya bilgilere sınırsız erişime izin verme potansiyeline sahiptir.
Bu nedenle, yanlışlıkla, güvenlik açıklarının çoğu veri ihlallerine yol açma potansiyeline sahipken, birkaç güvenlik açığı mutlaka web uygulamasını ciddi güvenlik risklerine maruz bırakmaz. Her iki durumda da, bu tür oranlarla risk almaktan kaçınmak önemlidir.
Bir WordPress eklentisinin kodunda bir güvenlik açığı ne kadar süre hayatta kalabilir?
Normalde, koddaki güvenlik açıkları, girişten, ifşadan geçene kadar, güvenlik tehdidini düzelten bir yamanın yayınlanmasına kadar farklı durumlar arasında geçiş yapma eğilimindedir.
Tipik olarak, keşfeden kişi güvenlik tehdidinin ayrıntılarını daha geniş bir kitleye ifşa ettiğinde bir güvenlik açığı ifşa edilir. Sonunda, geliştirici, temeldeki güvenlik tehdidini düzelten bir yama yayınladığında güvenlik açığı giderilir. Bununla birlikte, bazen bir web uygulamasında bir güvenlik açığı, tespit edilip düzeltilmeden önce yıllarca fark edilmeden kalır.
Olası Azaltmalar ve Tespit Yöntemleri
Önleme, çoğu insanın söylediği gibi tedavi etmekten daha iyidir. Bu nedenle, eklenti geliştiricileri Siteler Arası Komut Dosyası Çalıştırma, SQL Enjeksiyon ve Siteler Arası İstek Sahteciliğini tam olarak anlayabilir, algılayabilir ve ortadan kaldırabilirse, %75 daha az güvenlik açığı olan eklentilere sahip olmamız olasıdır.
Ancak bu üç güvenlik açığının saldırganlar tarafından istismar edilebilecek tek güvenlik açığı olmadığını belirtmekte fayda var. Daha ziyade, en yaygın güvenlik açıklarıdır.
Dolayısıyla, önerilen bu azaltma stratejileri, belirli bir eklentinin tamamen güvenli olacağını garanti etmese de, güvenlik açığı önleme için iyi ilkeler belirler. Örneğin:
- Verilerin nasıl kullanıldığını ve WordPress'in temel bölümleri tarafından beklenen kodlamayı anlayın. Bu durumda, geliştiriciler her zaman tüm girdileri kötü amaçlı olarak kabul etmeli ve gerekli kodlama modeline tam olarak uymayan tüm girdileri reddetmeli veya geçerli bir girdiye dönüştürmelidir.
- Veritabanlarını SQL Injection'dan korumak için geliştiriciler, kodu veri manipülasyonundan ayırarak parametreli SQL ifadeleri kullanmalıdır. Ayrıca, isteğin aynı kaynaktan olup olmadığını doğrulamak için her zaman üstbilgileri kontrol edin. Ayrıca, verilerin kimliği doğrulanmamış saldırganlara ifşa edilmesini önlemek de yararlı olabilir.
- Durum değişikliğini tetikleyen herhangi bir istek için GET yönteminden kaçınmak iyi bir uygulamadır.
Güvenlik Açığı Tespiti
Ne yazık ki, %100 doğruluk ve kapsama ile en yaygın kod zayıflıklarını tespit etmek için tutarlı bir yöntem yoktur. Ne yazık ki, Siteler Arası Komut Dosyasını algılamak için veri akışı analizini kullanan modern teknikler bile bazen yanlış pozitifler verir.
Buna karşılık, kod incelemeleri gibi manuel analiz yöntemleri, özellikle tasarımla ilgili güvenlik açıkları için tam otomatik yöntemlerden daha etkili olma eğilimindedir. Örnek olarak, Siteler Arası İstek Sahteciliğini otomatik yöntemler kullanarak güvenilir bir şekilde tespit etmek özellikle zordur, çünkü her uygulamanın kendi güvenlik politikası ve hangi isteklerin kullanıcının istekte bulunma niyetinde olduğuna dair güçlü bir güven gerektirdiğini belirtme şekli vardır.
Bununla birlikte, diğer yandan, sınırlı zaman kısıtlamaları içinde istenen kod kapsamını elde edemese de manuel analiz, SQL Injection'ı bulmak için faydalı olabilir. Saldırı yüzeyi aşırı büyük olabileceğinden, tüm girdiler için dikkate alınması gereken zayıflıklar için bu zor olabilir.
Sonuç olarak, bazı kuruluşlar, web sistemi geliştirme sürecinin tüm aşamalarını kapsayan hem manuel incelemeleri hem de otomatik analizleri içeren dengeli bir yaklaşımın önemini vurgulamaktadır.
WordPress Uygulamanızı Korumak için En İyi Uygulamalar
- Eklentileri yalnızca WordPress.org gibi saygın kaynaklardan indirin : Herkes bir WordPress eklentisi geliştirebildiğinden, bilgisayar korsanları kötü niyetli eklentilerini gizlemek için bu güvenlik açığından yararlanır. Saygın bir pazar yeri, zararsız eklentilere erişimi tam olarak garanti etmeyebilir, ancak hafifletici bir uygulama olarak önerilir.
- Her zaman tüm eklentilerinizin güncel olduğundan emin olun: WordPress kullanıcıları genellikle genellikle görmezden geldikleri bildirim e-postaları alırlar. Eklentilerinizi otomatik olarak güncellenecek veya en azından kendiniz manuel olarak yükseltecek şekilde ayarladığınızdan emin olun.
- Eklentiyi güvenlik sorunları için tarayarak güvenlik durumunu doğrulayın: Çoğu eklenti açık kaynaklıdır, bu da kaynak kodlarının mevcut olduğu anlamına gelir. Bu nedenle, size eklentinin “sağlık faturasını” sağlayacak statik bir kaynak kodu analiz aracı kullandığınızdan emin olun. Hatta bazı gelişmiş tarayıcılar size en uygun ve en hızlı düzeltme önerilerini sunabilir.
- Kullanılmayan tüm eklentileri kaldırın: Ne yazık ki, eski, kullanılmayan eklentilerin kodu, eklentiler etkin olmadığında bile genellikle sunucuda kalır. Bu nedenle, WordPress site bakımınızın bir parçası olarak kullanılmayan eklentileri her zaman kaldırdığınızdan emin olun.
Eklenti Geliştiricileri için Öneriler
- Eklenti geliştirme sırasında güvenliği her zaman dahil edin: Güvenlik açıklarının daha sonra düzeltilmesi daha yüksek bir maliyete neden olur, bu nedenle, güvenliği her zaman güvenli Yazılım Geliştirme Yaşam Döngüsü (SDLC) sürecinizin bir parçası olarak eklenti geliştirmesine entegre edin.
- En son güvenlik standartlarına uygun olduğundan emin olmak için eklentiyi bir kod tarayıcı aracılığıyla çalıştırın. Geliştirme sırasında ve piyasaya sürülmeden önce kapsamlı bir kaynak kodu analizi testi gerçekleştirdiğinizden emin olun.
Güvenli Eklentiler Geliştirme
Belirtildiği gibi, eklenti geliştiricilerinin güvenli kod yazmak için çaba göstermesi gerekir. Ne yazık ki, pek çok geliştirici henüz çok yetenekli olmadıkları için nasıl yapılacağını bilmiyor. Özellikle, yukarıda belirtilen en yaygın güvenlik açıklarının doğası göz önüne alındığında, birçok geliştiricinin yaygın saldırıları, kullandıkları dil ve platform tarafından sağlanan güvenlik işlevlerini ve güvenlik sorunlarını azaltmak için uygulanabilir uygulamaların nasıl kullanılacağını anlamadığı açıktır.
Bu nedenle, Creole Studios'taki önerimiz, eklenti geliştiricilerine göre uyarlanmış yeni metodolojilerin geliştirilmesi gerektiğidir. Geliştiriciler yazılım güvenliğindeki en önemli varlıklar olduğundan, bu tür metodolojiler gereksinimlerde ve tasarım aşamalarında güvenliği teşvik etmelidir.
Son düşünceler
Konuyu özetlemek gerekirse, en yaygın güvenlik açıkları Siteler Arası Komut Dosyası Çalıştırma, SQL Enjeksiyon ve Siteler Arası İstek Sahteciliği ile WordPress Eklentilerinin güvenliği ihlal edilebilir.
Ne yazık ki araştırmalar, bu güvenlik açıklarının oluşma sıklığının zamanla azalmadığını gösteriyor. Bunun ana nedeninin, çoğu WordPress eklenti geliştiricisinin güvenli programlama konusunda biraz yetersiz kalması olduğunu varsaymak güvenlidir.
Bununla birlikte, ilk savunma hattı geliştirme ekibi olmalıdır! Ve en iyi güvenlik uygulamaları hayata geçirildiğinde, kullanıcıların siber suçlulardan korunduklarını bilerek geceleri daha iyi uyuyabileceklerine inanıyoruz.
WordPress güvenlik uygulamalarımız hakkında daha fazla bilgi için lütfen bir danışma için iletişime geçin.