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