webuygulama_guvenligi.
Transkript
webuygulama_guvenligi.
WEB UYGULAMA GÜVENLİĞİ HAKKINDA Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı İçindekiler • Bilinen en popüler web uygulama atakları • Güvenli yazılım geliştirme • Prosedürler Bilinen en popüler ataklar • • • • XSS (Cross Site Scripting) SQL Injection CSRF (Cross Site Request Forgery) LFI (Local File Inclusion) & RFI (Remote File Inclusion) XSS (Cross Site Scripting) • Atak yapan kişi sayfanızı input öğelerine javascript, vb script, html(onchange,onclick), kodlarını gömerek saldırır. • En genelde ikiye ayrılır ; – Kalıcı olmayan XSS : Sayfada herhangi bir değişiklik olmaz link 1 kere çalışır ve atak yapan istediğini aldıktan sonra işini bitirir. Açığı olan link sosyal mühendislikle email atılır ve kurbanların tıklanması sağlanır. – Kalıcı XSS : Kullanıcı forum postu veya profiline girdiği script veritabanına saklanır ve her sayfa çağrıldığında çalıştırılır. XSS Örnekler • guest<script>alert('attacked')</script> • guest<script>alert(document.cookie)</script> • guest <script>document.cookie="security=low";alert (document.cookie)</script> SQL INJECTION • Temel SQL Injection • Kör-Karambole (Attır-Tuttur) (Blind) SQL Injection SQL Injection Örnekleri • • • • 1' OR ' 1=1; -3' and 1=0 union select null, version()# 3' and 1=0 union select null, user()# 3' and 1=0 union select null, database()# low.php $id = $_GET['id']; $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"; Güvenli Yazılım Geliştirme • ESAPI (Enterprise Security API) • Microsoft Design Guidelines for Secure Web Applications (Eski bir dökümantasyon ama günümüze uyarlanabilir.) • SANS Security Checklist • OWASP Web Uygulama Güvenliği Kontrol Listesi Güvenli Yazılım için Yapılması Gerekenler – Girdilere Dikkat !!! • Kullanıcı girdilerine güvenmeyin (textbox, checkbox, vb.) • Girdilerin kontrolünü sadece istemci taraflı yapmayın. • Girdileri sırasıyla Constraint -> Reject -> Sanitize kuralına göre eleyin. Güvenli Yazılım için Yapılması Gerekenler – Kimliklendirme • • • • • • • • Kullanıcılara şifre ve kullanıcı adını sorarken kesinlikle düz metin (http) protokolünü kullanmayın. Https Kullanın !!! Şifreleri kesinlikle düz metin olarak saklamayınız. Şifre hashi üretirken hashin tuzunu rassal olarak üretin. Oturum yönetimi için cookielerini secure olarak işaretleyin. (protokol https dahi olsa cookie secure olmadığında cookie hırsızlığıyla oturum çalınabilir.) Oturum kapanana kadar aynı cookie yi kullanmayın. Şifreyi geçersiz kılma süresini belirleyebilmeyi mümkün kılın. Hesabı kitleme veya geçersiz kılma politikalarını belirleyin.(örnek: 5 kere aynı ipden yanlış şifre girerse hesabı 1 günlüğüne engelle) Şifre uzunluğu ve karmaşıklığını kuvvetli tutun. (En az 8 karakter alfanumerik, özel karakter, büyük küçük harf vb.) Güvenli Yazılım için Yapılması Gerekenler – Oturum Güvenliği • Oturum Kimliklendirme Cookilerini korumak için SSL kullanın. • Kimliklendirme Cookielerinin içeriğini şifreleyin. • Cookie ömürlerini kısa tutun. • Oturum durumunu yetkisiz kişilere karşı koruyun. (Büyük sistemler için) Zaafiyetler ve Oluştukları Sorunlar Özet Tablo Zaafiyet Kategorisi Kötü Dizayn edildiğinde olası karşılaşılacak problemler Giriş Doğrulaması Ataklar form alanlarına , cookielere, http başlıklarına ve sorgulara zararlı stringler gömerek gerçekleştirilir. Bu ataklar XSS, SQL Injection, ve tampon taşırma ataklarını içerir. Kimlikliklendirme Kimlik kandırma, şifre kurma, hak yükseltme, yetkisiz erişim gibi sorunlar doğurur. Yetkilendirme Gizli ve hizmete özel verilere yetkisiz erişim, bu verilerle oynama, veya yetkisiz işlemlerin gerçekleştirilmesi gibi sorunlara sebep vermektedir. Yönetim Ayarları Yönetim arayüzüne yetkisiz erişim, ayaların güncellenmesi kullanıcı hesaplarına yetkisiz erişim. Gizli Hassas Veri Gizli verinin açığa çıkması ve veri ile oynanması Oturum yönetimi Oturum bilgilerinin dinlenerek elde edilerek oturum hırsızlığı ve kimlik kandırma giibi sorunlara yol açmaktadır. Şifreleme Gizli veri ve kullanıcı hesaplarına erişim Parametre ile Oynama Dizin atakları, Komut Çalıştırma atakları, giriş kontrol mekanizmalarını atlatma, bilgi açığa çıkartma, hak yükseltme , dos (denial of service) ataklarına yol açmaktadır. Exception Yönetimi Dos, hassas sistem düzey detaylarının ortaya çıkması. Denetim ve Kayıt tutma(log) Atağın nereden geldiğinin tespitinin yapılamaması, kullancının yaptığı bir işlemi ispatlayamama, problemlerin nerden kaynaklanabileceğini tespit edememe gibi sorunlara meydan vermektedir. ESAPI (Enterprise Security API) • Web Uygulamaları için Güvenlik Kontrol Kütüphanesi • Java, .Net, PHP, Javascript sürümleri mevcuttur. • Ücretsiz ve Açık Kaynak Kodludur. ESAPI (Enterprise Security API) OWASP TOP 10 & ESAPI OWASP Top Ten OWASP ESAPI A1. Cross Site Scripting (XSS) Validator, Encoder A2. Injection Flaws Encoder A3. Malicious File Execution HTTPUtilities (Safe Upload) A4. Insecure Direct Object Reference AccessReferenceMap, AccessController A5. Cross Site Request Forgery (CSRF) User (CSRF Token) A6. Leakage and Improper Error Handling EnterpriseSecurityException, HTTPUtils A7. Broken Authentication and Sessions Authenticator, User, HTTPUtils A8. Insecure Cryptographic Storage Encryptor A9. Insecure Communications HTTPUtilities (Secure Cookie, Channel) A10. Failure to Restrict URL Access AccessController Fonksiyonlar User isValidCreditCard isValidDataFromBrowser isValidDirectoryPath isValidFileContent isValidFileName isValidHTTPRequest isValidListItem isValidRedirectLocation isValidSafeHTML isValidPrintable safeReadLine Controller Validator Business Functions Data Layer Encoder Canonicalization Double Encoding Protection Sanitization Normalization Backend encodeForJavaScript encodeForVBScript encodeForURL encodeForHTML encodeForHTMLAttribute encodeForLDAP encodeForDN encodeForSQL encodeForXML encodeForXMLAttribute encodeForXPath ESAPI Örnek