Güvenlik

Bu ücretsiz sunum belgesinde WordPress'in çekirdek yazılım güvenliği hakkında daha fazla bilgi edinin. Ayrıca, PDF biçiminde indirebilirsiniz.

Genel Bakış

Bu belge, WordPress çekirdek yazılım geliştirme ve bununla ilgili güvenlik süreçlerinin bir analizini ve açıklamasını, ayrıca doğrudan yazılıma yerleşik olan yerleşik güvenliği incelemektedir. WordPress'i bir içerik yönetim sistemi veya web uygulama çerçevesi olarak değerlendiren karar vericiler bu belgeyi analizlerinde ve karar almalarında ve geliştiricilerin yazılımın güvenlik bileşenlerini ve en iyi uygulamalarını tanımak için bu belgeye başvurmaları için kullanmalıdır.

Bu belgedeki bilgiler, yazılımın en son kararlı sürümü olan, yayın sırasında WordPress 4.7, için günceldir ancak yazılımın en son sürümleriyle de ilgili olduğu düşünülmelidir; çünkü geriye dönük uyumluluk, WordPress geliştirme ekibinin güçlü bir odağıdır. Özel güvenlik önlemleri ve değişiklikler, belirli sürümlerde çekirdek yazılıma eklendiklerinden not edilecektir. Mümkün olan en güvenli deneyimi sağlamak için her zaman WordPress'in en son kararlı sürümünü kullanmanız kesinlikle önerilir.

Yönetici Özeti

WordPress, milyonlarca web sitesine, web uygulamasına ve bloglara güç vermek için kullanılan dinamik bir açık kaynaklı içerik yönetim sistemidir. Şu anda, İnternetteki en iyi 10 milyon web sitesinin 35% oranından fazlasına güç vermektedir. WordPress’in kullanılabilirliği, genişletilebilirliği ve olgun geliştirme topluluğu, her boyuttaki web siteleri için popüler ve güvenli bir seçim olmasını sağlar.

2003'teki kuruluşundan bu yana, WordPress sürekli güçlenmeye maruz kalmıştır, böylece çekirdek yazılımı, Açık Web Uygulama Güvenliği Projesi (OWASP) tarafından bu belgede açıklanan ortak güvenlik açıkları olarak tanımlanan en iyi 10 liste de dahil olmak üzere ortak güvenlik tehditlerini ele alabilir ve hafifletebilir.

WordPress güvenlik ekibi, WordPress çekirdek liderlik ekibi ile birlikte ve WordPress küresel topluluğu tarafından desteklenerek, WordPress.org'da dağıtım ve kurulum için mevcut olan temel yazılımdaki güvenlik sorunlarını belirlemek ve çözmek, ayrıca . üçüncü taraf eklenti ve tema yazarları için en iyi güvenlik uygulamlarını önermek ve belgelendirmek için çalışır.

Site geliştiricileri ve yöneticileri, tüm kullanıcıların WordPress'e erişmek için güçlü parolalar kullanmasını sağlamanın yanı sıra, yaygın güvenlik açıkları kaynağı olan temel API'lerin ve temel sunucu yapılandırmasının doğru kullanımına özellikle dikkat etmelidir.

WordPress'e genel bakış

WordPress ücretsiz ve açık kaynaklı bir içerik yönetim sistemidir (CMS). Dünyadaki en yaygın kullanılan CMS yazılımıdır ve ilk 10 milyon web sitesinin1 35% oranından daha fazlasına güç verir ve bir CMS kullanan tüm sitelerin tahmini 62% kadar pazar payını verir.

WordPress, dört temel özgürlük sağlayan Genel Kamu Lisansı (GPLv2 veya üstü) lisansına sahiptir ve WordPress 'haklar bildirgesi' olarak kabul edilebilir.

  1. Programı herhangi bir amaç için çalıştırma özgürlüğü.
  2. Programın nasıl çalıştığını inceleme ve dilediğin şeyi yapmak için değiştirme özgürlüğü.
  3. Yeniden dağıtma özgürlüğü.
  4. Değiştirilmiş sürümlerinizin kopyalarını başkalarına dağıtabilme özgürlüğü.

