1 / 20

Güvenli Kod Geliştirme ve Kaotik Yaşam Döngüsü

B ünyamin DEMİR www.owasp.org/index.php/Turkey www.webguvenligi.org. Güvenli Kod Geliştirme ve Kaotik Yaşam Döngüsü. 14 Ekim 2011. Konuşmacılar. Bünyamin Demir Symturk, Güvenlik Danışmanı OWASP /Türkiye. İçerik. OWASP Nedir? Projeler &Aktiviteler Yazılım Güvenliği Yaklaşımları

shanta
Download Presentation

Güvenli Kod Geliştirme ve Kaotik Yaşam Döngüsü

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bünyamin DEMİR www.owasp.org/index.php/Turkey www.webguvenligi.org Güvenli Kod Geliştirme ve Kaotik Yaşam Döngüsü 14 Ekim 2011

  2. Konuşmacılar • Bünyamin Demir • Symturk, Güvenlik Danışmanı • OWASP/Türkiye

  3. İçerik OWASP Nedir? Projeler&Aktiviteler Yazılım Güvenliği Yaklaşımları Geliştirme Sürecinde Güvenlik OpenSAMM

  4. Başarılısaldırıların %80’i uygulamaseviyesinihedefalmaktadır. -Gartner Otomatikaraçlarla test ettiğimiz 12186 web uygulamasının %86’sı zordurumda. -WebAppSecKonsorsiyumu

  5. 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 %81i 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)

  6. Hatalı Yazılım Güvenliği Yaklaşımımız ve Korunma • 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” • “Biz strong-authentication kullanıyoruz” • Güvenlik ortamlar (sunucular) yazılımları güvenli kılmaz. • “Biz uygulamamızı izole ortamda tutuyoruz.”

  7. En İyi Yaklaşım Modeli Bilgi güvenliği konusu bir süreç gibi algılanmalı ve gerekli aktiviteler yazılım süreçlerinin her basamağına entegre edilmelidir

  8. Geliştirme Sürecinde Güvenlik TasarımPrensiplerininUygulanması GüvenlikKalıplarınınUygulanması GüvenlikGereksinimleriTespiti Öğren veİyileştir Güvenlik Denetimi TehditAnalizi Dış İnceleme İhtiyaç Analizi TasarımınTamamlanması Test PlanlarınınTamamlanması KodlamanınTamamlanması Sunuş SunuşSonrası Destek veOlay Müdahalesi Dışİnceleme GeliştiriciEğitimi Güvenli Programlama TeknikleriKaynak kod incelemesi Statik kod analiz araçları GüvenlikTestleriGeliştirilmesi GeçmişZafiyetlerinİncelenmesi

  9. OpenSAMM • Yazılım geliştirmenintüm üst düzey konularınıadresler • Çok geneldir ve her ekibeuyarlanabilir Yönetim,Yapım,Doğrulama,Kurulum

  10. SAMM Güvenlik Pratikleri

  11. Yönetim (Governance) • Strateji&Metrikle (Strategy&Metrics) • Bu aktivite gurubu, organizasyon içinde bir yazılım güvenliği yönetim sürecini oluşturmayı, buna bağlı olarak uygulamaların ve bilgilerin risk sınıflandırmasını oluşturmayı ve bu risk sınıflarının güvenlik amaçlarını belirlemeyi sağlar • Politika&Uyumluluk (Policy&Compliance) • Bu aktivite gurubu, yasal gereksinimleri temel alarak organizasyon içinde güvenlik ve uyumluluk kontrolleri oluşturmayı ve bu sayede yazılım güvenliğini artırmayı hedefler. • Eğitim&Destek (Education&Guidance) • Bu aktivite gurubu, yazılım geliştirme sürecindeki katılımcıların (proje yöneticileri, yazılım mimarları, geliştiriciler gibi) bilgi güvenliği bilinçlerini eğitimler ve teknik destek yoluyla artırmayı hedefler

  12. Yapım (Construction) • Tehdit Değerlendirme (Threat Assessment) • Bu aktivite gurubu, yazılımlar için daha etkin risk yönetimi gerçekleştirmeyi, yazılımların karşı karşıya oldukları saldırıları analiz etmeyi ve güvenlik önceliklerini belirlemeyi hedefler. • Güvenlik Gereksinimleri (Security Requirements) • Bu aktivite gurubu, iş hayatındaki başarılı metotları (best practice) dikkate alarak iş akışı esnasında uygulanması gereken güvenlik gereksinimlerini belirler. • Güvenlik Mimari (Secure Architecture) • Bu aktivite gurubu, yazılım tasarımı esnasında güvenlik tasarım modellerinden (security design patterns) ve de güvenli mimari ilkelerinden (secure architecture principles) faydalanarak, daha mimari tasarım esnasında güvenliği sisteme entegre etmeyi hedefler.

  13. Doğrulama (Verification) • Tasarım Denetimi (Design Review) • Bu aktivite gurubu, yapım iş fonksiyonu esnasında oluşturulan yazılım mimarisini güvenlik açısından denetler ve güvenlik gereksinimlerinin tasarlanan mimari tarafından gerçekleştirilip gerçekleştirilmediğini kontrol eder. • Kod Denetimi (Code Review) • Bu aktivite gurubu, yazılım kodunda var olması mümkün güvenlik açıklarını tespit etmeyi hedefler. Bunun için bir kontrol listesi oluşturup manüel denetleme yapılabileceği gibi otomatik araçlar da kullanılabilir. • Güvenlik Testi (Security Testing) • Bu aktivite gurubu, kod denetiminde olduğu gibi yazılımdaki güvenlik açıklarını tespit etmeyi hedefler. Bunun için özel tasarlanmış otomatik araçlar bu amaç için kullanılır. Bu sayede yazılım güvenliğinin belirli bir standarda ulaşması sağlanır.

  14. Kurulum (Deployment) • Güvenlik Açığı Yönetimi(Vulnerability Management) • Bu aktivite gurubu, yazılımın kullanımı esnasında ortaya çıkan güvenlik açıklarına karşı gerekli adımları atmayı (açığı inceleme, yama çıkarma gibi) sağlayacak bir açıkyönetim süreci oluşturmayı hedefler. • Platform Dayanıklılaştırma (Environement Hardening) • Bu aktivite gurubu, yazılımların kurulu ya da etkileşimde olduğu altyapı bileşenlerinin (işletim sistemi, uygulama sunucusu, veritabanı sunucusu gibi) güvenlik ayarlarının artırılması ve daha dayanıklı hale getirilmelerini hedefler. • İşletim Kurulumu (Operational Enablement) • Bu aktivite gurubu, yazılım geliştiriciler ile operatörler/kullanıcılar arasındaki iletişimi sağlayarak güvenlikle ilgili kritik ayarların kurulum ve kullanım esnasında dikkate alınmalarını sağlar.

  15. Değerlendirme Çizelgesi (Eğitim ve Destek) • Seviye: • Yazılımcıların çoğunluğu, güvenlik konularında farkındalık oluşturan güvenlik eğitimlerine katıldılar mı? • Her bir proje gurubunun güvenli kod geliştirme destek dokümanlarına erişimi var mı? • Seviye: • Farklı rollere (proje müdürü, yazılım mimarı, geliştirici, test edici gibi) sahip proje katılımcılarının çoğunluğu, rollerine özel güvenlik eğitimine katıldılar mı? • Proje katılımcılarının güvenlik konularında gerektiği zaman destek alabilecekleri güvenlik uzmanları var mı? • Seviye: • Güvenlik ile ilgili destekler, merkezi olarak yönetilip bütün organizasyonun bundan yararlanmasına olanak sağlanıyor mu? • Proje katılımcılarının çoğunluğu, güvenli kod geliştirme konusunda bir sınavdan geçirilerek organizasyon seviyesinde bir temel seviye oluşması sağlandı mı?

  16. Neden Hata Yapıyoruz? - Bir Proje Hikayesi Proje Yöneticisi Satıcı Müşteri Analist Programcı Dokümantasyon Kurulum Ücretlendirme Olması Gereken Destek 16

  17. Neden Hata Yapıyoruz? – İş Akışımız 17

  18. Sık Yaptığımız Hata – Tekerleğin Keşfi XSS Flaws - Test <script>alert(document.cookie)</script> <script>alert(document.cookie)</script> <script>alert(document.cookie)</script> or ?

  19. XSS Flaws – Bulgu ve Çözüm Encodingden geçirilen kullanıcı girdisi (Imagine this .jsp) <Table> <TR><TD> Full Name: </TD> <TD> <%=user.getFirstName()%> <%=user.getLastName()%> </TD> <TD> Display Name: </TD> <TD> <%=user.getDisplayName()%> </TD> <Table> <TR><TD> Full Name: </TD> <TD> <%=ESAPI.encodeForHTML(user.getFirstName())%> <%= ESAPI.encodeForHTML( user.getLastName())%> </TD> <TD> Display Name: </TD> <TD> <%= ESAPI.encodeForHTML( user.getDisplayName())%> </TD> Denetlenmemiş kullanıcı girdisi kullanımı

  20. Teşekkürler! www.webguvenligi.org www.owasp.org E-posta listesine kayıt olmak için google: owasp turkey mail list

More Related