Web Uygulama Güvenliği Çağrı TIRAŞ Danışman: Kerem ERZURUMLU Sunum Planı • • • • • • • • • Web Uygulamaları Web Uygulama Mimarisi Web Uygulamaları için Güvenlik İhtiyacı Ağ Güvenliği Sunucu İşletim Sistemi Güvenliği Web Sunucu Yazılım Güvenliği Uygulama Yazılımı Güvenliği Güvenliğin İzlenmesi ve Saldırıların Tespiti Özet ve Sonuç Web Uygulamaları • • • • • Kullanıcılar ile etkileşimi sağlar İstemci/Sunucu mimarisinde çalışır Genelde sunucu üzerinde çalışır Platformdan bağımsızdır Uygulama yazılımı seçimi esnekdir • PHP, ASP, CGI(C, Perl, Shell, Delphi) Web Uygulama Mimarisi • Üç Katmanlı Yapı • Depolama Katmanı (Veritabanı) • İş Mantığı ve Süreç Katmanı (Uygulama Sunucu) • Sunum Katmanı (İstemci Tarayıcılar) İstemci Veritabanı Sunucusu VTYS Özel Uygulama Sunucu Veritabanı Sunucusu HTTP İstemci İstemci Uygulama Sunucu Farklı İstemciler • Alabildiğine hafif (Ultra-thin) istemciler • “Herkes bağlansın, herkes kullansın” • HTML ve JavaScript desteği yeterli • Microsoft İstemcileri • HTML ve ActiveX desteği • Java İstemcileri Web Uygulamaları için Güvenlik • Web Uygulamaları Hızla Artıyor • Bankacılık, öğrenci işleri, e-ticaret siteleri ... • Web Uygulamalarına Yönelik Saldırılar Artıyor • CSI/FBI araştırmasına göre saldırılar son dört yıldır her yıl ikiye katlanıyor • Kaybedilebilecekler / Zararlar • Müşterilere özel bilgiler • Prestij • Hizmette aksaklıklar • Para Ağ Güvenliğinin Sağlanması • Ağın uygun bir biçimde bölümlendirilmesi ve güvenlik duvarları ile ağ bölümleri arasında yalıtımın gerçekleştirilmesi • Web sunucu bilgisayar sistemine HTTP dışında isteklerin ulaşmasının engellenmesi • Güncelleme işlemleri için yalnızca kısıtlı sayıda güvenilen bilgisayar sistemine izin verilmesi Sunucu İşletim Sistemi Güvenliği • Yazılım güncellemelerinin yapılması • Güncel sürümler için mevcut yamaların uygulanması • Çalışması şart olmayan ağ hizmetlerinin durdurulması • Parolaların düzenli olarak güvenliğinin denetlenmesi Sunucu İşletim Sistemi Güvenliği - II • Yalnızca gerektiği kadar yetki verilmesi • Kullanıcılara • Çalışması zorunlu sunucu yazılımlarına • Sunucu yazılımlarının yetkili-kullanıcı olarak çalıştırılmaması • Pek çok sunucu yazılımı sıradan-kullanıcı yetkileri ile de çalışabilir (Örn. root yerine nobody, Administrator yerine Oracle) • Öntanımlı sistem şifrelerinin değiştirilmesi (Örn. Oracle/system) Web Sunucu Yazılımı Güvenliği • Web sunucu yazılımı ile birlikte gelen örnek uygulamaların kaldırılması • Web sunucunun belirli bir küme dosya türü dışında dosyayı işlememesinin sağlanması • Yalnızca .html, .asp, .php, .jsp, .txt dosyalarının işlenmesi ve sunulması • Dizin listesi gösteriminin iptal edilmesi Uygulama Yazılımlarının Güvenliği • Varsayım: Kullanıcıların tümü art-niyetlidir • Kullanıcılardan alınan her türlü bilgi girdisinin • Uzunluk • Tür • İçerik denetimlerinin gerçekleştirilmesi Uygulama Yazılımlarının Güvenliği - II • Oturum Yönetiminin Dikkatli Programlanması • Kullanıcı tarafında depolanan çerezler kullanıcılar tarafından değiştirilebilir • Çerezlerin içerisinde yalnızca kullanıcıyı tanımlayacak bilgi girilmeli, diğer tüm bilgiler sunucu üzerinde tutulmalıdır • Kullanıcıyı tanımlayan bilginin “artıklığı” yüksek olmalı, tahmin ile bulunamamalıdır Yığıt Taşırma • Bir uygulama yazılımında tanımlanmış küçük bir alana büyük bir veri yüklemeye çalışırsanız ne olur? • Uygulama çakılır • Bazı durumlarda, uygulamanın ‘istenmedik’ komutları işletmesi sağlanabilir Programlama Örneği void dikkatsiz(char *param) { char hataKaynagi[16]; strcpy(hataKaynagi,param); ... } http://kurban.edu.tr/cgi-bin/swc?ctr=XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Yığıt Düzeni Belleğin Başı yereller Belleğin Sonu sçg Dönüş @ param Yığıtın Üstü void dikkatsiz(char *param) { char hataKaynagi[16]; strcpy(hataKaynagi,param); ... } Yığıtın Altı Örnek Zayıf Sayfa Örnek Saldırı Güvenliğin İzlenmesi ve Saldırı Tespiti • Bilindik saldırıları tespit etmek ve kaydını tutmak üzere ağ temelli saldırı tespit sistemleri kullanılabilir saldirgan1.saldiran.edu.tr - - [27/Nov/2001:18:13:28 +0200] "GET /search.dll?query=%00&logic=AND HTTP/1.1" 404 216 "-" • Saldırganların sisteme sızmayı başarması durumunda ilk yapacakları sonraki girişleri için arka-kapı açmak olacaktır • Dosya bütünlük denetleyicileri ile dosya ve dizinlerdeki beklenmedik değişiklikler tespit edilebilir • Web sunucu kayıtlarındaki anormallikler izlenmelidir Özet ve Sonuç • Web uygulamalarının güvenliğinin sağlanması için uygulanabilecek birkaç temel adım pek çok saldırıyı engelleyecektir • Ağ güvenliğinin, sistem güvenliğinin, sunucu yazılımı güvenliğinin sağlanması • Uygulama geliştirme sürecinde güvenlik boyutunun düşünülmesi/değerlendirilmesi • Sistem ve sunucu kayıtlarının düzenli incelenmesi ve problemlerin analizi