WordPress Çekirdek Liderlik Takımı

WordPress projesi çekirdek liderlik ekibi tarafından yönetilen ve ortak yaratıcısı ve baş geliştiricisi Matt Mullenweg tarafından yönetilen bir meritokrasidir. Ekip, çekirdek geliştirme, WordPress.org ve topluluk girişimleri dahil olmak üzere projenin tüm yönlerini yönetir.

The Core Leadership Team consists of Matt Mullenweg, five lead developers, and more than a dozen core developers with permanent commit access. These developers have final authority on technical decisions, and lead architecture discussions and implementation efforts.

WordPress'in bir çok katkıda bulunan geliştiricisi var. Bunlardan bazıları eski veya şu andaki sorumluluk sahipleri ve bazıları da gelecekteki kişilerdir. Katkıda bulunan bu geliştiriciler, akranları arasında büyük saygı gören WordPress'e güvenilir ve kıdemli katkıda bulunuyorlar. WordPress ayrıca, gerektikçe geçici veya deneme esasına dayalı olarak, bazen belirli bir bileşen için, erişim izni verilen geliştiricilere sahiptir.

The core and contributing developers primarily guide WordPress development. Every version, hundreds of developers contribute code to WordPress. These core contributors are volunteers who contribute to the core codebase in some way.

WordPress Dağıtım Döngüsü

Each WordPress release cycle is led by one or more of the core WordPress developers. A release cycle usually lasts around 4 months from the initial scoping meeting to launch of the version.

Bir dağıtım döngüsü aşağıdaki deseni izler2:

  • Phase 1: Planning and securing team leads. This is done in the #core chat room on Slack. The release lead discusses features for the next release of WordPress. WordPress contributors get involved with that discussion. The release lead will identify team leads for each of the features.
  • Phase 2: Development work begins. Team leads assemble teams and work on their assigned features. Regular chats are scheduled to ensure the development keeps moving forward.
  • Phase 3: Beta. Betas are released, and beta-testers are asked to start reporting bugs. No more commits for new enhancements or feature requests are carried out from this phase on. Third-party plugin and theme authors are encouraged to test their code against the upcoming changes.
  • Phase 4: Release Candidate. There is a string freeze for translatable strings from this point on. Work is targeted on regressions and blockers only.
  • 5. Aşama: Dağıtım. WordPress sürümü dağıtılır ve WordPress yönetici ekranında güncellemeler için kullanıma sunulur.

Sürüm Numaralandırma ve Güvenlik Dağıtımları

A major WordPress version is dictated by the first two sequences. For example, 3.5 is a major release, as is 3.6, 3.7, or 4.0. There isn’t a “WordPress 3” or “WordPress 4” and each major release is referred to by its numbering, e.g., “WordPress 3.9.”

Major releases may add new user features and developer APIs. Though typically in the software world, a “major” version means you can break backwards compatibility, WordPress strives to never break backwards compatibility. Backwards compatibility is one of the project’s most important philosophies, with the aim of making updates much easier on users and developers alike.

A minor WordPress version is dictated by the third sequence. Version 3.5.1 is a minor release, as is 3.4.23. A minor release is reserved for fixing security vulnerabilities and addressing critical bugs only. Since new versions of WordPress are released so frequently — the aim is every 4-5 months for a major release, and minor releases happen as needed — there is only a need for major and minor releases.

Sürüm Geriye Uyumluluk

The WordPress project has a strong commitment to backwards compatibility. This commitment means that themes, plugins, and custom code continues to function when WordPress core software is updated, encouraging site owners to keep their WordPress version updated to the latest secure release.

WordPress ve Güvenlik

WordPress güvenlik ekibi

The WordPress Security Team is made up of approximately 50 experts including lead developers and security researchers — about half are employees of Automattic (makers of WordPress.com, the earliest and largest WordPress hosting platform on the web), and a number work in the web security field. The team consults with well-known and trusted security researchers and hosting companies3.

The WordPress Security Team often collaborates with other security teams to address issues in common dependencies, such as resolving the vulnerability in the PHP XML parser, used by the XML-RPC API that ships with WordPress, in WordPress 3.9.24. This vulnerability resolution was a result of a joint effort by both WordPress and Drupal security teams.

