Güvenli kod incelemesinin temelleri
Veriyi kaynaktan tehlikeli çağrıya kadar izleyerek kod incelersin; kimlik, yetki, kriptografi, hata işleme ve bağımlılıkları kontrol listeleriyle gözden geçirir, Semgrep ve CodeQL ile incelemeyi hızlandırırsın.
Seviye 301 · 16 ders · 14 pratik lab
Dersler
Yaklaşım
- Güvenli kod incelemesi neden ve ne zaman yapılır
- İncelemeyi kapsamak: risk, değişiklik ve kritik akışlar
- Kaynaktan hedefe: veri akışını izlemek
- Kontrol listeleri: OWASP ASVS ve kod inceleme rehberi
- Kısa görev: küçük bir uygulamanın giriş noktalarını ve tehlikeli çağrılarını listele
Konu konu inceleme
- Girdi işleme ve doğrulama
- Kimlik doğrulama ve yetkilendirme kodu
- Kriptografi kullanımı ve gizli bilgiler
- Hata işleme ve günlük kaydı
- Bağımlılıklar ve bilinen açıklar
- Kısa görev: bir çekme isteğindeki üç güvenlik sorununu bul ve yorumla
Araçlarla inceleme
- Statik analiz (SAST): ne bulur, neyi kaçırır
- Semgrep ile kural yazmak
- CodeQL’e giriş: kodu veritabanı gibi sorgulamak
- Geliştiriciye yapıcı inceleme yorumu yazmak
- Bitirme görevi: bir uygulamanın güvenli kod incelemesini yap ve bulguları raporla
Pratik lablar
- Giriş noktalarını ve tehlikeli çağrıları listele: Küçük bir lab uygulamasının girdilerini ve tehlikeli çağrılarını listele ve aralarındaki üç yolu izle.
- Risk odaklı kapsam: neye önce bakmalı: Bir değişiklik listesindeki dosyaları riske göre sırala ve neden o sırayla inceleyeceğini yaz.
- Kaynaktan hedefe: üç katmanlı akış: Denetleyiciden servise, oradan sorguya geçen kullanıcı girdisini izle ve doğrulamanın atlandığı katmanı bul.
- ASVS maddeleriyle inceleme: Giriş ve oturum kodunu seçili ASVS maddelerine göre incele ve karşılanmayan maddeleri kanıtıyla listele.
- Kodda gömülü gizli bilgi: Depoda ve geçmişinde gömülü kalmış anahtarı bul, ortam değişkenine taşı ve yenilenmesi gerektiğini not et.
- Hatayı yutan ve sızdıran kod: Hataları sessizce yutan ve kullanıcıya ayrıntı sızdıran iki bloğu bul ve doğru hata işleme ile günlük kaydı ekle.
- Yetki kontrolü yanlış sırada: İşlemi yaptıktan sonra yetki kontrol eden işlevi bul ve kontrolü işlemden önceye al.
- Zayıf kripto kullanımı: Sabit IV, zayıf rastgelelik ve eski algoritma kullanan üç yeri bul ve güvenli kütüphane çağrılarıyla değiştir.
- Çekme isteğinde üç güvenlik sorunu: Bir çekme isteğindeki üç güvenlik sorununu bul ve her biri için yapıcı, düzeltme öneren bir yorum yaz.
- SAST çıktısını ayıkla: Bir statik analiz raporundaki on bulguyu gerçek, yanlış pozitif ve kabul edilebilir olarak sınıflandır.
- İlk Semgrep kuralı: Kod tabanında tehlikeli bir işlev çağrısını yakalayan basit bir Semgrep kuralı yaz ve çalıştır.
- Semgrep kuralını yanlış pozitiften arındır: Çok gürültü üreten bir kuralı desen dışlamaları ve bağlamla daralt ve gerçek bulguları koruduğunu göster.
- CodeQL ile kaynaktan hedefe sorgu: İstek parametresinden dosya yoluna giden akışı bulan bir CodeQL sorgusu çalıştır ve sonuçları doğrula.
- Küçük bir uygulamanın tam incelemesi: Kurgusal Durelo Sipariş servisinin kodunu incele, bulguları önem sırasına koy ve düzeltmeleri çekme isteğiyle gönder.
Kurs hakkında
Veriyi kaynaktan tehlikeli çağrıya kadar izleyerek kod incelersin; kimlik, yetki, kriptografi, hata işleme ve bağımlılıkları kontrol listeleriyle gözden geçirir, Semgrep ve CodeQL ile incelemeyi hızlandırırsın.
Ne öğreneceksin
- Yaklaşım
- Konu konu inceleme
- Araçlarla inceleme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.