Bir açık kaydında “Contributor-level access” ya da “authenticated attackers with Subscriber-level access” yazıyorsa, açığı kullanmak için saldırganın sitenizde en az o rolde bir hesabı olması gerekir. Bu tek satır, açığın sizin sitenizde ne kadar gerçek bir tehlike olduğunu çoğu zaman puandan daha iyi anlatır. Son 12 ayda (20 Ekim 2026 itibarıyla) yayımlanan 6.630 WordPress kaydının yaklaşık yarısı hiçbir hesap gerektirmiyor; diğer yarısı ise belirli bir rol istiyor. Hangi rolün ne yapabildiğini bilmek, bu ikinci yarıyı doğru okumanın yolu.
Varsayılan roller, WordPress’in kendi tanımıyla
WordPress belgelerinde tek sitelik bir kurulumdaki beş rol şöyle tanımlanır:
- Yönetici (Administrator): tek bir sitedeki tüm yönetim özelliklerine erişimi olan kişi.
- Editör (Editor): başkalarının yazıları dahil yazıları yayımlayıp yönetebilen kişi.
- Yazar (Author): kendi yazılarını yayımlayıp yönetebilen kişi.
- Katkıcı (Contributor): kendi yazılarını yazıp yönetebilen ama yayımlayamayan kişi.
- Abone (Subscriber): yalnız kendi profilini yönetebilen kişi.
Çoklu site (multisite) kurulumlarında bunların üstünde bir de Süper Yönetici vardır. Yeni kullanıcıların hangi rolle açılacağı Ayarlar › Genel sayfasında seçilir.
Rolleri ayıran ayrıntılar yetenek (capability) tablosunda. İki tanesi açık okurken işe yarar. Birincisi upload_files: ortam dosyası yükleme yeteneği yönetici, editör ve yazarda var, katkıcıda yok. İkincisi unfiltered_html: sayfa ve yazılara HTML, hatta JavaScript ekleyebilme yeteneği. Tek sitelik kurulumda yönetici ve editörde var; çoklu sitede yalnız süper yöneticide.
Kayıtlarda roller ne sıklıkla geçiyor
Sitedeki her kayıtta gösterdiğimiz rol etiketini, önce kayıt metnindeki rol ifadesinden, yoksa CVSS vektöründeki “gereken yetki” (PR) harfinden çıkarıyoruz. Son 12 ayın dağılımı:
| Gereken rol | Kayıt payı | En sık açık türü |
|---|---|---|
| Hesap gerekmiyor | yaklaşık %49 | çeşitli |
| Abone | yaklaşık %20 | eksik yetki kontrolü |
| Katkıcı | yaklaşık %16 | kalıcı XSS |
| Yazar | %3 | XSS |
| Editör | %1 | XSS |
| Yönetici | yaklaşık %10 | XSS, SQL enjeksiyonu |
Tabloda iki şey dikkat çekiyor. Katkıcı düzeyindeki 1.079 kaydın yaklaşık 800’ü siteler arası betik (XSS). Abone düzeyindeki 1.349 kaydın ise üçte biri eksik yetki kontrolü; yani bir eklentinin, en düşük rolde bile olsa giriş yapmış herkese yönetici işlevi açması.
Katkıcı neden bu kadar sık geçiyor
Katkıcı rolü yazı taslağı yazabilir. Taslağın içine kısa kod (shortcode) koyabilir; örneğin bir sayfa oluşturucu eklentisinin [buton renk="..."] gibi bir kodunu. Eklenti bu kısa kodun özelliklerini sayfaya basarken temizlemezse, katkıcı özelliğin içine betik yerleştirebilir. Taslak önizlendiğinde ya da editör yazıyı yayımlamak için açtığında betik çalışır. Çektiğimiz veride kalıcı XSS kayıtlarının üçte birinden fazlası açıklamasında kısa kod geçiyor.
Bunun önemli bir yanı var: katkıcı yayımlama yetkisi olmadığı için bir editörün ya da yöneticinin taslağı açmasını bekler. Betik o kişinin oturumuyla çalışırsa, katkıcının hiçbir zaman sahip olmadığı yetkiler devreye girer. Puan 6,4 civarında kalsa da, çok yazarlı sitelerde bu kayıtlar ciddiye alınmalı. Türün ayrıntısı için XSS açıkları yazımıza bakabilirsiniz.
Abone düzeyi, üyelik açıksa “girişsiz” sayılır
Abone rolü neredeyse hiçbir şey yapamaz. Ama sitenizde herkese açık üyelik varsa, bir saldırgan saniyeler içinde abone hesabı açabilir. Bu durumda abone düzeyinde bir açık, pratikte giriş gerektirmeyen bir açıktan farksızdır.
Üyelik şu sitelerde sık açıktır: WooCommerce mağazaları (müşteri hesabı), öğrenme yönetim sistemleri (öğrenci hesabı), forumlar, üyelik ve randevu eklentileri. Bu eklentilerin eklentiler listesinde üst sıralarda olması tesadüf değil: hem çok kod içerirler hem de abone ya da müşteri rolündeki kullanıcıların çağırabileceği çok sayıda uç nokta açarlar.
Üyeliğe ihtiyacınız yoksa Ayarlar › Genel sayfasındaki üyelik seçeneğinin kapalı olduğundan emin olun. Bazı eklentiler kendi kayıt formlarını getirir ve bu ayardan bağımsız çalışır; kayıt formu sunan bir eklenti kullanıyorsanız onun ayarlarına da bakın. Varsayılan rolün “Abone” olduğunu da kontrol edin; varsayılan rolü yanlışlıkla yükseltilmiş bir site, kaydolan herkese fazladan yetki verir.
Müşteri ve öğrenci rolleri
WooCommerce “Müşteri”, öğrenme yönetim sistemleri “Öğrenci” ya da “Eğitmen” gibi kendi rollerini ekler. Kayıtlarda “Customer-level access” gibi ifadeler görürseniz, bunları yetki açısından abone düzeyine yakın düşünün: kendi siparişini ya da dersini görebilen, yönetim paneline erişimi olmayan bir hesap. Sitemizde müşteri düzeyindeki kayıtları abone etiketiyle gösteriyoruz. Eğitmen ya da satıcı gibi eklentiye özel rollerin yetkisi ise eklentiden eklentiye değişir; kaydın metnindeki rol adına ve eklentinin belgelerine bakmak gerekir.
Yönetici gerektiren açıklar neden yine de kayıt alıyor
Kayıtların yaklaşık onda biri yönetici yetkisi istiyor. “Yönetici zaten her şeyi yapabilir, bu nasıl açık olur?” diye sorabilirsiniz. Cevap unfiltered_html yeteneğinde. Tek sitelik bir kurulumda yönetici zaten betik ekleyebildiği için, yönetici düzeyindeki XSS kayıtları çoğunlukla yalnız çoklu sitelerde ya da bu yeteneğin kapatıldığı kurulumlarda anlam taşır. Wordfence kayıtları bunu açıkça yazar; çektiğimiz veride 100’ü aşkın kayıtta “unfiltered_html devre dışı bırakılmış kurulumlar” notu var.
Yönetici düzeyindeki SQL enjeksiyonu ya da dosya okuma kayıtları ise başka bir senaryoya işaret eder: yönetici hesabı bir şekilde ele geçirildiğinde saldırganın veritabanına ya da sunucu dosyalarına uzanmasını kolaylaştırırlar. Bu yüzden düşük öncelikli ama tamamen göz ardı edilecek kayıtlar değildir.
Rollere göre yapılacaklar
Kullanıcılar sayfasını rol sütununa göre süzün ve şu soruları sorun:
- Kaç yönetici var? Her kullanıcıya işini görecek en düşük rolü verin. Ajans, eski geliştirici, artık çalışmayan biri için açılmış yönetici hesaplarını kaldırın ya da rolünü düşürün.
- Katkıcı ve yazarlar kim? Dışarıdan yazı alıyorsanız, bu kişilerin hesaplarının güçlü parolası olsun. Katkıcı düzeyindeki bir kaydı kullanmak için saldırganın ya böyle bir hesabı ele geçirmesi ya da size yazar olarak başvurması gerekir.
- Abone hesaplarına ihtiyaç var mı? Yüzlerce eski abone hesabı, abone düzeyi açıkların hepsi için hazır birer kapıdır. Kullanılmayan hesapları temizleyin.
- Editörlerin
unfiltered_htmlyeteneği gerekli mi? Sıkılaştırma belgesindekiDISALLOW_FILE_EDITsabiti panelden dosya düzenlemeyi kapatır; betik ekleme yeteneğini kısıtlamak ise ayrı bir karardır ve sitenizdeki iş akışına bağlıdır.
Sitede rol etiketini nasıl kullanmalı
Her kayıt satırında rol etiketi var: “Giriş gerekmiyor” kırmızı, diğerleri gri. Ürün sayfalarında ayrıca “abone hesabıyla kullanılabilen N kayıt” ve “katkıcı ya da yazar gerektiren N kayıt” gibi satırlar bulunur. Sitenizde üyelik kapalı ve tek yazar sizseniz, katkıcı ve abone kayıtları sizin için ikinci sıradadır; önce kırmızı etiketlere bakın. Üyelik açık bir mağaza işletiyorsanız, abone etiketli kayıtları kırmızıyla aynı sıraya koyun.
Her rolün en sık hangi açık türüyle eşleştiğini görmek için eksik yetki kontrolü ve XSS tür sayfalarındaki “saldırgan kim olmalı” grafiğine bakabilirsiniz.