WordPress Güvenlik Riskleri, Süreci ve Tarihçesi

The WordPress Security Team believes in Responsible Disclosure by alerting the security team immediately of any potential vulnerabilities. Potential security vulnerabilities can be signaled to the Security Team via the WordPress HackerOne5. The Security Team communicates amongst itself via a private Slack channel, and works on a walled-off, private Trac for tracking, testing, and fixing bugs and security problems.

Each security report is acknowledged upon receipt, and the team works to verify the vulnerability and determine its severity. If confirmed, the security team then plans for a patch to fix the problem which can be committed to an upcoming release of the WordPress software or it can be pushed as an immediate security release, depending on the severity of the issue.

For an immediate security release, an advisory is published by the Security Team to the WordPress.org News site6 announcing the release and detailing the changes. Credit for the responsible disclosure of a vulnerability is given in the advisory to encourage and reinforce continued responsible reporting in the future.

Administrators of the WordPress software see a notification on their site dashboard to upgrade when a new release is available, and following the manual upgrade users are redirected to the About WordPress screen which details the changes. If administrators have automatic background updates enabled, they will receive an email after an upgrade has been completed.

Güvenlik Dağıtımları için Otomatik Arka Plan Güncellemeleri

Starting with version 3.7, WordPress introduced automated background updates for all minor releases7, such as 3.7.1 and 3.7.2. The WordPress Security Team can identify, fix, and push out automated security enhancements for WordPress without the site owner needing to do anything on their end, and the security update will install automatically.

When a security update is pushed for the current stable release of WordPress, the core team will also push security updates for all the releases that are capable of background updates (since WordPress 3.7), so these older but still recent versions of WordPress will receive security enhancements.

Individual site owners can opt to remove automatic background updates through a simple change in their configuration file, but keeping the functionality is strongly recommended by the core team, as well as running the latest stable release of WordPress.

2013 OWASP En İyi 10

The Open Web Application Security Project (OWASP) is an online community dedicated to web application security. The OWASP Top 10 list8 focuses on identifying the most serious application security risks for a broad array of organizations. The Top 10 items are selected and prioritized in combination with consensus estimates of exploitability, detectability, and impact estimates.

Aşağıdaki bölümlerde WordPress'in temel yazılımı ve üçüncü taraf eklentilerini ve bu potansiyel risklere karşı temaları güçlendirmek için kullandığı API'ler, kaynaklar ve politikalar ele alınmaktadır.

A1 - Enjeksiyon

There is a set of functions and APIs available in WordPress to assist developers in making sure unauthorized code cannot be injected, and help them validate and sanitize data. Best practices and documentation are available9 on how to use these APIs to protect, validate, or sanitize input and output data in HTML, URLs, HTTP headers, and when interacting with the database and filesystem. Administrators can also further restrict the types of file which can be uploaded via filters.

A2 - Bozuk Kimlik Doğrulama ve Oturum Yönetimi

WordPress çekirdek yazılımı, kullanıcı hesaplarını yönetir ve kimlik doğrulaması yapar ve kullanıcı kimliği, adı ve şifresi gibi ayrıntılar, kimlik doğrulama çerezlerinin yanı sıra sunucu tarafında yönetilir. Şifreler veritabanında standart tuzlama ve germe teknikleri kullanılarak korunmaktadır. Var olan oturumlar, 4.0'dan sonra WordPress sürümleri için, oturumu kapattıktan sonra imha edilir.

A3 - Siteler Arası Komut Dosyası (XSS)

WordPress provides a range of functions which can help ensure that user-supplied data is safe10. Trusted users, that is administrators and editors on a single WordPress installation, and network administrators only in WordPress Multisite, can post unfiltered HTML or JavaScript as they need to, such as inside a post or page. Untrusted users and user-submitted content is filtered by default to remove dangerous entities, using the KSES library through the wp_kses function.

As an example, the WordPress core team noticed before the release of WordPress 2.3 that the function the_search_query() was being misused by most theme authors, who were not escaping the function’s output for use in HTML. In a very rare case of slightly breaking backward compatibility, the function’s output was changed in WordPress 2.3 to be pre-escaped.

