Contenu connexe Similaire à Kaynak Kod Analiz Süreci (20) Kaynak Kod Analiz Süreci1. www.prismacsi.com
© All Rights Reserved.
1
Kaynak Kod Analizi
Bu doküman, alıntı vererek kullanılabilir ya da paylaşılabilir ancak değiştirilemez ve ticari amaçla kullanılamaz.
Detaylı bilgiye https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.tr bağlantısından erişebilirsiniz.
2. www.prismacsi.com
© All Rights Reserved.
2
Konular
• Giriş
• Hazırlık
• Bilgi Edinme
• Kaynak
• Kontrol Listesi
• Analiz
• Manuel Kod İnceleme
• Tehtit Modelleme
• Güvenlik Kontrolleri
4. www.prismacsi.com
© All Rights Reserved.
4
Giriș
Günümüzde birçok kuruluş geliştirdikleri veya kullandıkları uygulamaların tam anlamıyla güvende
olmadığının, her zaman saldırıya açık olabileceğinin farkına varmışlardır. Bu doğrultuda çeşitli test ve
analizlerle yazılımların güvenliğini mümkün olan en üst düzeye çıkarmak için çaba göstermektedirler.
Bir yazılımın güvenlik analizi dört şekilde yapılabilir: manuel sızma testleri, zafiyet taraması, statik kod
analizi ve kod gözden geçirme. Bu belgede uygulamaların çalışma ortamına alınmadan önceki hali olan
kaynak kodlarının statik analizi ve gözden geçirilmesi üzerinde durulacaktır. İnceleme süreçleri ve
bulgular sonucunda hazırlanacak rapor hakkında detaylı bilgiler verilecektir.
5. www.prismacsi.com
© All Rights Reserved.
5
Hazırlık
• Bilgi Edinme
Analiz ekibinin en doğru çıktıları üretebilmesi için analize başlamadan önce hedef uygulama hakkında
detaylı bilgileri edinmesi gerekmektedir. Bu bilgiler ışığında analiz öncesi hazırlığını tamamlayacak ve en
kısa sürede etkili bir analiz ortaya koyacaktır. Gerekli bilgilerin yazılımın dokümantasyonundan elde
edilmesi beklenir. Dokümantasyonun olmaması, eski tarihli veya eksik olması durumunda ise proje
sorumlusu ile yapılacak toplantılarla bilgi toplama aşaması tamamlanır. Analiz öncesi keşif aşamasının
yapılmaması, sonucu doğrudan etkilememekle birlikte işlemlerin daha uzun sürmesine ve analiz
ekibinin veriminin daha düşük olmasına sebep olacaktır.
6. www.prismacsi.com
© All Rights Reserved.
6
Hazırlık
• Kaynak
Kaynak, geliştirilen yazılım sonucu ortaya çıkacak uygulamanın kullandığı, işlediği veya sakladığı verileri
ifade eder. Bu verilerin değiştirilmesi veya istenmeyen kişilerce ele geçirilmesi durumunda doğacak
zararın boyutu, yapılacak analizin önemini belirlemektedir.
7. www.prismacsi.com
© All Rights Reserved.
7
Hazırlık
• Kaynak
Analiz ekibi, uygulamadaki iş akışını iyice öğrenemedikçe yazılım üzerindeki potansiyel güvenlik
risklerini tespit etmekte zorlanacaktır. Kodun analizine başlanmadan önce aşağıdaki soruların cevabını
alınmış olması gerekmektedir:
• Uygulama ne kadar gizli/hassas veri saklıyor?
• Uygulama kimlere yönelik? Kurum içi kullanım için mi geliştiriliyor, yoksa dışardan bir son
kullanıcı erişebilir mi?
• Uygulama nerede barındırılacak?
8. www.prismacsi.com
© All Rights Reserved.
8
Hazırlık
• Kontrol Listesi
Kod analiz edilmeye başlamadan önce aşağıdaki ana başlıklar doğrultusunda uygulamanın altyapısı ve
kaynağına göre bir kontrol listesi çıkarılmalıdır.
• Veri Doğrulama
• Kimlik Doğrulama
• Oturum Yönetimi
• Yetkilendirme
• Şifrelemeler
• Hata Yakalama
• Loglama
• Güvenlik Konfigürasyonu
• Üçüncü Parti Uygulama ve Kütüphanelerin Güvenliği
9. www.prismacsi.com
© All Rights Reserved.
9
Analiz
Keşif aşamasında elde edilen bilgiler doğrultusunda kaynak kodların analizine başlanır. Analiz, birbiriyle
eş zamanlı yapılan iki aşamadan oluşmaktadır: manuel kod gözden geçirme ve otomatize kaynak kod
taraması. Bu iki sürecin sonuçları daha sonra birbirleriyle karşılaştırılarak analiz tamamlanır.
10. www.prismacsi.com
© All Rights Reserved.
10
Manuel Kod İnceleme
• Tehtit Modelleme
Tehdit modelleme yazılımın güvenliğini analiz etmek için izlenen yöntemlerden birisidir. Bu yöntem
güvenlik risklerinin tanımlanmasına, ölçeklendirilmesine ve ele alınmasına olanak sağlar. Tehdit
modellemenin ilk aşaması uygulamanın alt parçalarına ayrıştırılmasıdır. Uygulamanın nasıl kullanıldığı,
olası saldırıların gelebileceği girdi noktalarının neler olduğu ve dışarıya ne gibi bilgiler verdiği bu
aşamada belirlenir. İkinci aşama tehditlerin belirlenip sıralanmasıdır. Bu aşamada uygulamanın
alabileceği potansiyel tehditler belirlenerek kategorize edilir.
11. www.prismacsi.com
© All Rights Reserved.
11
Manuel Kod İnceleme
• Tehtit Modelleme
Böylece olası saldırıların her birinde karşılaşılacak tehlikeler belirlenmiş olur. Tehditlerin seviyelerine
göre kategorize edilmesinin defansif ve ofansif perspektiften bakıldığında faydaları bulunmaktadır. Hem
saldırganın gözünden uygulamaya verilebilecek zararın boyutu ortaya çıkacak, hem de geliştiricinin
gözünden uygulamanın zayıf noktaları belirlenmiş olacaktır. Tehdit modellemenin son aşaması ise
alınacak önlemlerin ve yapılacak sıkılaştırmaların belirlenmesidir. Bir önceki adımda hem saldırgan hem
geliştirici gözüyle ortaya konan zayıf noktalar için en uygun sıkılaştırma yöntemleri daha tehdit
modelleme aşamasında belirlenecektir. Böylece doğuracağı zarar, gidermek için gerekli süre gibi çok
yönlü bulgularla modellenen tehditlerin risk sıralaması rahatlıkla yapılabilecektir.
12. www.prismacsi.com
© All Rights Reserved.
12
Manuel Kod İnceleme
• Güvenlik Kontrolleri
Kod incelemenin odak noktası güvenlik denetimleri olacaktır. Güvenlik denetimlerinin var olduğundan,
çalışır durumda olduğundan ve gerekli yerlerde doğru şekilde çağrıldıklarından emin olunmalıdır.
13. www.prismacsi.com
© All Rights Reserved.
13
Manuel Kod İnceleme
• Güvenlik Kontrolleri
Aşağıda tüm olası riskleri gözden geçirmeye yarayan bir denetim listesi verilmiştir.
• Kimlik Doğrulama
• Tüm iç ve dış bağlantıların yeterli bir kimlik doğrulamasından geçtiğinden emin olunmalıdır.
• Tüm sayfaların kimlik doğrulamadan geçtiğinden emin olunmalıdır.
• Kimlik doğrulaması yapılan sorguların POST isteği ile yapıldığından emin olunmalıdır.
• Kimlik doğrulama kapsamının dışında olduğu düşünülen her sayfanın tekrar üstünden
geçilmelidir.
• Kimlik doğrulama amacıyla yapılan sorguların açık metin olarak iletilmediğinden emin
olunmalıdır.
14. www.prismacsi.com
© All Rights Reserved.
14
Manuel Kod İnceleme
• Güvenlik Kontrolleri
• Yetkilendirme
• Yetkilendirme mekanizması olduğundan emin olunmalıdır.
• Kullanıcı türlerinin ve yetkilerinin açık bir şekilde belirlendiğinden emin olunmalıdır.
• Uygulamanın her parçasının minimum yetki prensibi ile çalıştığından emin olunmalıdır.
• Yetkilendirme mekanizmasının doğru çalıştığından, hata durumunda minimum risk
oluşturacağından ve atlatılamayacağından emin olunmalıdır.
15. www.prismacsi.com
© All Rights Reserved.
15
Manuel Kod İnceleme
• Güvenlik Kontrolleri
• Cookie Yönetimi
• Hassas bilgilerin açıkça gösterilmediğinden emin olunmalıdır.
• Cookie manipülasyonu ile hassas verilerin ortaya çıkarılamadığından emin olunmalıdır.
• Olası kazalara karşı “secure” belirtecinin ayarlanmış olduğundan emin olunmalıdır.
• Oturum verilerinin doğrulandığından emin olunmalıdır.
• Cookie’lerin minimum gizli bilgi barındırdığından emin olunmalıdır.
• Eğer hassas veri tutuyorsa, cookie’nin uygun bir algoritma ile şifrelendiğinden emin
olunmalıdır.
16. www.prismacsi.com
© All Rights Reserved.
16
Manuel Kod İnceleme
• Güvenlik Kontrolleri
• Veri ve Girdi Doğrulama
• Veri doğrulama mekanizmasının varlığından emin olunmalıdır.
• Saldırganlar tarafından manipüle edilebilecek http başlıkları, gizli ve açık tüm form
elemanları ve diğer web bileşenlerinin doğrulandığından emin olunmalıdır.
• Tüm girdilerde uzunluk kontrolünün yapıldığından emin olunmalıdır.
• Veri doğrulama işleminin sunucu taraflı yapıldığından emin olunmalıdır.
17. www.prismacsi.com
© All Rights Reserved.
17
Manuel Kod İnceleme
• Güvenlik Kontrolleri
• Hata Yakalama ve Bilgi Sızıntısı
• Dönüş değeri olan tüm metot ve çağrıların hata yakalama mekanizması olduğundan ve
dönüş değerlerinin kontrol edildiğinden emin olunmalıdır.
• Her çeşit hata ve sıra dışı ihtimalin düzgünce yakalandığından emin olunmalıdır.
• Hiçbir sistem hatasının son kullanıcıya gösterilmediğinden emin olunmalıdır.
• Uygulamanın hata vermesi durumunun güvenli bir şekilde ele alındığından emin
olunmalıdır.
18. www.prismacsi.com
© All Rights Reserved.
18
Manuel Kod İnceleme
• Güvenlik Kontrolleri
• Loglama ve Denetleme
• Hata ve bilgi loglarında hassas verilerin bulunmadığından emin olunmalıdır.
• Kullanıcı tarafından yapılan manipülasyon işlemlerinin denetlendiğinden emin olunmalıdır.
• Tüm başarılı ve başarısız kimlik doğrulama girişimlerinin loglandığından emin olunmalıdır.
• Uygulama hatalarının loglandığından emin olunmalıdır.
19. www.prismacsi.com
© All Rights Reserved.
19
Manuel Kod İnceleme
• Güvenlik Kontrolleri
• Şifreleme
• Uygulama içinde veya dışında tüm hassas verilerin şifreli bir şekilde iletildiğinden emin
olunmalıdır.
• Bilinen ve güçlü bir şifreleme algoritması kullanıldığından emin olunmalıdır.
20. www.prismacsi.com
© All Rights Reserved.
20
Manuel Kod İnceleme
• Güvenlik Kontrolleri
• Güvenli Kod Ortamı
• Yazılımın dosya yapısında yer alan tüm bileşenlerin kullanıcının doğrudan erişemeyeceği
şekilde korunduğundan emin olunmalıdır.
• Hafıza yönetiminin doğru bir şekilde yapıldığından, taşmalara izin verilmediğinden emin
olunmalıdır.
• Dinamik SQL sorgularının güvenliğinden emin olunmalıdır.
• Yoruma alınmış kod parçasının bulunmadığından emin olunmalıdır.
• Hassas verilerin koda gömülü olmadığından emin olunmalıdır.
21. www.prismacsi.com
© All Rights Reserved.
21
Manuel Kod İnceleme
• Güvenlik Kontrolleri
• Oturum Yönetimi
• Kullanıcı oturumlarının nasıl ve ne zaman oluşturulduğu, hangi kimlik doğrulama yöntemi
kullandığı kontrol edilmelidir.
• Oturum anahtarının tahmin edilemez derecede karmaşık ve anlaşılabilir olmadığından emin
olunmalıdır.
• Oturumların nerede tutulduğu kontrol edilmelidir.
• Beklenmeyen oturum anahtarı ile sorgu yapıldığında uygulamanın tepkisi belirlenmelidir.
22. www.prismacsi.com
© All Rights Reserved.
22
Manuel Kod İnceleme
• Güvenlik Kontrolleri
• Oturum Yönetimi
• Oturumun geçersiz olma durumları incelenmelidir.
• Oturum yönetim mekanizmasının thread-safe olduğundan emin olunmalıdır.
• Oturumun geçerli bir zaman aşımına sahip olduğundan emin olunmalıdır.
• Oturum sonlandırma işleminin doğru çalıştığından emin olunmalıdır.
Bu listede yer alan kontrollerin her biri gerçekleştirildikten sonra sebep olduğu zafiyetlere göre
kategorize edilir.
23. www.prismacsi.com
© All Rights Reserved.
23
Otomatize Araç Taramaları
Manuel kod incelemesine başlanırken, eş zamanlı olarak otomatize araçlar vasıtasıyla kodun statik
analizi de yapılır. Kodun tamamını tarayan araçlar, ürettikleri çıktılarla manuel kod incelemesine katkı
sağlamaktadırlar. Kodun otomatize araçlarla taranmasının bazı avantajları ve dezavantajları vardır.
24. www.prismacsi.com
© All Rights Reserved.
24
Otomatize Araç Taramaları
• Avantajları
• Devasa büyüklükteki projeleri bile tamamını mümkün olan en kısa sürede tarar. Böylece insan
gözünden kaçabilecek zafiyetlerin tespitinde faydalı olacaktır.
• İnsan gözünün yakalayamayacağı bellek taşması gibi zafiyetlerin keşfi için gereklidir.
• Çıktıları analistler için anlaşılabilir ve yorumlanabilirdir.
25. www.prismacsi.com
© All Rights Reserved.
25
Otomatize Araç Taramaları
• Dezavantajları
• Kimlik doğrulama, erişim kontrolü zayıf şifreleme gibi birçok zafiyetin otomatik araçlarla tespit
edilmesi imkansıza yakındır.
• Çok fazla doğru gibi görünen hatalı çıktı (false-positive) üretirler.
• Konfigürasyon hatalarını bulmakta yetersiz kalırlar.
• Tespit ettikleri bulgunun gerçekten bir zafiyete sebep olup olamayacağını kestiremezler.
Bu avantajlar ve dezavantajlar göz önünde bulundurulduğunda araçların kaynak kod analizinde
kullanılmasının gerekli olduğu fakat yeterli olmadığı görülmektedir.
26. www.prismacsi.com
© All Rights Reserved.
26
Bulguların Karşılaştırılması
Manuel inceleme ve araç taraması tamamlandıktan sonra her iki yöntemin çıktıları tekrar incelenir. Bu
inceleme ile;
• False-positive çıktılar ortadan kaldırılır,
• Gözden kaçan kontrolün olmadığından emin olunur,
• Tekrarlı bulgular teke indirilir,
• Bulgular raporlamaya hazır hale getirilir.
27. www.prismacsi.com
© All Rights Reserved.
27
Raporlama
Analiz sürecinin son adımı raporlamadır. Hazırlık ve analiz aşamaları başarıyla sonuçlandıktan sonra
elde edilen tüm bulgular net, yalın ve eksiksiz olarak kodun veya uygulamanın sorumlusuna bildirilir.
Sonuç raporunun yeterince anlaşılır olmaması veya eksik bilgi içermesi gibi durumlarda proje
sorumluları beklenen çıktıyı alamayacak, dolayısıyla tüm sürecin heba olma ihtimali ortaya çıkacaktır.
Buradan anlaşılacağı üzere raporlama en az analiz kadar önemli bir aşamadır.
28. www.prismacsi.com
© All Rights Reserved.
28
Raporlama
Bulguların en iyi şekilde raporlanabilmesi için aşağıdaki kriterlere dikkat edilir:
• Her bir bulgunun ekran görüntüsü alınmış olmalıdır.
• Bulguların sebep olduğu zafiyetler açık bir şekilde çıkarılmış olmalıdır.
• Bulgular sebep olacakları zafiyetlere, sıkılaştırma yöntemine ve kod üzerindeki konumuna göre doğru
bir şekilde sınıflandırılmış ve risk analizi yapılmış olmalıdır.
29. www.prismacsi.com
© All Rights Reserved.
29
Raporlama
Bulgular raporlanırken koddan sorumlu tüm teknik personelin anlayacağı bir dil kullanımı önem arz
etmektedir. Raporda her bir bulgunun;
• Bulunduğu kod parçasının görüntüsü,
• Sebep olduğu zafiyet,
• Risk seviyesi,
• Ortaya çıkardığı tehditler,
• Çözüm önerileri
yer almaktadır. Böylece geliştirme ve test ekibi zafiyeti iyi anlayabilecek, hızlıca önlem alabilecek ve
daha da önemlisi sonrasında benzer zafiyetlerin ortaya çıkma olasılığı en aza inecektir.