Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 3

STRIDE & Advanced Bug Bounty Vulnerabilities

Recommended resources

Merhaba, önceki dersimizde, bir sistemin Veri Akış Diyagramı (DFD) üzerindeki en zayıf halkaları, yani güven sınırlarını (trust boundaries) nasıl tespit edeceğimizi ve analiz edeceğimizi öğrendik. Bu sınırlar, bir saldırganın en çok odaklandığı, farklı güven seviyelerindeki bileşenlerin kesişim noktalarıdır. Artık elimizde hem sistemin veri akış haritası hem de bu harita üzerindeki kritik "fay hatları" var.

Bu dersimizde, analizimizi bir adım daha ileri taşıyarak bu sınırlarda ne tür tehditler arayacağımızı sistematik hale getireceğiz. Bunu yapmak için, her bir güven sınırı geçişine STRIDE merceğiyle bakacağız. Bu dersin amacı, STRIDE'ın altı kategorisini (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) ezberlemek değil; bu kategorileri, modern hata avcılığında karşılaşılan ileri düzey ve yaratıcı zafiyet sınıflarıyla eşleştirmektir. STRIDE'ı, potansiyel zafiyetler için bir "üretici model" (generative model) olarak kullanarak, bir sistemin tasarımından somut saldırı senaryolarına nasıl geçebileceğimizi keşfedeceğiz. Güvenli uygulama mimarisi tasarımı ve tehdit modellemesi konusundaki tecrübeniz, bu soyutlamayı pratik saldırı vektörlerine dönüştürme sürecini daha anlamlı kılacaktır.

STRIDE'dan Saldırıya: Tehdit Kategorilerinden Zafiyet Sınıflarına

Her bir STRIDE kategorisi, bir güvenlik özelliğinin ihlalini temsil eder. Bir hata avcısı olarak görevimiz, bu teorik ihlalleri, gerçek dünyada istismar edilebilecek somut zafiyetlere dönüştürmektir. jit.io tarafından hazırlanan "STRIDE Threat Model: A Complete Guide" başlıklı makale, her bir kategorinin modern uygulamalardaki yansımalarına dair güzel bir temel sunuyor.

STRIDE Threat Model: A Complete Guide

Bu kaynak, her bir STRIDE kategorisini ne anlama geldiği, saldırganların bunu nasıl kullandığı ve modern hafifletme stratejileriyle birlikte açıklıyor. Bu, zafiyet sınıflarını eşleştirmeden önce kavramsal bir temel oluşturmak için faydalı bir başlangıç noktasıdır.