A4 - Güvensiz Doğrudan Nesne Referansı

WordPress often provides direct object reference, such as unique numeric identifiers of user accounts or content available in the URL or form fields. While these identifiers disclose direct system information, WordPress’ rich permissions and access control system prevent unauthorized requests.

A5 - Yanlış Güvenlik Yapılandırması

WordPress güvenlik yapılandırma işlemlerinin çoğu, tek bir yetkili yönetici ile sınırlıdır. WordPress için varsayılan ayarlar, çekirdek ekip düzeyinde sürekli olarak değerlendirilir ve WordPress çekirdek ekibi, bir WordPress sitesini11 çalıştırmak için sunucu yapılandırması güvenliğini sıkılaştırmak için belgeler ve en iyi uygulamaları sağlar.

A6 - Hassas Veri Maruziyeti

WordPress user account passwords are salted and hashed based on the Portable PHP Password Hashing Framework12. WordPress’ permission system is used to control access to private information such an registered users’ PII, commenters’ email addresses, privately published content, etc. In WordPress 3.7, a password strength meter was included in the core software providing additional information to users setting their passwords and hints on increasing strength. WordPress also has an optional configuration setting for requiring HTTPS.

A7 - Eksik İşlev Seviyesi Erişim Kontrolü

WordPress, eylem gerçekleştirilmeden önce herhangi bir işlev düzeyi erişim isteği için uygun yetkilendirme ve izinleri kontrol eder. Yönetimsel URL'lere, menülere ve sayfalara doğru kimlik doğrulaması yapılmadan erişilmesi veya görüntülenmesi, yetkisiz kullanıcıların erişimini önlemek için kimlik doğrulama sistemi ile sıkı bir şekilde bütünleştirilir.

A8 - Siteler Arası İstek Sahteciliği (CSRF)

WordPress uses cryptographic tokens, called nonces13, to validate intent of action requests from authorized users to protect against potential CSRF threats. WordPress provides an API for the generation of these tokens to create and verify unique and temporary tokens, and the token is limited to a specific user, a specific action, a specific object, and a specific time period, which can be added to forms and URLs as needed. Additionally, all nonces are invalidated upon logout.

A9 - Bilinen Güvenlik Açıkları olan Bileşenleri Kullanma

WordPress çekirdek ekibi, WordPress'in temel işlevler için entegre olduğu birkaç kütüphaneyi ve çatıları yakından izler. Geçmişte çekirdek ekip birçok üçüncü taraf bileşenine daha güvenli hale getirmek için, WordPress 3.5.2'de14 TinyMCE'deki siteler arası bir güvenlik açığını gidermek için güncelleme gibi, katkıda bulundu.

Çekirdek ekip gerekirse kritik harici bileşenleri çatallamaya veya değiştirmeye, 3.5.2 sürümünde SWFUpload kütüphanesinin Plupload kütüphanesi ile değiştirildiği ve güvenlik ekibi15 tarafından kısa vadede SWFUpload#8217;u kullanmaya devam eden eklentiler için güvenli bir SWFUpload çatalı yerleştirilmesi gibi, karar verebilir.

A10 - Doğrulanmamış Yönlendirmeler ve İletmeler

WordPress’in dahili erişim kontrolü ve kimlik doğrulama sistemi, kullanıcıları istenmeyen hedeflere veya otomatik yönlendirmelere karşı koruma sağlayacaktır. Bu işlevsellik, wp_safe_redirect()16 adlı bir API aracılığıyla eklenti geliştiricilere de sunulur.

Ek Güvenlik Riskleri ve Endişeler

XXE (XML eXternal Entity) işleme saldırıları

XML işlenirken, WordPress, External Entity ve Entity Expansion saldırılarını önlemek için özel XML varlıklarının yüklenmesini devre dışı bırakır. PHP'nin temel işlevselliğinin ötesinde, WordPress, eklenti yazarları için ek güvenli XML işleme API'sı sağlamaz.

SSRF (Sunucu Tarafı İsteği Sahteciliği) Saldırıları

