Bir güvenlik sorunu olduğunda, bakımı yapılan eklentiler WordPress deposundan askıya alınmalı mı?

Yayınlanan: 2020-03-12

27 Şubat 2020, 21:34'te (CET) eklenti WP Etkinlik Günlüğümüzün “ bir istismar nedeniyle WordPress.org Eklenti dizininden geçici olarak çekildiğini” bildiren bir e-posta aldık.

28 Şubat 2020 Cuma günü saat 16:08'de bir düzeltme gönderdik. Düzeltmeyi yayınlamak sadece 16.5 saatimizi aldı. Bu, normal çalışma saatlerimizde (Avrupa'da yerleşikiz) olsaydı, sorunu çok daha erken çözerdik, çünkü çok iyi bir destek yanıt süremiz var (referans).

Eklentimiz 2 Mart 2020 Pazartesi günü saat 13:00'te eski durumuna getirildi. Bu, düzeltmeyi göndermemizden 69 saat sonra. Hafta sonu nedeniyle ekibin eklentiyi eski durumuna getirmesinin çok uzun sürdüğünü not etmek önemlidir.

WP Etkinlik Günlüğü depodan çekildi

Bunu neden yazıyorum?

Güvenlik sorunları olan ve bakımı yapılmayan eklentilerin WordPress deposundan askıya alınması gerektiğine inandığımı belirtmek isterim. Ayrıca, eklenti inceleme ekibindeki gönüllülerin yaptığı işe büyük saygı duyuyorum ve ayrıca bildirilen güvenlik sorununun tüm sorumluluğunu alıyorum.

Ancak, bakımı yapılan eklentilerde bildirilen güvenlik sorunlarının daha iyi ele alınabileceğine inanıyorum. Şu anda ele alınma biçimleri nedeniyle, eklentinin itibarı büyük bir olumsuz etkileniyor ve kullanıcıları ile web siteleri riske atılıyor. Bu nedenle, bu yazının sonunda, yardımcı olabilecek birkaç olası iyileştirmenin altını çiziyorum ve bunların dikkate alınması gerektiğini düşünüyorum. Buradaki fikir, her zaman daha az kullanıcıyı riske atmak ve eklenti ve geliştiriciler üzerindeki etkiyi azaltmaktır.

Bu gönderide ayrıca, olanların tüm ayrıntılarını belgeliyorum ve eklentimizde bildirilen düşük önemdeki uç vaka güvenlik açığını açıklıyorum.

Bir WordPress eklentisi güvenlik sorununu bildirme prosedürü nedir?

Eklenti El Kitabındaki resmi yönergelerden:

Eklentiyi bize bildirmeden önce geliştiriciyle doğrudan iletişime geçmek için her türlü girişimde bulunulmalıdır (bunun zor olabileceğini anlıyoruz - önce eklentinin kaynak kodunu kontrol edin, birçok geliştirici e-postalarını listeler). Onlarla özel olarak iletişime geçemezseniz, lütfen doğrudan bizimle iletişime geçin, size yardımcı olacağız.

Bizim durumumuzda ne oldu?

Eklentiyi kimin geliştirdiğini eklentide çok net bir şekilde belirtiyoruz. Depodaki eklenti sayfasına bakın ve bir fikir edineceksiniz! Ayrıca bizimle iletişime geçmenizi de çok kolaylaştırıyoruz.

Ancak, eklenti, eklenti deposundan geçici olarak geri çekilmeden önce güvenlik sorununu kimse bize bildirmedi. Bu nedenle, birisi sorunu WordPress eklentileri inceleme ekibine bildirdi ve önceden bildirimde bulunmaksızın eklentimizi geçici olarak depodan geri çektiler.

Nedenleri ve neleri ve neyin iyi, kötü ve neyin geliştirilebileceğine dalmadan önce, eklenti güvenlik açığına ve kim olduğumuzun kısa bir açıklamasına bir göz atalım.

Eklenti güvenlik açığı neydi?

Kullanıcıların eklentiyi yapılandırmasına yardımcı olmak için WP Activity Log'da bir kurulum sihirbazımız var. Sihirbazdaki ayarlardan biri, yönetici olmayan kullanıcıların etkinlik günlüklerini okumasına izin vermenize olanak tanır.

WP Etkinlik Günlüğü yükleme sihirbazı