Makaledeki "Breaking Down STRIDE: Understanding Each Threat Category" başlığı altındaki altı kategorinin tamamını okuyun. Her bir tehdit türü için verilen modern istismar senaryolarına (örneğin, Spoofing için API token'larının kötüye kullanılması, Tampering için CI/CD pipeline manipülasyonu) ve önerilen hafifletme yöntemlerine dikkat edin. Bu, teorik kategoriler ile pratik güvenlik açıkları arasındaki bağlantıyı kurmanıza yardımcı olacaktır.

Bu temel anlayış üzerine, daha yapısal bir yaklaşım benimseyebiliriz. arXiv'de yayınlanan "ISADM" modeli üzerine yazılmış makale, STRIDE kategorilerini, siber güvenlik dünyasında saldırgan taktik ve tekniklerini belgeleyen MITRE ATT&CK® çerçevesiyle eşleştiren mükemmel bir tablo sunmaktadır. Bu eşleştirme, bir savunmacının tehdit modelinden bir saldırganın oyun planına (playbook) geçiş yapmamızı sağlar.

[PDF] ISADM: An Integrated STRIDE, ATT&CK, and D3FEND Model ... - arXiv

Bu akademik makale, STRIDE'ı ATT&CK gibi saldırgan odaklı çerçevelerle birleştiren bütünsel bir model sunar. Bizim için en değerli kısmı, STRIDE kategorilerini doğrudan ATT&CK taktikleriyle eşleştiren özet tablosudur.

Makaledeki Table 4: STRIDE Categories and Mitre ATT&CK® Mapping tablosunu dikkatlice inceleyin. Lütfen tablonun tamamını ve her eşleştirme için sunulan mantıksal gerekçeleri ("Rationals" sütunu) okuyun. Örneğin, "Tampering" tehdidinin neden "Execution", "Persistence" ve "Impact" gibi ATT&CK taktikleriyle ilişkili olduğunu anlamak, bu kategoriyi somut saldırı tekniklerine dönüştürmemize yardımcı olacaktır.

Artık STRIDE kategorilerini saldırgan taktikleriyle ilişkilendiren yapısal bir çerçeveye sahibiz. Şimdi her bir STRIDE kategorisini tek tek ele alalım ve bunları günümüzün en yaratıcı ve etkili hata avı (bug bounty) zafiyet sınıflarıyla eşleştirelim.


1. Spoofing (Kimlik Sahtekarlığı)

Spoofing, bir saldırganın başka bir kullanıcı, bileşen veya sistem gibi davranmasıdır. Bu, genellikle kimlik doğrulama mekanizmalarını hedef alır.

  • Temel Zafiyetler: Basit parola tahminleri, session ID'lerinin çalınması.
  • İleri Düzey Zafiyet Sınıfları:
    • JWT Zafiyetleri: alg header'ını none olarak ayarlama veya asimetrik anahtarı (RS256) simetrik bir anahtar (HS256) gibi kullanarak imza baypası. kid (Key ID) header'ını kullanarak path traversal veya SQL injection ile key manipülasyonu.
    • OAuth/OIDC Akış Zafiyetleri: redirect_uri'nin zayıf doğrulanmasını istismar ederek authorization_code çalmak. Referrer header sızıntısı veya tarayıcı geçmişi zehirlenmesi gibi yan kanallar üzerinden kod çalınması.
    • SAML İmza Sarmalama (Signature Wrapping): Saldırganın, imzalı bir SAML assertion'ını kendi oluşturduğu sahte bir assertion içine gömerek imzayı geçerli kılıp içeriği değiştirmesi.
    • SIP (Session Initiation Protocol) Manipülasyonu: DEF CON'daki "War Stories" sunumunda Justin Gardner, bir IoT cihazında SIP protokolü token'larını ve header'larını manipüle ederek nasıl kimlik sahtekarlığı yaptığını ve başkalarının adına çağrı başlatıp gizlice ortamı dinlediğini anlatıyor. Bu, protokol seviyesinde bir kimlik sahtekarlığıdır. Bu bölümde (video LINK), from ve to alanlarının nasıl manipüle edilerek sistemin kandırıldığına dikkat edin.

2. Tampering (Veri ve Kodla Oynama)

Tampering, yetkisiz veri veya kod değişikliğidir. Verinin bir güven sınırını geçtiği her noktada (örneğin, kullanıcıdan sunucuya, bir mikroservisten diğerine) bu tehdit mevcuttur.

  • Temel Zafiyetler: Klasik XSS, SQL Injection.
  • İleri Düzey Zafiyet Sınıfları:
    • Sunucu Taraflı Prototip Kirliliği (Server-Side Prototype Pollution): Özellikle Node.js uygulamalarında, bir nesnenin prototipini (Object.prototype) kirleterek uygulamanın genelindeki tüm nesnelerin davranışını değiştirme. Bu, mantıksal baypaslardan (örneğin, admin kontrolünü atlama) Uzaktan Kod Çalıştırma'ya (RCE) kadar varabilir.
Bu diyagram, bir saldırganın `__proto__` anahtarını kullanarak `Object.prototype`'a kötücül bir özellik enjekte etmesini gösterir. Bu değişiklik, uygulamanın `config` nesnesine yansıyarak hassas bir değeri (transport_url) geçersiz kılar.
*   **Sunucu Taraflı Şablon Enjeksiyonu (SSTI):** Şablon motorlarının (Jinja2, Twig, Freemarker vb.) kullanıcı girdisini güvensiz bir şekilde işlemesi sonucu, sunucu tarafında kod çalıştırmaya olanak tanıyan bir zafiyet.
*   **Konfigürasyon Dosyası Enjeksiyonu (Configuration File Injection):** "War Stories" sunumunda ([LINK](https://www.youtube.com/watch?v=TqKb7h8VFcA)), Justin Gardner'ın bir IoT router'ını nasıl hacklediğini gördük. Burada, DHCP servisi için dinamik olarak oluşturulan bir konfigürasyon dosyasına (`dhcpd.conf`) enjeksiyon yaparak komut çalıştırıyordu. Bu, klasik web enjeksiyonlarının ötesinde, altyapı katmanında bir "tampering" örneğidir. <ts start="00:27:20" end="00:28:18">Bu saldırı zinciri</ts>, verinin bir gRPC servisinden alınıp bir betik tarafından işlenerek konfigürasyon dosyasına yazıldığı bir güven sınırı ihlalini mükemmel bir şekilde göstermektedir.
*   **DOM Clobbering:** Bir HTML belgesindeki elementlerin `id` veya `name` özniteliklerini kullanarak global JavaScript değişkenlerinin (örneğin, `window.someConfig`) üzerine yazma. Bu, client-side mantığı manipüle ederek XSS'e veya güvenlik kontrollerini atlamaya yol açabilir.

3. Repudiation (İnkar Edilebilirlik)

Repudiation, bir kullanıcının veya sistemin yaptığı bir eylemi inkar edebilmesidir. Bu genellikle yetersiz veya manipüle edilebilir loglama mekanizmalarından kaynaklanır. Hata avcıları için bu kategori genellikle tek başına bir zafiyetten ziyade, bir saldırı zincirinin parçası olarak önem kazanır. Saldırganın izlerini silmesini sağlar. arxiv.org makalesinde bu kategorinin ATT&CK'teki "Defense Evasion" (Savunmadan Kaçınma) taktiğiyle eşleştirilmesi bu yüzdendir.

  • İleri Düzey Senaryolar:
    • Log Dosyası Silme/Manipülasyonu: Başarılı bir istismar sonrası, saldırganın ~/.bash_history gibi komut geçmişi dosyalarını, uygulama loglarını veya sistem olay günlüklerini (örn. Windows Event Logs) silerek adli bilişim analizini zorlaştırması. "War Stories" sunumunda (LINK) hem Bangladesh Bank (T1070.004: File Deletion) hem de Equifax (T1070.004) vakalarında saldırganların izlerini silmek için logları ve artifaktları sildiği belirtilmektedir.
    • Zaman Damgası Manipülasyonu (Timestomping): Saldırganın, sisteme yerleştirdiği dosyaların zaman damgalarını (mtime, atime, ctime) meşru sistem dosyalarıyla aynı olacak şekilde değiştirerek tespit edilmeyi zorlaştırması.

4. Information Disclosure (Bilgi İfşası)

Information Disclosure, hassas verilerin yetkisiz kişilere sızdırılmasıdır. Bu, hata mesajlarından kaynaklanan küçük sızıntılardan, tüm veritabanının ifşa edilmesine kadar geniş bir yelpazeyi kapsar.

  • Temel Zafiyetler: Detaylı hata mesajları, dizin listeleme.
  • İleri Düzey Zafiyet Sınıfları:
    • Web Cache Deception/Poisoning: Web önbellekleme mekanizmalarını manipüle ederek hassas kullanıcı verilerini ele geçirme (Deception) veya diğer kullanıcılara kötücül içerik sunma (Poisoning). Roni Carta'nın DEF CON sunumu (LINK), registry.npmjs.org üzerinde bir cache poisoning ile paketlerin nasıl erişilemez hale getirilebildiğini gösteren çarpıcı bir örnektir. Bu bölüm, cache anahtarının nasıl manipüle edildiğini ve sonucun ne kadar etkili olabileceğini ortaya koyuyor.
    • Kör XXE (Blind XXE) ile Bant Dışı Veri Sızdırma (OAST): Standart XXE'nin aksine, sunucunun doğrudan bir yanıt döndürmediği durumlarda, saldırgan kontrolündeki bir sunucuya (OAST - Out-of-Band Application Security Testing aracı) DNS sorguları veya HTTP istekleri gönderterek veri sızdırma.
    • Gelişmiş IDOR (Insecure Direct Object Reference) Desenleri: Sıralı tamsayılar yerine UUID'ler, karma (hashed) veya şifreli (encrypted) ID'ler kullanan sistemlerde bile, bu ID'lerin başka bir API uç noktasından sızdırılmasıyla IDOR zafiyetinin ortaya çıkması. "War Stories" sunumunda (LINK), bir API'deki numerik IDOR'un parola hash'lerini ve reset token'larını sızdırarak hesap devralmaya yol açtığı basit ama etkili bir örnek bulunmaktadır.

5. Denial of Service (Hizmet Reddi)

DoS, bir sistemi veya hizmeti meşru kullanıcılar için erişilemez hale getirmektir. Bug bounty programları genellikle basit ağ katmanı DoS saldırılarını kapsam dışı bırakır, ancak uygulama katmanındaki akıllı ve düşük bant genişliğine sahip DoS saldırıları genellikle yüksek ödüllerle sonuçlanır.

  • Temel Zafiyetler: "Milyar kahkaha" (billion laughs) XML saldırısı.
  • İleri Düzey Zafiyet Sınıfları:
    • Algoritmik Karmaşıklık Zafiyetleri (ReDoS, Hash-Collision DoS): Kötü yazılmış bir düzenli ifadenin (Regex), özel olarak hazırlanmış bir girdiyle katastrofik geri izleme (catastrophic backtracking) yapmasına neden olarak CPU'yu tüketmesi (ReDoS). Veya, bir hash tablosunda kasıtlı olarak çok sayıda çakışma (collision) yaratarak veri yapısının performansını O(1)'den O(n)'ye düşürmek.
    • GraphQL Kötüye Kullanımı (GraphQL Abuse): Roni Carta'nın sunumunda (LINK) belirttiği gibi, GraphQL'in esnekliği, DoS için birçok kapı açar. Döngüsel sorgular (circular definitions), çok sayıda sorguyu tek bir istekte birleştiren batching, veya karmaşık alias ve directive'ler kullanılarak sunucu kaynakları kolayca tüketilebilir. Bu bölüm, GraphQL'in varsayılan konfigürasyonlarının ne kadar tehlikeli olabileceğini ve Google'da bulunan yaratıcı bir directive overloading zafiyetini detaylandırıyor.
    • Kaynak Tüketimi (Resource Exhaustion): Yine Roni Carta'nın sunumundan bir örnek (LINK), kullanıcı tarafından sağlanan bir zip dosyasının sunucuda açılmasının inode tükenmesine yol açarak diski doldurması ve sistemi çökertmesi. Bu, bir race condition ararken tesadüfen bulunan bir zafiyettir ve DoS'un ne kadar beklenmedik yerlerden çıkabileceğini gösterir. Bu vaka, disk alanı gibi sınırlı kaynakların nasıl hedef alınabileceğini anlatır.

6. Elevation of Privilege (Ayrıcalık Yükseltme)

EoP, bir saldırganın başlangıçta sahip olduğu yetkilerden daha fazlasını elde etmesidir. Bu, genellikle yetkilendirme kontrollerindeki mantık hatalarından kaynaklanır. STRIDE'ın belki de en kritik ve en çok aranan tehdit kategorisidir.

  • Temel Zafiyetler: Kırık erişim kontrolü (bir admin sayfasına URL'yi tahmin ederek erişmek).
  • İleri Düzey Zafiyet Sınıfları:
    • Yarış Koşulları (Race Conditions / TOCTOU): Bir eylemin kontrol edildiği zaman (Time-of-Check) ile kullanıldığı zaman (Time-of-Use) arasındaki boşluktan yararlanarak güvenlik kontrollerini atlama. Örneğin, bir hediye kuponunun geçerliliğini kontrol ettikten sonra, sunucu kuponu "kullanıldı" olarak işaretlemeden önce birden fazla paralel istek göndererek kuponu defalarca kullanmak.
    • Durum Makinesi (State Machine) Manipülasyonu: Çok adımlı bir iş akışında (örneğin, sipariş verme, hesap doğrulama) adımları atlayarak veya beklenmedik bir sırayla çağırarak sistemin istenmeyen bir duruma geçmesini sağlamak ve kontrolleri baypas etmek.
    • Gelişmiş Kütlesel Atama (Mass Assignment): Modern framework'lerde, geliştiricinin beklemediği iç içe JSON nesneleri veya API'nin yansıma (reflection) yoluyla otomatik olarak nesneleri doldurması sonucu, isAdmin=true gibi normalde değiştirilememesi gereken alanları güncellemek.
    • İş Mantığı Zafiyetleri (Business Logic Flaws): En yaratıcı saldırıların geldiği alanlardan biridir. "War Stories" (LINK) sunumunda Justin Gardner, bir video konferans uygulamasında, katılımcı listesinin güncellenmesini tetikleyen "audio connect" sinyalinin client-side'da gönderilmesini engelleyerek toplantılara gizlice katılabildiği bir zafiyeti anlatır. Bu, doğrudan bir kodlama hatasından ziyade, uygulamanın mantığındaki bir varsayımın (her katılımcının ses bağlantısı sinyali göndereceği varsayımı) ihlalidir.

Özet ve Sonraki Adımlar

Bu derste, teorik STRIDE çerçevesini, ileri düzey ve yaratıcı hata avı senaryolarına nasıl uygulayacağımızı öğrendik. Bu eşleştirme, tehdit modellemesini bir savunma aracından, proaktif bir saldırı planlama aracına dönüştürür.

Temel Çıkarımlar:

  • STRIDE Bir Avlanma Haritasıdır: Her bir STRIDE kategorisi, bir güven sınırında aranacak belirli türdeki gelişmiş zafiyet sınıfları için bir yol göstericidir.
  • Spoofing, kimlik doğrulama protokollerinin derinliklerindeki zafiyetleri (JWT, OAuth, SAML) hedefler.
  • Tampering, modern uygulamalarda Prototype Pollution ve SSTI gibi güçlü RCE vektörlerine dönüşebilir.
  • Information Disclosure, Cache Deception ve Blind XXE gibi dolaylı ve gizli sızdırma tekniklerini içerir.
  • Denial of Service, ağ katmanının ötesinde, algoritmik ve mantıksal zafiyetlerle uygulama katmanında kritik etki yaratabilir.
  • Elevation of Privilege, genellikle en yaratıcı iş mantığı ve durum makinesi manipülasyonu zafiyetlerini barındırır.
  • Repudiation, genellikle bir saldırı zincirinin son adımı olarak, izleri silme ve tespitten kaçınma amacıyla kullanılır.

DFD'ler ve güven sınırları analizimizle tehditleri nereye odaklayacağımızı, bu dersle de bu odak noktalarında ne arayacağımızı öğrendik. Bir sonraki dersimizde, bu bulduğumuz potansiyel tehditleri, programın kapsamı, saldırı yüzeyinin maruziyeti ve geçmiş ödül verileri gibi faktörlere dayanarak nasıl önceliklendireceğimizi ve en değerli hedefleri nasıl seçeceğimizi inceleyeceğiz.