WordPress tarafından gönderilen HTTP istekleri geridöngü ve özel IP adreslerine erişimi önlemek için filtrelenir. Ayrıca, yalnızca belirli standart HTTP bağlantı noktalarına erişim izni verilir.

WordPress eklenti ve tema güvenliği

Varsayılan tema

WordPress, içeriği ön uçta görünür kılmak için bir temanın etkinleştirilmesini gerektirir. Çekirdek WordPress (şu anda "Twenty Twenty") ile birlikte gelen varsayılan tema, hem tema geliştiricileri hem de çekirdek geliştirme ekibi tarafından güvenlik nedeniyle detaylıca incelenip test edildi.

Varsayılan tema, özel tema geliştirme için bir başlangıç noktası olabilir ve site geliştiricileri, bazı özelleştirmeler içeren ancak çoğu işlevsellik ve güvenlik için varsayılan temaya geri dönen bir alt tema oluşturabilir. Varsayılan tema, gerekirse bir yönetici tarafından kolayca kaldırılabilir.

WordPress.org Tema ve Eklenti Depoları

WordPress.org sitesinde listelenen yaklaşık 50.000+ eklenti ve 5.000+ tema bulunmaktadır. Bu temalar ve eklentiler depoya dahil edilmek üzere gönderilir ve gönüllüler tarafından depoda kullanılabilir duruma getirilmeden önce elle gözden geçirilir.

Eklentilerin ve temaların depoya eklenmesi, güvenlik açıklarından arınmış olmalarının garantisi değildir. Eklenti yazarlarının, depoya17 dahil edilmeden önce başvurularından önce danışmaları için kılavuzlar sağlanmıştır ve WordPress tema geliştirmesinin18 nasıl yapılacağına ilişkin kapsamlı belgeler WordPress.org sitesinde verilmektedir.

Her bir eklenti ve tema, eklenti veya tema sahibi tarafından sürekli olarak geliştirilebilme özelliğine sahiptir ve sonraki düzeltmeler veya özellik geliştirmeleri depoya yüklenebilir ve bu eklentinin veya temanın bu değişikliğin açıklamasıyla birlikte yüklendiği kullanıcılar tarafından kullanılabilir. Site yöneticileri, yönetim panoları aracılığıyla güncellenmeleri gereken eklentilerden haberdar edilir.

WordPress güvenlik ekibi tarafından bir eklenti güvenlik açığı tespit edildiğinde, eklentinin yazarına ulaşır ve eklentiyi düzeltmek ve güvenli bir sürümünü yayınlamak için birlikte çalışırlar. Eklenti yazarından yanıt gelmiyorsa veya güvenlik açığı ciddiyse, eklenti/tema ortak dizinden alınır ve bazı durumlarda doğrudan güvenlik ekibi tarafından düzeltilir ve güncellenir.

Tema İnceleme Ekibi

Tema inceleme ekibi, resmi WordPress tema dizinine dahil edilmek üzere gönderilen temaları inceleyen ve onaylayan, WordPress topluluğunun kilit ve kurulu üyeleri tarafından yönetilen bir grup gönüllüdür. Tema inceleme ekibi, resmi tema inceleme kılavuzlarını19, tema unit test verilerini20 ve tema denetimi eklentilerini21 yönetir ve WordPress tema geliştiricisi topluluğunu, en iyi uygulama geliştirme uygulamaları hakkında bilgilendirmeye ve eğitmeye çalışır. Gruba dahil olma, WordPress geliştirme ekibi tarafından denetlenir.

WordPress Güvenliğinde Barındırma Sağlayıcısının Rolü

WordPress çok sayıda platforma kurulabilir. WordPress çekirdek yazılımı, bu belgede ele alınan güvenli bir web uygulamasının çalıştırılması için birçok hüküm sunsa da, işletim sisteminin ve yazılımı barındıran temel web sunucusunun yapılandırılması, WordPress uygulamalarının güvenliğini sağlamak için eşit derecede önemlidir.

WordPress.com ve WordPress güvenliği hakkında bir not