Ancak bir hata yaptık; sihirbazı çalıştıran kullanıcının kimliğinin doğrulanıp doğrulanmadığını kontrol etmedik. Bu nedenle, kimliği doğrulanmamış kullanıcılar sihirbazı çalıştırabilir ve başka bir kullanıcının veya rolün eklenti ayarlarına erişmesine izin verebilir. Ancak bu, son durum düşük önemde bir sorundur.

Bu neden düşük önemde bir uç vaka güvenlik sorunudur?

Saldırganlar bundan yalnızca şu durumlarda yararlanabilir:

  • kurulum sihirbazı, yükleyici tarafından hiçbir zaman tamamlanmadı,
  • saldırganların web sitesinde zaten bir kullanıcısı vardı / bir kullanıcıya erişimi vardı,
  • Saldırganlar yalnızca eklentinin ayarlarına ve etkinlik günlüğüne erişebilir.

Saldırganlar, bu güvenlik sorunlarından yararlanarak WordPress web sitesindeki diğer ayrıcalıklara erişim sağlamazlar. Bu nedenle, bu istismarın web sitesinin davranışı ve işlevselliği üzerinde herhangi bir olumsuz etkisi yoktur.

Kavramın ispatı

POC çok basittir. Bu sayfayı kimliği doğrulanmamış bir kullanıcı olarak ziyaret edin:

http://example.com/wp-admin/admin-post.php?page=wsal-setup&current-step=access

Bu, günlükleri kimlerin görebileceğini belirtmenize izin veren sihirbazın adımıdır. HTML sayfasının kaynağında '_wpnonce' nonce'yi arayın, kopyalayın ve aşağıdaki curl komutuna ekleyin:

$ curl 'http://example.com/wp-admin/admin-post.php?page=wsal-setup&current-step=access' -d '_wpnonce=INSERT-NONCE-HERE&wsal-access=yes&editors%5B%5D= abone&save_step=Sonraki'

Abone olarak giriş yaptıktan sonra eklenti ayarlarına tam erişime sahip olacaksınız.

Bu davanın neden yanlış ele alındığını düşünüyoruz?

Bize gönderilen e-postada şunlar vardı:

Eklentileri kolayca kapatmıyoruz ve güvenlik sorunları söz konusu olduğunda, kullanıcıların hacmini ve geliştiricilerin geçmişini raporun ciddiyeti ve zarar potansiyeli ile dengelemeye çalışıyoruz.

Ancak eklentimizin çok erken geri çekildiğini düşünüyorum. Şimdiye kadar;

  1. Geçmişte sorunlarımız olduğunda, bunları her zaman birkaç saat içinde ele alırdık. Bu sefer de aynısını yaptık.
  2. Eklenti inceleme ekibi iletişime geçtiğinde her zaman zamanında yanıt verdik.
  3. Güvenlik sorunu yalnızca eklentimizi etkiledi (düşük önem derecesi) ve bu bir uç durumdu.
  4. Güvenlik sorunu otomatik olarak istismar edilemez.
  5. Saldırganın yapabileceği tek zarar , eklenti ayarlarını değiştirmek, etkinlik günlüklerini okumak veya bunları temizlemektir.

Diğer geliştiriciler bu tür durumlar hakkında ne düşünüyor?

Çoğumuz benzer konularla ilgili sosyal medyada bir makale, tweet veya mesaj okuduk. Ancak, diğer insanların, özellikle geliştiricilerin bu konuda ne düşündüğünü kendim öğrenmek istedim. Bunun önemli olduğunu düşünüyorum çünkü göremediğim bazı şeyler olabilir.

Öncelikle, sorunu tanımlayan kişiye sorumlu açıklama için teşekkür ederek bir e-posta gönderdim. Cevabı şuydu:

“Eklentideki sorunu çabucak çözdüğünü gördüğüme sevindim. BTW, wordpress.org'daki insanların birkaç günlüğüne kapattığını fark ettim, bu biraz zordu ve gerçekten gerekli değildi.”- Jerome Bruandet.

Ayrıca WordPress Ürünleri Satış Facebook grubunda küçük bir anket yaptım. Bu grup küçük olmasına rağmen, üyelerinin çoğunluğu eklenti ve tema geliştiricileridir. Anketten, geliştiricilerin oybirliğiyle, düşük ila orta önemde sorunlar olması durumunda, geliştiricilerle iletişime geçilmesi ve bir düzeltme sağlama ve eklentiyi geri çekmeme şansı verilmesi gerektiği konusunda hemfikir olduğunu görebiliriz:

