CVE-2021-41129
Açıklama
Pterodactyl; PHP 7, React ve Go ile oluşturulmuş açık kaynaklı bir oyun sunucusu yönetim panelidir. Kötü niyetli bir kullanıcı, iki faktörlü kimlik doğrulama işlemi sırasında `confirmation_token` girdisinin içeriğini değiştirerek giriş denemesiyle ilişkili olmayan bir önbellek değerine referans verebilir. Nadir durumlarda bu durum, kötü niyetli bir aktörün Panel'de rastgele bir kullanıcı olarak kimlik doğrulaması yapmasına izin verebilir. Kötü niyetli kullanıcının, iki faktörlü kimlik doğrulaması etkinleştirilmiş bir hesabı hedeflemesi ve ardından o kullanıcı olarak kimlik doğrulanmadan önce doğru bir iki faktörlü kimlik doğrulama belirteci sağlaması gerekir. İki faktörlü kimlik doğrulama işlemi sırasında kullanıcı kimlik doğrulamasını yöneten mantıktaki bir doğrulama hatası nedeniyle, kötü niyetli bir kullanıcı sunucuya gönderilen belirteci değiştirerek sistemi rastgele bir kullanıcı için kimlik bilgilerini yüklemeye zorlayabilir. Bu kimlik doğrulama hatası, bir kullanıcı için iki faktörlü kimlik doğrulamayı yöneten `LoginCheckpointController@__invoke` metodunda mevcuttur. Bu denetleyici, Panel'in önbelleğinde `user_id` değeri içeren bir değere referans veren, 64 karakterli rastgele alfa-numerik bir dize olması beklenen `confirmation_token` adlı bir istek girdi parametresi arar. Bu değer daha sonra giriş yapmaya çalışan kullanıcıyı getirmek ve iki faktörlü kimlik doğrulama belirtecini sorgulamak için kullanılır. Sistemin tasarımı gereği, önbellekte yalnızca rakamlardan oluşan herhangi bir öğeye kötü niyetli bir kullanıcı tarafından referans verilebilir ve o konumda saklanan her ne değer varsa `user_id` olarak kullanılır. Panel'in önbelleğe tam sayı değerleri kaydeden birkaç farklı alanı vardır ve bu önbellek anahtarlarının neler olduğunu belirleyen bir kullanıcı, bu kod yolunun rastgele bir kullanıcıya referans vermesine neden olacak anahtarlardan birini iletebilir. Özünde bu, yüksek riskli bir kimlik doğrulama atlatma zafiyetidir. Ancak, bunun başarıyla yürütülmesi için karşılanması gereken birkaç ek koşul bulunmaktadır: 1.) Kötü niyetli önbellek anahtarının referans verdiği hesabın iki faktörlü kimlik doğrulamasının etkin olması gerekir. İki faktörlü kimlik doğrulaması olmayan bir hesap, kimlik doğrulama mantığı tarafından bir istisnanın tetiklenmesine neden olur ve böylece bu kimlik doğrulama akışından çıkılır. 2.) Kötü niyetli kullanıcı, iki faktörlü kimlik doğrulaması olan geçerli bir kullanıcı hesabına referans veren geçerli bir önbellek anahtarına erişebilse bile, geçerli bir iki faktörlü kimlik doğrulama belirteci sağlamalıdır. Ancak, bu uç noktanın tasarımı nedeniyle, iki faktörlü kimlik doğrulaması etkinleştirilmiş geçerli bir kullanıcı hesabı bulunduğunda herhangi bir hız sınırlaması uygulanmaz, bu da saldırganın başarılı olana kadar kombinasyonları kaba kuvvet yöntemiyle denemesine olanak tanır. Bu durum, karşılanması gereken üçüncü bir koşula yol açar: 3.) Bu saldırı dizisi süresince, referans verilen önbellek anahtarı geçerli bir `user_id` değeriyle var olmaya devam etmelidir. Bu saldırı için kullanılan belirli anahtara bağlı olarak, bu değer hızla kaybolabilir veya saldırganın kontrolü dışında Panel üzerindeki diğer rastgele kullanıcı etkileşimleriyle değiştirilebilir. Bu zafiyeti gidermek için temel kimlik doğrulama mantığı, kullanıcının değerini kontrol edemeyeceği şifrelenmiş bir oturum deposu kullanacak şekilde değiştirilmiştir. Bu işlem, kullanıcı kontrollü bir değerin kullanımını tamamen ortadan kaldırmıştır. Ek olarak, bu tür bir zafiyetin başka yerlerde bulunmadığından emin olmak için kod denetlenmiştir.
Nasıl düzeltilir
- pterodactyl panel1.6.2 ya da sonraki bir sürüm
- pterodactyl/panel1.6.2 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| pterodactyl panel | 1.0.0 ≤ v < 1.6.2 | 1.6.2 |
| pterodactyl/panelPackagist | 1.0.0 ≤ v < 1.6.2 | 1.6.2 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.