Upload
leyna
View
54
Download
0
Embed Size (px)
DESCRIPTION
Korhan GÜRLER [email protected]. Güvenli Web Uygulamalarının Geliştirilmesi. BT Güvenliğinin Değişen Odağı. Bilişim güvenliği problemlerinin büyük bölümü uygulamalara doğru kayıyor Saldırıların %75’i uygulama katmanında gerçekleştiriliyor (Gartner) - PowerPoint PPT Presentation
Citation preview
Copyright © 2007 - The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the Creative Commons Attribution-ShareAlike 2.5 License. To view this license, visit http://creativecommons.org/licenses/by-sa/2.5/
The OWASP Foundation
OWASP Day
Turkey - Sep 2007
http://www.owasp.org/
Güvenli Web Uygulamalarının Geliştirilmesi
Korhan GÜ[email protected]
OWASP Day – Turkey – Sep 2007
BT Güvenliğinin Değişen Odağı
Bilişim güvenliği problemlerinin büyük bölümü uygulamalara doğru kayıyor Saldırıların %75’i uygulama katmanında gerçekleştiriliyor
(Gartner) Saldırganlar ve güvenlik uzmanları arasındaki savaş artan
biçimde uygulama katmanına kayıyor (Network World) Pek çok yazılım ekibi güvenli yazılımları nasıl geliştireceği
konusunda bilgi sahibi değil Geliştiricilerin %64’ü güvenli yazılımlar geliştirebildiklerinden
emin değil (Microsoft) Güvenlik uzmanlarının pek çoğu yazılım konusunda uzman
değildir
OWASP Day – Turkey – Sep 2007
Geleneksel Yaklaşım ile Koruma
Firewall’lar ile sistemlerimizi koruruz “Saldırganları uzak tutalım”
Kriptografi kullanımı yazılımın güvenliğini sağlar “Tüm verilerimizi şifreli saklıyoruz”
Yazılım ürünlerinin bittiğinde test edilmesi Saldır ve yamala (penetrate and patch)
Güvenlik özellikleri yazılımlarımızı güvenli kılar “Biz SSL kullanıyoruz”
Proje hedefleri içerisinde güvenliğin konu edilmemesi “Güvenlik konusunu bir sonraki sürümde ele
alacağız”
OWASP Day – Turkey – Sep 2007
Modern Yaklaşım
Güvenlik “risk yönetimi”dir Öncesinde riskleri analiz etmeden güvenli bir yazılım
geliştirilemez
Güvenlik konusunun geliştirme sürecinin entegre bir parçası olması zorunludur Nihai yazılım ürününün güvenli olması için gerekli
aktivitelerin gerçekleştirilmesi Çeşitli metrikler ile geliştirme süreci boyunca izleme Sürekli iyileştirme
OWASP Day – Turkey – Sep 2007
Yazılım Güvenliği
Nihai yazılım ürününün teknik özellikleri
(features)
geliştirme sürecinin sağladığı güvence(process assurance)
açılarından beklentileri karşılar düzeyde olmasınının sağlanması çabası
OWASP Day – Turkey – Sep 2007
Geliştirme Sürecinde Güvenlik
GüvenlikGüvenlikGereksinimleriGereksinimleriTespitiTespiti
İhtiyaç Analiziİhtiyaç Analizi TasarımınTasarımınTamamlanmasıTamamlanması
Test PlanlarınınTest PlanlarınınTamamlanmasıTamamlanması
KodlamanınKodlamanınTamamlanmasıTamamlanması
SunuşSunuşSunuşSunuşSonrasıSonrası
GüvenlikGüvenlikKalıplarınınKalıplarınınUygulanmasıUygulanması
DışDışİncelemeİncelemeGeliştiriciGeliştirici
EğitimiEğitimi GüvenlikGüvenlikTestleriTestleriGeliştirilmesiGeliştirilmesi
Kaynak kod incelemesiKaynak kod incelemesiStatik kod analiz araçlarıStatik kod analiz araçları
Güvenlik DenetimiGüvenlik DenetimiÖğren veÖğren veİyileştirİyileştir
Dış İncelemeDış İncelemeTehditTehditAnaliziAnalizi
Destek veDestek veOlay MüdahalesiOlay Müdahalesi
TasarımTasarımPrensiplerininPrensiplerininUygulanmasıUygulanması
GeçmişGeçmişZafiyetlerinZafiyetlerinİncelenmesiİncelenmesi
OWASP Day – Turkey – Sep 2007
Güvenli Tasarım Prensipleri
En zayıf halkayı sağlamlaştır Savunma derinliği geliştir ve uygula Hataları güvenli biçimde ele al Minimum yetki prensibini uygula Bölümlendir Güven ilişkilerini gevşet Yalınlığı sağla Gizliliği destekle Şeffaflık sağla
OWASP Day – Turkey – Sep 2007
Güvenlik Tasarım Kalıpları
Bir güvenlik kalıbı, tekrarlanan bir bilişim güvenliği problemi için üretilmiş çözüm şablonudur Yeniden kullanılabilir Özelleştirilebilir Deneyim ve birikim ile süzülmüş Potansiyel problemleri ile birlikte Programlama dilinden, ortamından bağımsız Tasarım kalıbı Yazılım tasarım kalıbı
Kalıp kitaplıkları http://www.securitypatterns.com http
://www.cgisecurity.com/lib/securityDesignPatterns.pdf
OWASP Day – Turkey – Sep 2007
Örnek Kalıplar
Hesap kilitleme (account lockout) Doğrulanmış oturum (authenticated session) İstemcide veri depolama (client data storage) İstemci veri filtreleri (client data filters) Yönlendirilmiş oturum (directed session) Gizlenmiş gerçekleştirim (hidden implementation) Şifrelenmiş depolama (encrypted storage) Mayın tarlası (minefield) Ağ adresi karalistesi (network address blacklist) Bölümlendirilmiş uygulama (partitioned application)
OWASP Day – Turkey – Sep 2007
Tehdit Modelleme
Yazılımınıza yönelik tehditleri bilmeden güvenli bir yazılım üretemezsiniz İçerisine güvenlik özelliklerinin yerleştirilmesi bir yazılımı
güvenli kılmaz “Biz SSL kullanıyoruz” “Biz strong-authentication kullanıyoruz”
Tehdit modellemesi yazılım geliştirmeden önce yapılmalıdır Yazılım güvenlik problemlerinin azımsanmayacak bir
bölümü tasarımdan kaynaklanmaktadır Tehdit modeli belgesi hangi tehditlere karşı önlemler
alındığını gösteren yaşayan bir belge olacaktır
OWASP Day – Turkey – Sep 2007
Saldırı Yüzeyi ve Geliştirme Süreci
Tasarım dokümantasyonunda saldırı yüzeyi belgelenmelidir Ön-tanımlı ağ protokolleri Doğrulama ve yetkilendirme gerektiren uç noktalar
Anonim erişim sağlanabilen noktalar özellikle not edilmeli Ön-tanımlı olarak kapalı olacak özellikler Yeniden kullanılabilir bileşenler Çalışan kodların kullanıcı kimlikleri Tanımlanan kullanıcı hesapları
Göreli saldırı yüzeyi yazılım geliştirme süreci boyunca izlenmelidir Yüzeyin genişlemesi/daralması kontrol altında tutulmalıdır
OWASP Day – Turkey – Sep 2007
Saldırı Yüzeyinin İzlenmesi
Neden yeni bir kullanıcı eklendi? Yetkileri nedir? Parolası nedir? (*)
1 x Uygulama Hesabı
Açılacak kullanıcı hesabı yok
Neden yeni bir port eklendi? Eklenmese olmaz mıydı? Doğrulama yapılıyor mu? Nerelerden bağlanılabiliyor?
2 x UDP port1 x UDP port
İyi gelişme2 x TCP port3 x TCP port
YorumlarBugünBaz Durum
*: Açılan uygulama hesabı güvenliğin sağlanmasına katkı sağlıyor da olabilir
OWASP Day – Turkey – Sep 2007
Gerçekleştirime Özel Konular
“Beklenmediğe hazır ol, çalışması gereken tek bir satır bile çalışmayabilir”
Saldırganın hedefi yazılımın akışını değiştirmek yetkilerini yükselterek yetkisiz işlem yapmak yazılımı çalışmaz hale getirmek
ya da bunların bir bileşkesidir
Hiç olmadık bir anda programcının tüm varsayımları geçersiz hale gelebilir Varsayımlar yok, anormal durumlara devamlı hazırlık
zorunluluğu var
OWASP Day – Turkey – Sep 2007
Girdilerin Sınanması: Neden?
Güvenilmez kaynaklardan gelen tüm girdiler işleme tabi tutulmadan önce sınanmalıdır Uygunsuz girdiler ile bir sürecin işleyişini değiştirmek
mümkündür Neye güvenilebileceği her uygulama ve her kuruluş
için farklı olabilir Kullanıcılardan, ağ üzerinden Sistem üzerindeki diğer süreçlerden Kitaplıklardan (.so, .dll vb.) İşletim sisteminden Uygulama içerisindeki diğer fonksiyonlardangelen verilerin sınanması gerekli olabilir
OWASP Day – Turkey – Sep 2007
Girdilerin Sınanması: Nasıl?
Geçerli olan girdiler tanımlanmalı ve bunun dışındaki veriler kabul edilmemelidirTersi yapılmamalıdır: Geçersiz
verileri/sembolleri tanımlama ve diğerlerinin tümünü kabul etme
Veriler için maksimum uzunluk/büyüklük tanımlanmalı ve daha büyük girdi kabul edilmemelidir
OWASP Day – Turkey – Sep 2007
Diğer Gerçekleştirim Konuları
Taşma problemleri ve korunma Alan taşmaları Tamsayı taşmaları
Yarış durumları
Şifreleme ve rastgele sayıların uygunsuz kullanımı Platforma / dile özel güvenlik konuları
J2EE / .Net güvenlik mekanizmaları ve kullanımı Platforma spesifik diğer noktalar
...
OWASP Day – Turkey – Sep 2007
Yazılım Testleri
Geliştirme süreci testleri Yazılım test araçları Yazılım İnceleme Toplantıları (peer reviews) Saldırı simülasyonları
OWASP Day – Turkey – Sep 2007
Geliştirme Süreci Testleri
Kod geliştirme ve test/sınama birbirine paralel olarak yürütülmelidirHer programcı “test kodları” hazırlanması
gerektiğini bilir, pek azı hazırlarSağlam kod güvenli kod
Çevik (agile) teknikler sürekli sınama vurgusu yapmaktadırSürekli bütünleştir, sürekli sına, sürekli yeniden
eklemlendir (refactor)
OWASP Day – Turkey – Sep 2007
Tehdit Modeline Göre Test Etme
Yazılım güvenlik testleri standart testlerden fazlasını içermelidirDenetleyenlerin güvenlik birikimi
Pek çoğu güvenlik denetleyicisi (kötü niyetli) değildir Neler test edilmeli? Nasıl test edilmeli?
Modeldeki her tehtidin bir test planı olmalı Tehdit modeli testlerin yönlendirilmesine yardımcı olur
OWASP Day – Turkey – Sep 2007
Yazılım Güvenliği Test Araçları
Statik analiz araçları*lint, lint4jRATS, ITS4, flawfinderprefix, prefast, fxcop
Dinamik analiz araçlarıValgrind, IBM/Rational Purify, ElectricFence
Fuzzer’larSPIKERetina – CHAM
…
Copyright © 2007 - The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the Creative Commons Attribution-ShareAlike 2.5 License. To view this license, visit http://creativecommons.org/licenses/by-sa/2.5/
The OWASP Foundation
OWASP Day
Turkey - Sep 2007
http://www.owasp.org/
Güvenliğiniz geleceğinizdir…Güvenliğiniz geleceğinizdir…
http://www.pro-g.com.tr http://www.pro-g.com.tr
[email protected]@pro-g.com.tr