CVE-2020-28949 · Bilgilendirme

PEAR Archive_Tar Deserialization of Untrusted Data Vulnerability

CVE-2020-28949 zafiyeti, PEAR Archive_Tar'da unserialization saldırısına olanak tanır. Güvenlik açığı hakkında bilgi edinin.

Üretici
PEAR
Ürün
Archive_Tar
Seviye
yüksek
Yayın Tarihi
03 Nisan 2026
Okuma
8 dk okuma

CVE-2020-28949: PEAR Archive_Tar Deserialization of Untrusted Data Vulnerability

Zorluk Seviyesi: Orta | Kaynak: CISA KEV

Zafiyet Analizi ve Giriş

CVE-2020-28949, PEAR Archive_Tar kütüphanesinde keşfedilen bir zafiyettir ve bu zafiyet, kötü niyetli kullanıcıların deserialization (açıklama: seri hale getirme) yoluyla saldırılar gerçekleştirmesine olanak tanır. PEAR, PHP'nin yeniden kullanılabilir bileşenleri için açık kaynaklı bir çerçeve ve dağıtım sistemidir ve birçok üçüncü taraf üründe, örneğin Drupal Çekirdeği ve Red Hat Linux'da yaygın olarak kullanılmaktadır.

Zafiyetin kökeni, PHAR (PHP Archive) dosyalarının doğru bir şekilde filtrelenmemesindendir. PEAR Archive_Tar kütüphanesi, güvenlik açığına yol açan "phar:" yol tanımını engellerken, "PHAR:" yol tanımını engellemeyerek saldırılara kapıyı açık bırakmaktadır. Bu durum, kötü niyetli bir kullanıcıya, PHP'de deserialization işlemleri aracılığıyla zararlı kod enjekte etme fırsatı sağlar. Özellikle, bu durum uzaktan kod yürütme (RCE - Remote Code Execution) riskini artırmaktadır. Zafiyetin, uygulamalarda kullanılabilecek unsurları etkileyebileceği için sistem güvenliği açısından kritik bir tehdit teşkil ettiğini belirtmek gerekir.

Bu zafiyet, 2020 yılının sonlarına doğru keşfedilmiş olup, kayda değer bir etki yarattığı gözlemlenmiştir. Özellikle web tabanlı uygulamalar ve içerik yönetim sistemleri (CMS) gibi alanlarda yoğun bir kullanıma sahip olan PEAR Archive_Tar, birçok sektörde yayılarak birçok kuruluşun sistemini riske atmıştır. Örneğin, e-ticaret siteleri ve eğitim platformları, bu tür zafiyetlere açık olabilen sistemlerdir. Bu nedenle, siber saldırganlar için oldukça cazip bir hedef haline gelmişlerdir.

Gerçek bir dünya senaryosuna değinmek gerekirse; saldırganın bir web uygulamasına sızarak, PHAR uzantılı bir dosya yüklemesi ile başlayabiliriz. Bu dosya, içinde zararlı bir PHP kodu barındıran deserialized (seri hale getirilmiş) veri yapısını içerebilir. Uygulama, bu veriyi kullanarak kodu çalıştırdığında, saldırganın komutları sistemde yürütmesine olanak tanınmış olur. Bu, ciddi verilerin çalınmasına, sistemin ele geçirilmesine veya diğer zararlı etkilerin ortaya çıkmasına sebep olabilir.

Zafiyetin etkilediği sektörlere gelince, özellikle bankacılık, e-ticaret, sağlık ve kamu hizmetleri gibi yüksek risk taşıyan alanlar dikkat çekmektedir. Bu sektörlerdeki sistemler genellikle hassas verilere sahiptir ve bir güvenlik açığı durumunda büyük kayıplara yol açabilir. Bu nedenle, sistem yöneticilerinin bu tür zafiyetlere karşı sürekli olarak güncellemeler yapmaları ve gerekli güvenlik önlemlerini almaları gerekmektedir.

