Yazılım Güvenliği Yönetimi Eğitimimiz aşağıdaki konu başlıklarını içermektedir:
Güvenli Yazılım Geliştirme Modelleri
-TOUCHPOINTS
-Secure Development Lifecycle (Microsoft)
-CLASP (Comprehensive, Lightweight Application Security Process)
Risk Yönetimi
Güvenlik Gereksinim Analizi
Teknik Riskler
Sızma Testi ve Statik Kod Analizi
Güvenlik Operasyonu
3. • Yazılım Geliştirme Yaşam Döngüsünü ve Hedeflerini
Tanımlama
• Güvenli Yazılım Geliştirme Süreci Model Örnekleri
• Güvenli Yazılım Geliştirme Süreci İçindeki
Aktivitelere Örnekler
GÜNDEM
4. GRUP ÇALIŞMASI (15 dk. + 15 dk.)
Yazılım geliştirme sürecinin aşamalarının tanımlanması
Mevcut görevlerinize uygun olarak katılacağınız çalışma
gruplarında eğitmenin atayacağı yazılım geliştirme sürecini
aşağıdaki açılardan tanımlayınız:
• Ne yapıyoruz?
• Neden yapıyoruz?
• Hangi niteliklere sahibiz?
Yazılım Geliştirme Süreci
5. Yazılım Geliştirme Süreci
SINIF TARTIŞMASI
Yazılım güvenliği için yazılım geliştirme sürecinde uyguladığımız
aktiviteler neler?
6. • Mevcut yazılım kalitesi ve yazılım güvenliği olgunluk düzeyi
karşılaştırması
• ‘Push to the Left’ yaklaşımı
Yazılım Geliştirme Süreci
7. Güvenli Yazılım Geliştirme Süreci
BİR ÜRÜN İÇİN PARA HARCAMADAN ÖNCE,
HER ZAMAN HATIRLAYIN...
Yazılım güvenliğinde bir Silver Bullet YOKTUR! (Gary McGraw)
8. Güvenli Yazılım Geliştirme Süreci
TOUCHPOINTS
• Gary McGraw tarafından geliştirilmiştir.
• Software Security, Building Security In, Gary McGraw, 2006 -
Not: Kitabın önsözünü Dan Geer yazmıştır.
• Gary McGraw’ın Cigital isimli bir firması ve Silver Bullet
Security Podcast’i bulunmaktadır.
• McGraw aynı zamanda Fortify Software şirketinde Teknik
Yönlendirme Komitesi üyesi idi.
9. Güvenli Yazılım Geliştirme Süreci
TOUCHPOINTS
*Şekil ‘Software Security (Gary McGraw)’ kitabından alınmıştır.
10. Güvenli Yazılım Geliştirme Süreci
TOUCHPOINTS
*Şekil ‘Software Security (Gary McGraw)’ kitabından alınmıştır.
11. Güvenli Yazılım Geliştirme Süreci
TOUCHPOINTS
Olumlu Yönler:
• Pedagojik olarak en başarılı anlatıma sahip kavramsal olarak (ilk okunacak
kaynak olabilir)
• Yazılım Geliştirme Yaşam Döngüsü (YGYD) bağımsız (en esnek metod)
Olumsuz Yönler:
• Kavramsal anlatım olarak başarılı olmasına rağmen diğer metodlara
nazaran kaynak ve netlik açılarından geride kalıyor.
12. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
Secure Development Lifecycle (Microsoft)
From: Bill Gates
Sent: Tuesday, January 15, 2002 5:22 PM
To: Microsoft and Subsidiaries: All FTE
Subject: Trustworthy computing
...
However, even more important than any of these new capabilities is the fact that it is
designed from the ground up to deliver Trustworthy Computing. What I mean by this
is that customers will always be able to rely on these systems to be available and to
secure their information. Trustworthy Computing is computing that is as available,
reliable and secure as electricity, water services and telephony.
...
I've spent the past few months working with Craig Mundie's group and others across
the company to define what achieving Trustworthy Computing will entail, and to focus
our efforts on building trust into every one of our products and services.
...
13. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
Secure Development Lifecycle (Microsoft)
In the past, we've made our software and services more compelling for users by
adding new features and functionality, and by making our platform richly extensible.
We've done a terrific job at that, but all those great features won't matter unless
customers trust our software. So now, when we face a choice between adding
features and resolving security issues, we need to choose security. Our products
should emphasize security right out of the box, and we must constantly refine and
improve that security as threats evolve. A good example of this is the changes we
made in Outlook to avoid email borne viruses. If we discover a risk that a feature
could compromise someone's privacy, that problem gets solved first. If there is any
way we can better protect important data and minimize downtime, we should focus
on this. These principles should apply at every stage of the development cycle of
every kind of software we create, from operating systems and desktop applications to
global Web services.
...
Bill
14. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
Secure Development Lifecycle (Microsoft)
• Microsoft Security Technology Unit tarafından geliştirilmiştir.
• The Security Development Lifecycle: SDL: A Process for
Developing Demonstrably More Secure Software, Michael
Howard, Steve Lipner, 2006
15. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
Secure Development Lifecycle (Microsoft)
Stage 0: Education and Awareness
Stage 1: Project Inception
Stage 2: Define and Follow Design Best Practices
Stage 3: Product Risk Assessment
Stage 4: Risk Analysis
Stage 5: Creating Security Documents, Tools, and Best Practices for Customers
Stage 6: Secure Coding Policies
Stage 7: Secure Testing Policies
Stage 8: The Security Push
Stage 9: The Final Security Review
Stage 10: Security Response Planning
Stage 11: Product Release
Stage 12: Security Response Execution
16. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
Secure Development Lifecycle (Microsoft)
Olumlu Yönler:
• Kendi içinde çok tutarlı ve çok net bir metodoloji.
• Microsoft’un dokümantasyonu içinde pratik uyarı ve etkili uygulama
yöntemleri mevcut.
• Kaynak olarak 3 metod arasında iyi konumda, ayrıca jenerik tehdit ağaç
yapıları da mevcut.
• Organizasyonel rolleri de net ve detaylı olarak açıklayarak güvenli YGYD
açısından organizasyonun önemini net biçimde ifade ediyor.
17. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
Secure Development Lifecycle (Microsoft)
Olumsuz Yönler:
• Genel ve her kuruma yönelik bir metod değil, doğrudan Microsoft’un
ihtiyaçlarına yönelik olarak geliştirilmiş.
• Kaynaklar da yukarıda sayılan nedenle genellikle Microsoft ürünlerine yönelik
(örneğin gerekli araç ve derleyici opsiyonları Microsoft teknolojilerine özel).
Diğer Konular:
• Yazılım güvenliği için süreç anlamında dahi bir gümüş mermi olmadığının çok
net bir örneği. Microsoft için işe yaradığı kanıtlanmış ayrıca çok iyi dokümante
edilmiş bir metodoloji olmakla birlikte her çözümün her kuruma
uymayacağının anlaşılabilmesi için iyi bir kaynak.
18. Güvenli Yazılım Geliştirme Süreci
Microsoft’un deneyiminden alınacak dersler:
• Patron desteğinin önemi
• Eğitimin önemi
• Uzmanlığın önemi
• Güvenlik otoritesinin önemi
• Güvenliğin stratejik önemi
19. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
CLASP (Comprehensive, Lightweight Application Security Process)
20. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
CLASP (Comprehensive, Lightweight Application Security Process)
• Secure Software tarafından geliştirildi ve OWASP projeleri
arasına katılmıştır (2006).
• 2007 yılında ciddi oranda değişikliğe uğramıştır.
• Secure Software Fortify Software tarafından 2007 yılında satın
alınmıştır.
21. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
CLASP (Comprehensive, Lightweight Application Security Process)
• Kavram Bakışı
• Rol Tabanlı Bakış
• Aktivite Değerlendirme Bakışı
• Aktivite Uygulama Bakışı
• Açıklıklar Bakışı
• Açıklık Kullanma Durumları
• CLASP Kaynakları
• Ve diğer dokümanlar (uygulama güvenlik sözlüğü, güvenlik
prensipleri ve geliştirme aşamasındaki dokümanlar)
22. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
CLASP (Comprehensive, Lightweight Application Security Process)
Olumlu Yönler:
• Aktivite olarak en detaylı metod, ayrıca YGYD’nü en geniş anlamda ele
alıyor. Örneğin kod imzalama, operasyonel ortamı tanımlama gibi
aktiviteler kapsamında
• Kapsamının genişliği ve genelliği (yani SDL gibi bir organizasyona özel
olmaması) nedeniyle iyi bir güvenli YGYD denetimi aracı olabilir.Aktivite
Değerlendirme dokümanı aktivitenin yapılması gereken sıklık, yerine
getirilmemesi durumunda doğacak risklere ilişkin de bilgi vererek denetim
çalışmasını destekliyor.
• Rol odaklı olması uygulamak isteyen kurumlar için organizasyonel rolleri
berlirleyebilmek için iyi bir özellik
• Güncellemek zor olsa da yazılım açıklık türleri için bir veritabanına ve
açıklık kullanım durumlarına sahip
• Yeni uygulamalar ve eski uygulamalar için önerdiği aktivite listeleri mevcut
23. Güvenli Yazılım Geliştirme Süreci
Diğer Modeller
CLASP (Comprehensive, Lightweight Application Security Process)
Olumsuz Yönler:
• Metod parçaları (kavram, rol, aktivite, açıklık bakış açıları) arasındaki
bağlantı yapılmaya çalışılmış olsa da çok net değil. Bu nedenle kavranması
zor bir metod.
• Esnekmiş gibi görünmekle birlikte çok detaylı olması nedeniyle (örneğin
rol ve aktivite sayısı olarak) aslında kuruma özelleştirme konusunda daha
fazla çalışma ihtiyacı var.
Diğer Konular:
• Rol odaklı bir metod, yani aktiviteler ilk olarak rollerle haritalanmış
durumda, bu şekilde esnekliği sağlamak hedeflenmiş
24. Güvenli Yazılım Geliştirme Süreci
CLASP deneyiminden alınacak dersler:
• Pratiklik ve basitlik ihtiyacı
• Teknik konular çabuk eskir, o yüzden anayasaya girmemelidir
25. Güvenli Yazılım Geliştirme Süreci
Güvenli yazılım geliştirme sürecine nasıl geçebiliriz?
TOUCHPOINTS Yaklaşımı
• Hangisini yaparsan yap
• Hangi sırada yapmaya başlarsan başla
26. Güvenli Yazılım Geliştirme Sürecini
Deneyimleyelim
Genel Çerçeve: RİSK YÖNETİMİ
GRUP ÇALIŞMASI (10 dk. + 10 dk.)
• Yazılım risk kriterleri neler olabilir?
• Hangi seviyeye hangi güvenli yazılım geliştirme aktivitelerini
uygulayabiliriz?
27. Güvenli Yazılım Geliştirme Sürecini
Deneyimleyelim
Genel Çerçeve: BİLGİ BİRİKİMİ
GRUP ÇALIŞMASI (10 dk. + 10 dk.)
• Yazılım güvenliği ile ilgili hangi bilgileri toplayabiliriz?
• Bu bilgileri kimlere ve nasıl aktarabiliriz?
28. Güvenli Yazılım Geliştirme Sürecini
Deneyimleyelim
Genel Çerçeve: AKTİVİTELER (Kötüye Kullanım)
GRUP ÇALIŞMASI (10 dk. + 10 dk.)
• Aşağıdaki fonksiyonlar nasıl kötüye kullanılabilir ve hangi
önlemleri alabiliriz?
• Mesaj gönderme
• Kredi kartı borç ödeme
• Login fonksiyonu
• Dosya yükleme
• Müşteri bilgileri görüntüleme
• Yorum ekleme (ör: internette yayınlanan bir makaleye)
29. Güvenli Yazılım Geliştirme Sürecini
Deneyimleyelim
Genel Çerçeve: AKTİVİTELER (Güvenlik Gereksinim Analizi)
GRUP ÇALIŞMASI (10 dk. + 10 dk.)
• Bir internet şubesi uygulamasında hangi güvenlik fonksiyon
gereksinimlerimiz olabilir?
30. Güvenli Yazılım Geliştirme Sürecini
Deneyimleyelim
Genel Çerçeve: AKTİVİTELER (Teknik Riskler)
GRUP ÇALIŞMASI (10 dk. + 10 dk.)
• Bildiğiniz masaüstü, mobil ve web uygulamalarını tehdit eden
teknik riskler nelerdir?
• Bu risklere karşı hangi önlemler alınabilir?
31. Güvenli Yazılım Geliştirme Sürecini
Deneyimleyelim
Genel Çerçeve: AKTİVİTELER (Teknik Riskler)
• Erişim kontrol açıklıkları
• Parola politikası
• Doğrudan nesne erişim açıklıkları
• Oturum yönetim açıklıkları
• Veri sızma açıklıkları
• SQL, XPATH, SOAP, Command, v.d. Injection açıklıkları
• Cross Site Scripting (XSS)
• Cross Site Request Forgery (CSRF)
• Redirect Açıklıkları
• İstemci üzerinde kalan hassas bilgiler
32. Güvenli Yazılım Geliştirme Sürecini
Deneyimleyelim
Genel Çerçeve: AKTİVİTELER (Sızma Testi ve Statik Kod Analizi)
SINIF TARTIŞMASI (20 dk.)
• Sızma testinin amaç ve koşulları nelerdir?
• Statik kod analizinin amaç ve koşulları nelerdir?
• Sızma testinde ve statik kod analizinde manuel ve otomatik
yöntemler hangi oranda kullanılabilir?
• Sızma testinin ve statik kod analizinin dezavantajları nelerdir?
33. Güvenli Yazılım Geliştirme Sürecini
Deneyimleyelim
Genel Çerçeve: AKTİVİTELER (Güvenlik Operasyonu)
SINIF TARTIŞMASI (15 dk.)
• Yazılım güvenlik operasyonu için hangi araç ve yöntemleri
kullanabiliriz?
• Yaşanan ihlallerin tekrar edilmemesi için nasıl bir iyileştirme
yapmalıyız, bu iyileştirmelerin sürekliliği ve kalıcılığı için nasıl
bir yönetim süreci uygulayabiliriz?
34. BİREYSEL EGZERSİZ (5 dk. + 10 dk.)
Bugünkü çalışmadan (varsa) edindiğiniz en değerli olduğunu
düşündüğünüz fikir, değerlendirme, deneyim, v.b. nedir?
Kapanış Değerlendirmesi