RSS feed
<< Shmoocon 2008 Videolar Online | Home | Nikto Must Die! >>

PHP 6 ve Hızlı Bir Güvenlik İncelemesi

PHP 6 ile birlikte PHP takımı güvenlik mekanizmalarında bazı değişikliklere gitmiş.Henüz doğru düzgün kullanılmaya başlanmasa da gözüme çarpan yeniliklerden kısaca üzerlerinden geçmek gerekirse :

1 - register_globals :

Tüm PHP güvenlik kitaplarında, ya da ilgili literatürde sıkça rastlanan popüler güvenlik sorunlarından biridir register_globals. Kısaca kodun içinden GET, POST,COOKIE,SESSION dizilerinden de normal bir değişkenmiş gibi erişebiliyordunuz ve olası ilk dikkatsizliğinizde SQL Injection,XSS uğraşmak zorunda kalıyorsunuz. Haricinde uygulamanın akış şemasını çözebilirseniz, kod içindeki değişkenlere müdahale edebileceğiniz için daha farklı şekillerde de saldırırken kullanılabilir.

PHP sürüm bilmem kaç ile beraber zaten default olarak kapalı gelmekteydi, toptan temizlenmesi güzel olmuş.

2 - magic_quotes :

Daha once SQL Injection derslerimizde de bahsettiğim üzere aslında yeni başlayanlar için bir çok durumda SQL Injection’dan kurtarsa da genel olarak pek kullanışlı bir mekanizma değil. Zira kodun çalışacağı ortamdaki magic_quotes ayarının açık olup olmayacağı bilinemeyeceği için iki ihtimali düşünerek kod yazmak lazım, yani once bu ayar aktif mi diye bakıyoruz; değilse SQL Injection’dan kendi başımıza korunmaya çalışıyoruz. Bu da pek verimli bir mekanizma olmuyor haliyle (ve her durumda koruma sağlayamayacağını söylemeye gerek yok sanırım!)

Haricinde felsefe olarak da pek sağlıklı değil, bu kontroller ve tehditlerden kaçınmak web uygulaması programcısının sorumluluğunda olmalıdır diye düşünüyorum, hazır mekanizmalara sırt dayamak bana nedense pek mantıklı gelmiyor. Neyse ki PHP 6.0 ile bu atraksiyon da kaldırılmış.

evet evet bu kliseyi ben de kullandim3 - Safe Mode :

Shared-hostinglerdeki görülen, dosya okuma/erişme izinleri ile ilgili güvenlik problemlerini çözmek için düşünülen bir mekanizma olsa da PHP Manuelinde de belirtildiği üzere bunu PHP seviyesinde yapmak, yanlış bir güvenlik mimarisi olacaktır.

Kısaca bu özellik de temizlendi ve kafamızı karıştırmayacak. (Bu arada Shared-Hosting işleri problemli olarak hayatına devam edecek)

4 - Hardened PHP Patch :

Stefan Esser’in PHP’yi daha güvenli hale getirmek için yazdığı yama PHP motorunun içine gömülecekmiş. Kağıt üzerinde güzel gibi dursa da; daha once bu patchi pek kurcalamadim ve bu bu birliktelik ne ölçüde güvenlik sağlayacak, başarılı olacak mı şu an itibariyle kestiremiyorum, zaman içinde göreceğiz.

Uzun lafın kısası, elverişsiz mekanizmalardan arındırılmış fakat Hardened PHP Patch dışında yeni bir numarası yok, onu da saymazsak yine pek güven vermiyor.



Re: PHP 6 ve Hızlı Bir Güvenlik İncelemesi

Birkaç yerde yarım yamalak İngilizce metinlere rastlamıştım. Zamanında ve güzel açıklama olmuş teşekkürler.

Re: PHP 6 ve Hızlı Bir Güvenlik İncelemesi

Güzel bir Mesut Timur çalışması olmuş =) 

Safe Mode olayının kaldırılması biraz sakat olmuş, ne olursa olsun bir grup kötü niyetli insalara karşı az da olsa bir güvenlik vaad ediyordu.

