Kendi SAST kurallarını yazmak: Semgrep ve veri akışı
Kurumuna özgü hataları yakalayan Semgrep kuralları yazar, kaynaktan hedefe veri akışı analiziyle enjeksiyonları izler ve kurallarını testlerle güvenceye alırsın.
Seviye 301 · 18 ders · 15 pratik lab
Dersler
Kural yazmanın temeli
- Kural yapısı: kimlik, desen, mesaj, önem
- Desenler ve metadeğişkenler
- pattern-either, pattern-not ve pattern-inside
- Kuralı küçük örneklerle denemek
- Kısa görev: tehlikeli bir iç fonksiyonun kullanımını yakalayan kural yaz
Veri akışı (taint)
- Kaynak, hedef ve temizleyici
- Taint kipiyle SQL enjeksiyonunu izlemek
- Yayıcılar ve fonksiyonlar arası akış
- Temizleyici tanımlayarak yanlış alarmı azaltmak
- Kısa görev: SSRF için taint kuralı yaz
Kural kalitesi
- Kural testleri: ruleid ve ok işaretleri
- Otomatik düzeltme önerisi eklemek
- CWE, OWASP ve güven düzeyi üst verisi
- Kural deposu ve CI’da kural testleri
- Kısa görev: beş kurallık bir paket hazırla ve test et
Kurumsal kullanım
- Olaydan kurala: aynı hatayı bir daha yapmamak
- Kural başarısını ölçmek: isabet ve gürültü
- Bitirme görevi: kurum içi bir çerçeve için güvenlik kural seti
Pratik lablar
- Bir Semgrep kuralının parçalarını oku: Hazır kuralda kimlik, desen, ileti ve önem alanlarını bul ve kuralın neyi yakaladığını bir cümleyle yaz.
- Tehlikeli iç işlevin kullanımını yakalayan kural yaz: Metadeğişken kullanarak kurumun eski şifreleme işlevine yapılan her çağrıyı bulan bir kural yaz ve örnek dosyada dene.
- pattern-inside ve pattern-not ile kuralı daralt: Yalnızca istek işleyicilerinin içinde ve doğrulama çağrısı olmadan yapılan dosya açma işlemlerini yakalayan kuralı yaz, üç olumlu ve üç olumsuz örnekle sına.
- Kaynak, hedef ve temizleyiciyi örnek kodda işaretle: Verilen işlevde kullanıcı girdisinin girdiği yeri, tehlikeli çağrıyı ve arada temizleme yapan işlevi göster.
- SSRF için taint kuralı yaz: İstek parametresinden HTTP istemcisinin adres argümanına akan veriyi yakalayan kuralı yaz ve izin listesi denetimini temizleyici olarak tanımla.
- Fonksiyonlar arası akışı yayıcılarla izle: Girdinin yardımcı işlevden ve nesne alanından geçerek sorguya ulaştığı SQL enjeksiyonunu yakalayacak şekilde kuralı yayıcılarla genişlet ve yanlış alarmları temizleyiciyle azalt.
- Kural testi için ruleid ve ok işaretlerini ekle: Örnek dosyada yakalanması ve yakalanmaması gereken satırları işaretle ve testi çalıştır.
- Kurala otomatik düzeltme ve üst veri ekle: Zayıf özet işlevini güvenli olanla değiştiren düzeltmeyi yaz ve kurala CWE, OWASP ve güven düzeyi alanlarını ekle.
- Beş kurallık bir paket oluştur ve CI’da sına: Kuralları testleriyle bir depoda topla, her değişiklikte testleri çalıştıran bir hat adımı yaz ve bozulan kuralın birleşmeyi durdurduğunu göster.
- Bir olay raporundan kurala dönüşecek kalıbı çıkar: Kısa olay raporunu oku ve kusurun koddaki ayırt edici biçimini iki satırla tarif et.
- Yaşanan olayın aynısını yakalayan kuralı yaz: Yetki denetimi olmadan çağrılan yönetici işlevini yakalayan kuralı yaz ve tüm depoda başka kaç yerde geçtiğini bul.
- Kuralın isabetini ve gürültüsünü ölç ve iyileştir: Kuralı beş depoda çalıştır, bulguları doğru ve yanlış olarak etiketle, kesinlik oranını hesapla ve oranı yükselten değişikliği yap.
- Kurum içi çatının güvenlik açısından önemli işlevlerini listele: Çatının belgelerinden girdi alan, sorgu çalıştıran ve yetki denetleyen işlevleri çıkar.
- Çatı için kaynak ve hedef tanımlarını yaz: Çatının istek nesnesini kaynak, ham sorgu ve şablon işlevlerini hedef olarak tanımlayan ortak bir taint kuralı hazırla.
- Kurum içi çatı için güvenlik kural kümesi yayınla: Göktaşı Yazılım’ın çatısı için testli, üst verili ve belgeli altı kurallık bir küme hazırla ve örnek uygulamada ölçülmüş sonuçlarıyla sun.
Kurs hakkında
Kurumuna özgü hataları yakalayan Semgrep kuralları yazar, kaynaktan hedefe veri akışı analiziyle enjeksiyonları izler ve kurallarını testlerle güvenceye alırsın.
Ne öğreneceksin
- Kural yazmanın temeli
- Veri akışı (taint)
- Kural kalitesi
- Kurumsal kullanım
Ö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.