WordPress.com, dünyanın en büyük WordPress kurulumudur ve WordPress proje ortak yaratıcısı Matt Mullenweg tarafından kurulan Automattic, Inc. şirketine aittir. WordPress.com, çekirdek WordPress yazılımı üzerinde çalışır ve kendi güvenlik süreçleri, riskleri ve çözümleri vardır22. Bu belge, WordPress.org adresinde bulunan ve dünyadaki herhangi bir sunucuya yüklenebilen, kendi kendine barındırılan, indirilebilir açık kaynaklı WordPress yazılımıyla ilgili güvenlik anlamına gelir.

Ek

Temel WordPress API'leri

WordPress çekirdek ıygulama programlama arabirimi (API)23, her biri belirli bir işlev kümesinde yer alan işlevleri kullanan birkaç ayrı API'den oluşur. Bunlar, eklentilerin ve temaların WordPress çekirdek işlevselliğini güvenli ve sağlam bir şekilde etkileşime girmesini, değiştirmesini ve genişletmesini sağlayan proje arabirimini oluşturur.

Her WordPress API'si, WordPress çekirdek yazılımıyla etkileşimde bulunmak ve genişletmek için en iyi uygulamaları ve standartlaştırılmış yolları sunarken, aşağıdaki WordPress API'leri WordPress güvenliğini sağlamak ve sağlamlaştırmak için en uygun olanlardır:

Veritabanı API

WordPress 0.71'e eklenen veritabanı API'si24, verilere veritabanı katmanında depolanan adlandırılmış değerler olarak erişmek için doğru yöntemi sağlar.

Filesystem API

WordPress 2.6'da26 eklenen dosya sistemi API'si25, aslında WordPress'in kendi otomatik güncelleme özelliği için oluşturulmuştur. Dosya sistemi API'si, çeşitli sunucu türlerinde, güvenli bir şekilde, dosya sisteminde yerel dosyaları okumak ve yazmak için gereken işlevselliği özetler.

Bunu, WP_Filesystem_Base sınıfı ve sunucu desteğine bağlı olarak yerel dosya sistemine bağlanmak için farklı yöntemler uygulayan birkaç alt sınıf aracılığıyla yapar. Yerel olarak dosya yazması gereken herhangi bir tema veya eklenti WP_Filesystem sınıf ailesini kullanarak bunu yapmalıdır.

HTTP API

WordPress 2.7'ye28 eklenen ve WordPress 2.8'de daha da genişletilmiş olan HTTP API27, WordPress için HTTP isteklerini standartlaştırır. API çerezleri, gzip kodlamasını ve kodunu çözmeyi, yığın kod çözmeyi (eğer HTTP 1.1 ise) ve diğer çeşitli HTTP protokol uygulamalarını ele alır. API istekleri standartlaştırır, göndermeden önce her yöntemi test eder ve sunucu yapılandırmanıza bağlı olarak isteği yapmak için uygun yöntemi kullanır.

İzinler ve şuandaki API kullanıcısı

İzinler ve mevcut kullanıcı API'si29, mevcut kullanıcının talep edilen herhangi bir görevi veya işlemi gerçekleştirmek için izinlerini ve yetkisini doğrulamaya yardımcı olacak ve yetkisiz kullanıcıların izin verilen özelliklerin ötesindeki işlevlere erişmesine veya bunları gerçekleştirmesine karşı daha fazla koruma sağlayabilecek bir işlevler kümesidir.

Teknik inceleme içeriği lisansı

Bu belgedeki metin (WordPress logosu veya ticari markası dahil değil) CC0 1.0 Universal (CC0 1.0) altında lisanslanmıştır. İşi, ticari amaçlar için bile izinsiz olarak kopyalayabilir, değiştirebilir, dağıtabilir ve gerçekleştirebilirsiniz.

Bazı ilhamlar veren, Drupal'ın güvenlik belgesi sunumuna özel bir teşekkür ederiz.

Ek okuma


Sara Rosso tarafından geliştirilmiştir

Barry Abrahamson, Michael Adams, Jon Mağarası, Helen Hou-Sandí, Dion Hulse, Mo Jangda, Paul Maiorana katkıları

Sürüm 1.0 Mart 2015


Dipnotlar