register_globals ve magic_quotes için ise iyi olmuş diyorum (=

Re: PHP 6 ve Hızlı Bir Güvenlik İncelemesi

Bana kalırsa biraz yetersiz/fazla hızlı bir makale olmuş; PHP 6'da güvenlik konusunu ele alırken Hardened PHP patch'i haricindekiler zaten php 5'de tavsiye edilen başlıklar (register globals'i kapalı tutmak, safe mode açmamak) 'da çokça konuşuldu-nedenleri anlatıldı, bu opsiyonların php 5.0'da kalkmamasının sebebinin uygulamaların geçişini zorlaştırmamak olduğu açıklandı. Tabii ki PHP 6.0 bu özellikleri baştan kapatıp, PHP geliştiricilerini buna zorladığında toplamda daha güvenli diye anılacaktır, ama işin özünde bu konuda aslında kayde değer bir gelişme yok. Opsiyoneldi, kaldırılmış, o kadar.

Hardened PHP Code'a gelince, bence başlı başına incelenmesi gereken birşey, eğer bir makalenin başlığı 'PHP 6.0`da Güvenlik 'se, içeriğinin asıl yoğunlaşması gereken yer de Hardened PHP Code projesi.

Aslında iyi bir güvenlik takipçisinden dileğim de bu, inceleyebilir ve  hardened projesiyle ilgili bir yazı sunarsanız, eminim buna sevinecek çok kişi olur. Ben biraz inceledim fakat güvenlikten çok üretime kattığı özellikleri (cookie enc., vb) beni çektiğinden yaklaşımım da sizden farklı olmuştur. Bir güvenlikçinin gözüyle hardened projesiyle ilgili kaçırdığım yerleri görmeyi de çok istiyorum.

Re: PHP 6 ve Hızlı Bir Güvenlik İncelemesi

Aslinda cok dogru yakalamissiniz, bu bir makale degil, bir makale icin oldukca eksik ve yetersiz. Zaten onun icin yazinin tag'leri arasinda "makale","paper" gibi bir tag yok ya da sag taraftaki makaleler kisminda yer almiyor.

Yazinin genel amaci haber vermekti.

Haricinde, Hardening Patch ile ilgili olarak soyleyeceklerim yukaridakilerden cok farkli degil, hicbir yerde kullanmadigim icin ne kadar verimli olacagini bilmiyorum. Kagit uzerinde cok guzel durdugu kesin, ayrica bayagi da takipcisi, seveni var. Ama yasamadan  yazmak pek benim tarzim degil. Test ortamlari da gercek hayat kosullarini birebir simule etmekte yetersiz kaldigi icin, production ortamindaki bir http sunucuya bu patch'i yapip bir sure denemeden muhtemelen bir sey yazmam gibi duruyor.
Ama ben de merak etmiyor degilim, bakalim umarim bir yerlerde deneyip performansini gorebiliriz.
Belki ilgilenirseniz, konu ile ilgisi yok ama PHP guvenligi ile ilgili olarak su makaleyi okudum bugun, tavsiye ederim.
Tesekkurler, iyi calismalar

Re: PHP 6 ve Hızlı Bir Güvenlik İncelemesi

guvenlikle ilgili bir konu da, PHP6 ile birlikte gomulu bir input_filter kutuphanesi geliyor.
<?
$blahblah = input_filter_get(GET, 'foo', FL_INT) ?: 42;
?>
ve yine bunun dışında header() fonksiyonu birden fazla HTTP basligi kabul etmeyecek. Bu da HTTP Response Splitting saldirilarini neredeyse bitiriyor.

hardened-php paketini ( suhosin ) localhost'ta pardus ustunde deniyorum bir suredir. kesinlikle basarili bir paket. zaten stefan esser'in elini attigi bir seyden -guvenlik konusunda- niteliksiz bir urun cikmaz :)

sevgiler.

Add a comment Send a TrackBack