PHP <5.3.1 Denial of Service

Uzun zamandır yazamıyordum, gezegen biraz paslanmış ama bu girdi gezegenin pasını alacak gibi görünüyor :)

Birkaç gün önce PHP 5.3.1 yayınlandı, birçok hatayı ve güvenlik açığını kapatıyor. Güvenlik güncellemeleri şu şekilde:

  • Added “max_file_uploads” INI directive, which can be set to limit the number of file uploads per-request to 20 by default, to prevent possible DOS via temporary file exhaustion.
  • Added missing sanity checks around exif processing.
  • Fixed a safe_mode bypass in tempnam().
  • Fixed a open_basedir bypass in posix_mkfifo().
  • Fixed failing safe_mode_include_dir

İçlerinden en önemlisi kalın olarak belirttiğim “max_file_uploads” seçeneği. PHP 5.3.1 ‘den önceki sürümlerde bu özellik yok ve üzerinde PHP çalıştıran herhangi bir sunucu 1 dakika içerisinde isteklere yanıt veremez hale getirilebiliyor. Upload edilen dosyanın işlenip işlenmemesi önemli değil, sadece boş bir index.php barındırmanız bile yetiyor!

Açık PHP’nin dosya upload sırasında geçici dosya oluşturmasından kaynaklanıyor. Eğer art arda 16.000+ dosya upload isteği gönderirseniz, sunucu geçici dosya yaratma ve silme ile aşırı derecede meşgul olacağı için normal isteklere cevap veremez hale geliyor. Bu süre zarfında %100 ‘e yakın işlemci tüketmesi ve büyük miktarda bellek kullanması da cabası.

Bununla birlikte açığın kullanıldığına dair çok net bir işarete rastlayamıyorsunuz. Sadece log dosyanızda aynı IP adresinden gelen birkaç yüz tane POST isteği görülecek. POST isteklerinin içeriğin görülemediği için, eğer bu açıktan haberdar değilseniz dikkatinizi o yöne değil de başka yerlere vererek sunucunuzun neden erişilmez olduğunu anlayamayacaksınız. Daha da kötüsü, her zaman kolayca kullanılabileceği için sisteminiz büyük risk altında olacak :)

Açık Bogdan Calin tarafından bulundu. Daha ayrıntılı bilgi için [0] adresini okuyabilirsiniz. Kendisi kullandığı scripti vermeyeceğini yazmış ancak biraz araştırma ve deneme ile açığı exploit eden kodu yazdım ve yayınlıyorum. :) Kod [1] adresinde.

Şu anda Türkiye’de PHP içerik sunan sitelerin büyük bir çoğunluğu etkinlenir durumda. Hosting şirketleri bu açığı kapatmadığı sürece de etkilenecek…

[0] http://www.acunetix.com/blog/websecuritynews/php-multipartform-data-denial-of-service/

[1] http://www.exploit-db.com/exploits/10242

Peki nasıl korunacağız?

PHP 5.3.1 ile açık kapanıyor. Eğer güncelleme imkanınız varsa 5.3.1’e güncelleyin. Ancak PHP 5.3.1 ile birçok özellik değişmiş durumda ve PHP 5.2.x ile çalışan pek çok uygulama 5.3.x ile çalışmayacaktır. Bu yüzden büyük ihtimalle PHP 5.2.x kullanıyorsunuz. Eğer tahmin ettiğim gibiyse, 5.2.x yamaları aşağıda. Yamaları uygulayıp PHP’yi tekrar derleyin ve sunucunuzu yeniden başlatın.

http://svn.php.net/…/main/rfc1867.c?r1=272374&r2=289990

http://svn.php.net/…/main/main.c?r1=289214&r2=289990 (NOT: Buradaki 100 değeri sonradan 20 olarak değiştirildi, siz de 20 olarak değiştirip uygulayın)

Güvenli olup olmadığımı nasıl anlarım?

Çok basit. Aşağıdaki adresindeki dosyayı alıp sunucunuz üzerinde dosya uzantısı *.php olacak şekilde çalıştırın. Sizde yamanın olup olmadığını söyleyecektir.

Pardus ne alemde?

Tabi ki açık yayınlandıktan 1 gün sonra yamaları eklendi ve commit [*] edildi. Birkaç gün içerisinde de depoya alındı. Şu anda düzeltilmiş PHP paketi stable depoda. Eğer Pardus kullanıyor ve PHP içerik sunuyorsanız güvenlik açığını kapatmak için PHP paketlerini güncellemeniz yeterli:

sudo pisi ur && sudo pisi up mod_php php-common php-cli

sudo service apache restart

* http://liste.pardus.org.tr/paketler-commits/2009-November/087149.html

Sonra?

Yazdığım bu girdi ve exploit bu tür önemli şeyleri takip etmeyen sistem yöneticilerini uyandıracaktır diye umuyorum. Eğer PHP kullanıyorsanız, lütfen kullandığınız dağıtımın güncellemelerini kontrol edin. Açığın kapanıp kapanmadığına bakın. Hizmet satın alıyorsanız sunucu yöneticinize bu durumu bildirin. Ve lütfen bu girdiyi ulaştırabildiğiniz kadar insana ulaştırın, dağıtın! Böylece insanlar bu konu hakkında bilinçlenecek ve bu açık daha hızlı bir sürede kapanacabilecek..