Sonuç olarak, CVE-2020-28949 gibi zafiyetlerin farkında olmak, siber güvenlik açısından kritik öneme sahiptir. Web uygulamalarını geliştiren geliştiricilerin ve işletmelerin, PEAR Archive_Tar gibi kütüphanelerin güvenliğini sağlamaları, saldırıların önlenmesi adına büyük bir adımdır. Bu bağlamda, sürekli güncellemeler ve güvenlik standartlarının takip edilmesi, siber güvenlik stratejilerinin önemli bir parçası olmalıdır.

Teknik Sömürü (Exploitation) ve PoC

PEAR Archive_Tar, PHP tabanlı geniş bir uygulama yelpazesi tarafından kullanılan bir kütüphanedir ve deserializasyon (deserialization) saldırılarına karşı savunmasız bir yapıdadır. CVE-2020-28949 zafiyeti, bu kütüphanenin phar: türündeki verileri engellemesine rağmen PHAR: türündeki verileri engellememesi ile ortaya çıkar. Bu durum, saldırganların bu zafiyeti kullanarak uzaktan kod yürütme (RCE - Remote Code Execution) gerçekleştirmesine olanak tanır.

Bu zafiyetin teknik sömürü süreci birkaç aşamadan oluşmaktadır. İlk aşama, hedef sistemde PEAR Archive_Tar kütüphanesinin kurulu olup olmadığını belirlemektir. Bu, genellikle sistemin mevcut yazılım bileşenlerini analiz ederek yapılır. Kullanıcılar, PHP tabanlı bir uygulama kullanıyorsa büyük olasılıkla bu kütüphane de yüklenmiştir. Ayrıca, bu kütüphanenin kullanıldığı uygulamaların genellikle üçüncü taraf ürünlerde yaygın olduğu dikkate alındığında, zafiyetin kritik öneme sahip olduğu anlaşılmaktadır.

İkinci aşamada, deserializer (deserializer - çözücü) sürecinin kötüye kullanımını gerçekleştirmek için bir payload (yük) oluşturmak gereklidir. Bu payload, zararlı verilerin PHAR: protokolünü kullanarak unserialize() fonksiyonunun bir parçası olarak işlenmesini sağlar. Bunun için aşağıdaki gibi bir PHP kodu örneği hazırlanabilir:

<?php
class Exploit {
    public function __destruct() {
        system('id'); // Kötü niyetli komut burada çalıştırılacak
    }
}

$phar = new Phar('phar://malicious.phar');
$phar['exploit'] = serialize(new Exploit());

Bu kod, Exploit adında bir sınıf tanımlar ve __destruct() metodu içinde kötü niyetli bir sistem komutu çalıştırır. Kütüphane deserialization aşamasında bu sınıfı çözümleyebilecek ve sonuç olarak belirli bir komutun yürütülmesine neden olacaktır.

Üçüncü aşama, hazırlanmış olan payload'ı hedef sisteme iletmektir. Bunun için bir HTTP isteği yapılması gerekecektir. Aşağıdaki örnek, bu tür bir isteği nasıl gönderebileceğinizi göstermektedir:

curl -X POST http://hedef-site.com/upload.php -F "file=@malicious.phar"

Bu istek, malicious.phar dosyasını hedef sunucudaki upload.php dosyasına yükleyecektir. Sunucu bu dosyayı işlediğinde, unserialize() çağrısı yapılacak ve daha önce oluşturduğumuz kötü niyetli payload çalıştırılacaktır.

Dört aşama tamamlandığında, saldırgan belirlenen komutu başarıyla yürütüyor olmalıdır. Ancak bu aşamaların tümü etik hackerlık kuralları çerçevesinde gerçekleştirilmelidir. Saldırı gerçekleştirmeden önce, yasal izinlerin alınmış olduğundan emin olunması ve yapılan her türlü testin sadece saldırganın niyetlerine hizmet etmekten çok, güvenliğin artırılması amacıyla yapıldığını unutmamak gerekmektedir.

Sonuç olarak, CVE-2020-28949 zafiyeti, PEAR Archive_Tar kütüphanesinin belirli özelliklerinden yararlanarak uzaktan kod yürütme (RCE) saldırıları gerçekleştirmeye olanak tanır. Bu tür bir güvenlik açığının sömürülen sistemlerdeki etkisi oldukça büyük olabilir. Bu nedenle, bu tür zafiyetlere karşı uygulamaların ve sistemlerin düzenli olarak gözden geçirilmesi ve gerekli güncellemelerin yapılması önemlidir.