WordPress eklentileri geliştiricileri facebook grubunda anket yapıyor

Bu prosedürler nasıl iyileştirilebilir?

Bildiğim kadarıyla, birisinin bir eklentide güvenlik sorunu bildirdiği durumlar için belgelenmiş bir prosedür yoktur. Bu durumda, aşağıdaki gibi prosedürler geliştiricilere yardımcı olabilir ve ayrıca daha az insanı riske atabilir.

Eklentiyi kapatmadan önce geliştiricilerle iletişime geçin ve bir eylem planı üzerinde anlaşın

Eklenti inceleme ekibi, eklentiyi kapatmadan önce geliştiricilerle iletişim kurmayı ve güvenlik açığını doğrulamayı deneyebilir. Geliştiriciler, düzeltme için makul bir tarih de dahil olmak üzere bir eylem planıyla yanıt vermelidir.

Gerekirse, eklentileri inceleme ekibi bir son tarih belirleyebilir. Örneğin, geliştiricilerin sorunu çözmek için 12 ila 24 saati olmalıdır. Ancak, bazı durumlarda bulundukları saat dilimine vb. bağlı olarak daha fazla zamana ihtiyaçları olabilir. Geliştiricilerin yanıt vermemesi durumunda, eklenti depodan geri çekilmelidir.

Güvenlik sorununun önem derecesini ve türünü belirleyin

Bu tartışmaya açık olabilir. Bununla birlikte, biraz güvenlik deneyimi olan biri, bildirilen bir güvenlik sorununun otomatik olarak istismar edilip edilemeyeceğini, bunun bir uç durum olup olmadığını ve rapor edilen kavram kanıtından (POC) etkisinin ne olduğunu kolayca anlayabilir.

Geliştiricilerin eylem planına bağlı kalıp kalmadığını kontrol edin

Geliştiricilerin düzeltmeyi zamanında gönderdiğini ve eylem planında yer alan diğer görevlere bağlı kaldığını doğrulamak için bir tür kontrol yapılmalıdır.

Depodan bakımı yapılan eklentileri geri çekmek yardımcı olmuyor

Bakımlı eklentiler söz konusu olduğunda, onları depodan geri çekmek yarardan çok zarar verir. Örneğin;

  1. Eklentinin bir sorunu olduğunu, büyük olasılıkla bir güvenlik sorunu olduğunu herkese açık hale getirirsiniz. Bu, birçok alarma neden olur ve eklentiye dikkat çeker. Bu aynı zamanda saldırganları davet ederek eklentideki bir şeyin muhtemelen istismar edilebilir olduğunu söylemek gibidir.
  2. Mevcut eklenti kullanıcı tabanını ortaya çıkarıyor çünkü birdenbire web siteleri hedef haline geldi. Kullanıcıların çoğu, özellikle eklentinin işlevselliği web sitelerinin ve işlerinin özüyse, ne yapmaları gerektiği konusunda hiçbir fikre sahip değildir.
  3. Düzeltmeyi geciktirme şansınızı artırırsınız. Bu genellikle iletişim eksikliğinden veya tatiller ve hafta sonlarından kaynaklanır.

Depodan bir eklentiyi geri çekerek enfeksiyonun yayılmasını engellediğiniz iddia edilebilir. Bununla birlikte, güvenlik sorunu düşük önemdeyse, istismar otomatikleştirilemez ve ifşa sorumludur, herhangi bir risk yoktur veya riskler son derece düşüktür.

Yasal Uyarı: Bu bir saldırı değil

Bunun WordPress eklentileri inceleme ekibine veya bu süreçlere dahil olan herhangi birine yönelik bir saldırı olmadığını belirtmek isterim. Dürüst olmak gerekirse, çalışmalarına saygı duyuyorum ve yaptıklarının iyi niyetle yapıldığını biliyorum. Ancak her sistem ve süreçte olduğu gibi mutlaka iyileştirmeye de yer vardır.

Birçoğu muhtemelen bana, eğer bir değişiklik istiyorsam bu yazıyı yazmak yerine gönüllü olmam gerektiğini söyleyecektir.

Bir süredir katılmaya çalışıyorum; Katılmak için farklı WordCamps'teki birkaç kişiyle konuştum ve ayrıca gönüllü çağrıları için WordPress eklentileri yap sayfasını izliyorum. Ancak, son birkaç yılda hiç boş pozisyonları yoktu. Yardıma ihtiyaç duyduklarında sadece davet ederek yeni üyeler eklediler.