Önemli Notlar:

Yayınlanan kod ile yapacaklarınız tamamen sizin sorumluluğunuzdadır. Yayınlanan kod sadece eğitim amaçlıdır ve böyle bir şeyin yapılabileceğini göstermek için yazılmıştır.

Reklamlar

UEKAE Dergisi Yayınlandı!

Uzun bir çalışmadan sonra UEKAE dergisi hayata geçmiş bulunmakta. UEKAE Dergisi Kurulu’na ve dergi için emekte bulunan herkese teşekkürlerimi sunuyorum. Dergiyi büyük bir keyifle okuduğumu belirtmek isterim. Gerçekten yazılanların hepsi ilgi çekici ve okuması bir o kadar zevkli. Dergi’yi http://dergi.uekae.tubitak.gov.tr/ adresinden online olarak okuyabilirsiniz.
Uluslararası Savunma Sanayi Fuarı IDEF2009 İstanbul'da Yapıldı

Değerli Okurlar,

Uzun süredir hayalini kurduğumuz UEKAE Dergisi’nin bir yılı aşkın süren titiz ve özverili bir çalışma sonucunda hazırladığımız ilk sayısını sizlerle paylaşmaktan büyük heyecan, sevinç ve gurur duyuyoruz.

Dergimiz, kuruluş tarihi 60’lı yıllara uzanan UEKAE’nin, Ulusal Elektronik ve Kriptoloji Araştırma Enstitümüzün, temel uzmanlık alanları olan bilgi güvenliği, haberleşme ve ileri elektronik alanlardaki bilgi ve deneyimini siz okurlarımızla buluşturmayı amaçlıyor. Bir diğer hedefimiz de UEKAE dergisi ile ülkemizde bu uzmanlık alanlarında güvenilir Türkçe kaynak oluşturmak.

UEKAE Dergisi’nin her sayısında sizlerle uzmanlık alanlarımızdaki konulardan oluşan yazı dizileri ile karşınıza çıkıyor olacağız. Ayrıca, her sayının kapak konusunu ayrıntılı bir biçimde ele alarak sizlere konuyu farklı yönleri ile değerlendirme fırsatı sunmayı planlıyoruz. Enstitümüz uzmanlarının ve araştırmacılarının gerek akademik, gerek profesyonel çalışmalarını yansıtan makaleler bölümünün de son derece faydalı olacağı inancındayız. Başarı öyküsü bölümünde ise, kendilerini her zaman saygı ile andığımız, hem endüstri, hem akademi hem de Enstitümüz için önemli hizmetleri bulunan kişileri tanıtma imkanı bulacağız. Ayruca dergimizde UEKAE ile ilgili haberleri ve ürünlerimize dair bilgileri de aktarıyor olacağız.

Dergimizin ülkemiz için kalıcı bir bilgi kaynağı olması ümidiyle çalışmalarımızı sürdürürken, siz değerli okurlarımıza keyifli okumalar ve esenlikler diliyoruz.

UEKAE Dergisi Yayın Kurulu


İçindekiler:

Onur Yazısı – Nüket YETİŞ

Başlarken – Mehmet Önder YETİŞ

TÜBİTAK UEKAE’nin Başarı Yolculuğu – Sermet SÜER, Eniş TÜYENİ, Çağrı KOÇ

Kapak Konusu:

Kriptoloji Tarihi – Mustafa Ümit ÇEŞMECİ

Günümizde Kriptoloji – Uğur Kaşif BOYACI

Kuantum Bilgi Güvenliğine Doğru – Şeref KALEM

Yazı Dizileri:

Elektronik İmza: Genel Bir Bakış – Ersin GÜLAÇTI

Kriptografik Cihazlar: Milli Kriptolu Cep Telefonu – Gökhan VICIL, İmran ERGÜLER

Akıllı Kartlar ve Uygulamaları: Akıllı Kart Nedir? – Mustafa Başak

Pardus: Pardus ve Kriptografi – A. Murat EREN

Elektronik Harp: Tanıtımı Kapsamı ve Türkiye İçin Önemi – S. Gökhun TANYER, M. Alper KUTAY, D. İlhan TÜFEKÇİ

Kurumsal Yönetim: Kurumsal Yönetim Sistemlerine Giriş – Suha ERSİN

Herkes İçin Proje Yönetimi: Proje Yönetimine Başlarken – Hayal ŞENYURT

Makaleler:

Dengeli Uzay-Zaman Blok Kod Seçimi İçin Bir Bit Hata Olasılığı Çözümlemesi – Selami ŞAHİN

Rasgelelik (Rastlantısallık) Kavramına Genel Bir Bakış – C. Nezih GEÇKİNLİ

Radar Antenleri – I: Yarıklı Dalga Kılavuzu Antenleri – Bahattin TÜRETKEN, Lale ALATAN, Feyzullah YAYIL

Başarı Öyküsü:

Prof. Dr. Yılmaz TOKAD – Aydın KUBİLAY

Serbest Kürsü:

İşleyen Dil Işıldar: Hatice Nur YANANLI