Forensics (Adli Bilişim) ve Log Analizi

PEAR Archive_Tar zafiyeti (CVE-2020-28949), uzaktan saldırganların adli bilişim ve log analizi süreçlerinde tespit edilebilecek önemli bir güvenlik açığıdır. PEAR (PHP Extension and Application Repository), üçüncü partiler tarafından yaygın olarak kullanılan bir PHP bileşenleri framework'üdür. PEAR Archive_Tar kütüphanesinin, 'phar:' kaynaklarını engellemesine karşın 'PHAR:' kaynaklarının engellenmemesi, bu zafiyetin temel sebebidir. Bu durum, saldırganların, zararlı yükler eşliğinde PHP uygulamalarının veri yapılarına zarar vermesine olanak tanır. Zafiyetten yararlanarak, uzaktan kod çalıştırma (RCE - Uzaktan Kod Çalıştırma) saldırıları gerçekleştirilebilir.

Bu tür bir saldırının tespit edilmesi için, siber güvenlik uzmanlarının log dosyalarını derinlemesine analiz etmesi gerekmektedir. Özellikle, Access log (Erişim kaydı) ve Error log (Hata kaydı) dosyaları, olası saldırıları tanımlamak için kritik öneme sahiptir. Örneğin, log dosyalarında PHAR kaynaklı erişim taleplerini incelemek, potansiyel bir saldırı girişimini belirlemede anahtar rolü oynar.

Log kayıtlarında dikkat edilmesi gereken bazı imzalar (signature) şunlardır:

  1. PHAR Dosya İstemleri: Log dosyalarında 'PHAR:' şeklinde herhangi bir giriş, şüpheli davranış olarak değerlendirilebilir. Örneğin, aşağıdaki gibi bir erişim kaydı:
   192.168.1.1 - - [10/Oct/2023:14:32:01 +0300] "GET /path/to/file.phar HTTP/1.1" 200 2326

Bu tür bir kayıt, dikkatlice incelenmelidir çünkü zararlı bir PHAR dosyasının erişim taleplerini temsil edebilir.

  1. Anormal HTTP Yöntemleri: Log kayıtlarında görülen GET, POST gibi standart HTTP yöntemlerinin dışındaki yöntemler (örneğin, PUT veya DELETE), potansiyel bir kötü niyetli saldırganın izlerini gösterebilir.

  2. Zaman Damgaları: Belirli bir zaman aralığında aşırı sayıda hatalı veya şüpheli istek kaydı, bir saldırganın brute-force (kaba kuvvet) saldırısı gerçekleştirmeye çalıştığını gösterebilir.

  3. Hata Mesajları: Error log dosyaları, PEAR Archive_Tar ile ilgili hatalar içerebilir. Örneğin, aşağıdaki gibi bir hata kaydı:

   PHP Warning:  Missing argument 1 for Archive_Tar::extractInDirectory() in /path/to/library/Archive/Tar.php on line 123

Bu tür hatalar, uygulamanın beklenmedik bir şekilde çalıştığını ve buna bağlı olası bir güvenlik açığını gösterebilir.

Bir siber güvenlik uzmanı, yukarıda belirtilen imzalara dayanarak güvenlik açığının kötüye kullanılıp kullanılmadığını değerlendirebilir. Önleyici tedbirler almak ve bu tür saldırılara karşı savunma mekanizmalarını güçlendirmek adına, sürekli log analizi ve mevcut güvenlik politikalarının güncellenmesi zorunludur. Özellikle, şüpheli PHAR dosya işlemleri üzerine odaklanmak, potansiyel saldırıların erkenden tespit edilmesine yardımcı olabilir.

Son olarak, PEAR Archive_Tar zafiyetinin kötüye kullanılmasına yönelik önleyici tedbirler arasında güncel yazılım sürümleri kullanmak, dosya yükleme kontrollerine dikkat etmek ve uyumlu kod denetimleri gerçekleştirmek yer almaktadır. Uygulama geliştirme sürecinin her aşamasında güvenlik en yüksek öncelik olmalıdır. Bu sayede, olası güvenlik açıkları minimize edilebilir ve sistemin bütünlüğü sağlanabilir.

