Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation OWASP Güvenli Kod Geliştirme ve Kaotik Yaşam Döngüsü Bünyamin DEMİR Ekim 2011
Konuşmacılar Bünyamin Demir Symturk, Güvenlik Danışmanı OWASP/Türkiye 2
3 İçerik OWASP Nedir? Projeler&Aktiviteler Yazılım Güvenliği Yaklaşımları Geliştirme Sürecinde Güvenlik OpenSAMM
Başarılı saldırıların %80’i uygulama seviyesini hedef almaktadır. -Gartner Otomatik araçlarla test ettiğimiz web uygulamasının %86’sı zor durumda. -WebAppSec Konsorsiyumu
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)
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.”
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
Geliştirme Sürecinde Güvenlik Güvenlik Gereksinimleri Tespiti İhtiyaç Analizi Tasarımın Tamamlanması Test Planlarının Tamamlanması Kodlamanın Tamamlanması Sunuş Sunuş Sonrası Güvenlik Kalıplarının Uygulanması Dış İnceleme Geliştirici Eğitimi Güvenlik Testleri Geliştirilmesi Güvenli Programlama Teknikleri Kaynak kod incelemesi Statik kod analiz araçları Güvenlik Denetimi Öğren ve İyileştir Dış İnceleme Tehdit Analizi Destek ve Olay Müdahalesi Tasarım Prensiplerinin Uygulanması Geçmiş Zafiyetlerin İncelenmesi
OpenSAMM Yazılım geliştirmenin tüm üst düzey konularını adresler Çok geneldir ve her ekibe uyarlanabilir Yönetim,Yapım,Doğrulama,Kurulum
SAMM Güvenlik Pratikleri
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
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.
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.
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.
Değerlendirme Çizelgesi (Eğitim ve Destek) 1.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ı? 2.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ı? 3.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ı?
Neden Hata Yapıyoruz? - Bir Proje Hikayesi Müşteri Proje Yöneticisi AnalistProgramcı Satıcı DokümantasyonKurulumÜcretlendirme Destek Olması Gereken 16
Neden Hata Yapıyoruz? – İş Akışımız 17
Sık Yaptığımız Hata – Tekerleğin Keşfi XSS Flaws - Test - 18 alert(document.cookie) ? or alert(document.cookie)
XSS Flaws – Bulgu ve Çözüm (Imagine this.jsp) Full Name: Display Name: Full Name: Display Name: Denetlenmemiş kullanıcı girdisi kullanımı Encodingden geçirilen kullanıcı girdisi
20 Teşekkürler! E-posta listesine kayıt olmak için google: owasp turkey mail list