21
Copyright © 2007 - The OWASP Foundation Permission 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ÜRLER [email protected]

Güvenli Web Uygulamalarının Geliştirilmesi

  • Upload
    leyna

  • View
    44

  • 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

Page 1: Güvenli Web Uygulamalarının Geliştirilmesi

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]

Page 2: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 3: Güvenli Web Uygulamalarının Geliştirilmesi

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”

Page 4: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 5: Güvenli Web Uygulamalarının Geliştirilmesi

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ı

Page 6: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 7: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 8: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 9: Güvenli Web Uygulamalarının Geliştirilmesi

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)

Page 10: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 11: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 12: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 13: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 14: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 15: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 16: Güvenli Web Uygulamalarının Geliştirilmesi

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

...

Page 17: Güvenli Web Uygulamalarının Geliştirilmesi

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ı

Page 18: Güvenli Web Uygulamalarının Geliştirilmesi

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)

Page 19: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 20: Güvenli Web Uygulamalarının Geliştirilmesi

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

Page 21: Güvenli Web Uygulamalarının Geliştirilmesi

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