Savunma ve Sıkılaştırma (Hardening)

PEAR Archive_Tar bileşeninde bulunan CVE-2020-28949 zafiyeti, kötü amaçlı kullanıcıların kaynak kodunu veya verisini ele geçirmesine olanak tanıyan bir deserialization (serileştirme) açığını gündeme getirmektedir. Bu tür bir güvenlik açığı, bir uygulamanın beklenmedik ya da zararlı bir veriyi işlemesi sonucunda ortaya çıkabilir ve sıklıkla uzaktan kod yürütme (RCE - Remote Code Execution) saldırılarıyla sonuçlanabilir.

Olumsuz etkilerinin önlenmesi için öncelikle, PEAR Archive_Tar bileşeninin güncel sürümünü kullanmak gereklidir. PEAR, uygulamaların ve bileşenlerin güvenliğini artırmak için düzenli güncellemeler sağlamaktadır. Bu nedenle, geliştirme ortamında kullanılan tüm kütüphanelerin güncel tutulması büyük bir önem taşır.

Ayrıca, uygulamanızda PHAR (PHP Archive) dosyalarının kullanımına ilişkin kısıtlamalar getirilmelidir. "phar:" protokolü engellenmiş olsa da "PHAR:" protokolünün engellenmemesi, uygulamanızda bir güvenlik açığı oluşturabilir. Uygulamaların PHAR dosyalarını işe alırken sıkı güvenlik denetimleri gerçekleştirmesi gerekir. Bunun için yapılacak ilk iş, serileştirme ve deserialization işlemleri sırasında geçirilen verilerin temizlenmesi ve doğrulanmasıdır. Aşağıda bir örnekle, nasıl bir doğrulama yapılabileceği gösterilmektedir:

$data = $inputData; // Kullanıcıdan alınan veri
if (isValidData($data)) { 
    $object = unserialize($data);
} else {
    // Hatalı veri işleme
    throw new Exception('Geçersiz veri');
}

Güvenlik duvarları ve Web Uygulama Güvenlik Duvarı (WAF) kullanarak da ek koruma katmanları oluşturmak mümkündür. Örneğin, WAF üzerinde aşağıdaki gibi kurallar oluşturularak, şüpheli PHAR dosya isteği ve serileştirme verilerine kısıtlamalar getirilebilir:

  • IP tabanlı erişim denetimi: Şüpheli IP’lere kısıtlamalar getirerek kötü niyetli isteklerin önlenmesi.
  • Şüpheli yüklerin (payload) engellenmesi: Belirli karakter dizilerini veya örüntüleri içeren isteklerin otomatik olarak engellenmesi.

Kalıcı sıkılaştırma önerileri arasında, uygulamanın ihtiyaç duyduğu kütüphaneleri tercihen minimize etmek ve mümkün olduğunca az bileşen kullanarak yüzey alanını daraltmak yer alır. Sadece gerekli olan PEAR bileşenlerini kurmak ve bunları güncel tutmak, sistemin savunmasında önemli bir yer tutar.

Ayrıca, uygulama sunucularında, sadece gerekli izinlerin verilmesi de önemlidir. Bu, birçok zararlı yükün işletim sistemine erişimini kısıtlayabilir. Örneğin, PHP hata raporlama seviyesini minimuma indirerek yalnızca kritik hataların bildirilmesini sağlayacak şekilde yapılandırma yapabilirsiniz:

error_reporting(E_ERROR | E_WARNING | E_PARSE);

Son olarak, devreye alınacak güvenlik denetimleri ve izleme sistemleri, saldırganların sistemde herhangi bir zararlı eylemde bulunmasını önleyebilmek için büyük önem taşır. Log (kayıt) anlık izleme sistemleri ile, şüpheli davranışları tespit edip bu tür olaylara hızlı müdahale etme imkânı elde edilir. Bu sayede, PEAR Archive_Tar ve benzeri kütüphanelerdeki potansiyel zafiyetler en aza indirilir.