Yavuzlar
Ana sayfaTelegram
  • Yavuzlar
  • VulnLab
  • CodinLab
  • 📚EĞİTİM
    • PHP
      • XAMPP kurulumu
      • VS Code Kurulum
      • 1.0 PHP Nedir
      • 1.1 Dosya Oluşturma
      • 1.2 Syntax (Yazım Kuralları)
      • 1.3 PHP'de Echo ve Print
      • 1.4 PHP'deki yorumlar
      • 1.5 PHP Değişkenleri
      • 1.6 Operatörler (Operators)
      • 1.7 Veri Türünü Alma
      • 1.8 PHP'de String
      • 1.9 PHP'de Sabitler
      • 2.0 PHP'de If Else Elseif
      • 2.1 Switch Case
      • 2.2 PHP'de Döngüler
      • 2.3 PHP'de Diziler (Arrays)
      • 2.4 PHP'de Süper Global Değişkenleri
      • 2.5 PHP'de Cookie (Çerez) Ve Session (Oturum) Yöntemleri
      • 2.6 Form işlemleri
    • C++
      • 1.0 Temeller
        • 1.1 Dosya Oluşturma
        • 1.2 Syntax (Yazım Kuralları)
        • 1.3 Yorum Satırları
        • 1.4 C++ Değişkenleri
          • 1.4.1 Değişken Türleri
        • 1.5 Operatörler (Operators)
        • 1.6 Namespace
        • 1.7 Kullanıcı Girdisi (User Input)
        • 1.8 C++ Stringleri (C++ Strings)
        • 1.9 Matematik (Math) Fonksiyonları
        • 1.10 Booleans
        • 1.11 If Else
        • 1.12 Switch
        • 1.13 While Döngüsü
          • 1.13.1 Do While Döngüsü
        • 1.14 For Döngüsü
        • 1.15 Break/Continue
        • 1.16 Diziler
        • 1.17 Structures
        • 1.18 Enums
        • 1.19 References
        • 1.20 Pointers
      • 2.0 Fonksiyonlar
      • 3.0 Sınıflar
        • 3.1 OOP
        • 3.2 Sınıflar ve Objeler
        • 3.3 Sınıf Methodları
        • 3.4 Yapıcılar (Constructors)
        • 3.5 Erişim Belirleyicileri (Access Specifiers)
        • 3.6 Kapsülleme (Encapsulation)
        • 3.7 Inheritance
        • 3.8 Polimorfizm (Polymorphism)
        • 3.9 Dosyalar (Files)
        • 3.10 İstisnalar (Exceptions)
        • 3.11 Tarih ve Zaman (Date and Time)
      • 4.0 Veri Yapıları (Data Structures)
        • 4.1 Veri Yapıları ve STL
        • 4.2 Vektörler (Vectors)
        • 4.3 Listeler (Lists)
        • 4.4 Yığınlar (Stacks)
        • 4.5 Kuyruklar (Queues)
        • 4.6 Deque (Çift Uçlu Kuyruk)
        • 4.7 Küme (Set)
        • 4.8 Maps
        • 4.9 Iterator
        • 4.10 Algoritmalar
  • 🛠️ARAÇLAR
    • Aircrack-ng
    • Airgeddon
    • Arjun
    • BeEF
    • Bettercap
    • Docker
    • Gelişmiş Wireshark Kullanımı (Advanced Wireshark Usage)
    • Google Dorks
    • Hping3
    • John the Ripper
    • Metasploit Framework
    • Netcat
    • Nmap
    • OSINT Framework
    • PEASS-ng
    • Sublist3r
    • XSS Scanner
    • Wireshark
    • ZAP
    • HYDRA
  • 🖥️İŞLETİM SİSTEMLERİ
    • Linux101
    • MBR
  • 🔑KRİPTOLOJİ
    • Dijital Sertifika ve İmzalar
    • Sezar Şifrelemesi
    • Steganografi
    • Veri Şifreleme (Data Encryption)
  • 🔏Network
    • Domain Name Server (DNS)
    • Firewall Nedir? Nasıl Çalışır ?
    • Ortadaki Adam Saldırısı (Man In The Middle Attack)
    • OSI Modeli
    • Sanal Özel Ağlar (VPN)
    • World Wide Web (WWW)
  • 🔐PRIVILEGED
    • Docker Escape
  • 📨Protokoller
    • ARP
    • DHCP
    • FTP
    • HTTP/HTTPS
    • SSH
    • TCP/IP
    • UDP
    • Wİ-Fİ Güvenlik Protokolleri (WEP/WPA/WPA2/WPA3)
  • 💻SİBER TEHDİT İSTİHBARATI
    • Gelişmiş Siber Tehdit İstihbaratı Nedir?
  • 🔒WEB GÜVENLİĞİ
    • 403 ByPass
    • API Güvenliği (API Security)
    • Broken Access Control
    • Bulut Güvenliği (Cloud Security)
    • Command Injection
    • Cross Origin Resource Sharing
    • Cross Site Request Forgery (CSRF)
    • Cyber Kill Chain
    • DDoS Saldırıları
    • File Upload Zafiyeti Nedir?
    • HTTP Request Smuggling
    • Insecure Direct Object Reference (IDOR)
    • Incident Response
    • Local File Inclusion (LFI)
    • NoSQL Injection
    • Pentest 101
    • Race Condition
    • Server Side Request Forgery (SSRF)
    • Server Side Template Injection (SSTI)
    • Spring4Shell
    • Two Factor Authentication Bypass
    • XML External Entity Attack (XEE)
  • 🤖YAPAY ZEKA
    • ChatGPT for Hacking
    • Siber Güvenlik ve Yapay Zeka
    • Yapay Zeka ile Sahte Fotoğraf Tespiti
  • 🌐YAZILIM
    • Düzenli İfadeler (Regular Expressions)
    • Elasticsearch Nedir?
    • Front-end Teknolojileri
    • Golang'da Arayüzler (Interfaces)
    • Go'da Concurrency ve Uygulamaları
    • Güvenli Kodlama (Secure Coding)
    • Java Overloading vs Overriding
    • JSON Web Token (JWT)
    • Material-UI
    • NextJS Nedir?
    • ReactJS Kancalar (Hooks)
    • ReactJS Nedir?
    • Redux Toolkit
    • SOLID Yazılım Geliştirme Prensipleri
    • SQL 101
    • UI / UX Nedir?
    • Veri Taşıma Nedir? (Database Migration)
    • Versiyon Kontrol Sistemleri ve GIT
  • 🔷DİĞER
    • Bug Bounty (Hata Ödülü) Nedir?
    • Popüler Yazılımların Kurulumları
      • Ubuntu Server 24.04 LTS Kurulumu
      • Ubuntu için Güncel Docker Engine Kurlumu
    • Güvenlik Operasyonları Merkezi Nedir?
    • Honeypot (Bal Küpü)
    • IoT Güvenliği Nedir?
    • ShellShock Exploit
    • Yük Dengeleyici (Load Balancer) Nedir?
Powered by GitBook
On this page
  • Potansiyel Etkileri
  • Hatalı Sonuçlar
  • Güvenlik Açıkları
  • Hesaplama Hataları
  • Deadlock ve Livelock Durumları
  • Kod Örneği
  • Laboratuvar Çözümleri
  • Race Condition Zafiyetini daha iyi anlamak için çözebileceğiniz lablar
  • Yavuzlar VulnLab
  • Race Condition Nasıl Önlenir
  • Kilitleme Mekanizmaları (Locks)
  • İşlem Sırasının Kontrolü
  • Test ve Denetimler
  • Ek Kaynaklar

Was this helpful?

  1. WEB GÜVENLİĞİ

Race Condition

PreviousPentest 101NextServer Side Request Forgery (SSRF)

Last updated 4 months ago

Was this helpful?

  • Race Condition Nedir,Nasıl oluşur?

    Race condition, çoklu threadlerin ortak paylaşılan bir kaynağı eş zamanlı olarak değiştirme çabası sonucu oluşan bir durumdur. Birden fazla thread aynı anda bu kaynağı okuyabilir veya değiştirebilir, bu da beklenmedik sonuçlara neden olabilir.


Potansiyel Etkileri

Hatalı Sonuçlar

Birden çok işlem aynı anda paylaşılan bir kaynağa erişmeye çalıştığında, beklenmeyen ve hatalı sonuçlar ortaya çıkabilir. Bu durum, veri bütünlüğünü bozabilir ve uygulamanın doğruluğunu zedeler.

Güvenlik Açıkları

Race condition, güvenlik açıklarına neden olabilir. Özellikle kritik işlemlerde veya yetkilendirme kontrollerinde oluşan hatalar, güvenlik zafiyetlerine yol açabilir ve kötü niyetli kullanıcıların istismarına açık bir alan bırakabilir.

Hesaplama Hataları

Birden çok işlem arasındaki rekabet, matematiksel veya mantıksal hesaplamalarda hatalara neden olabilir. Bu durum verilerin yanlış hesaplanmasına ve uygulamanın istenen sonuçları üretememesine yol açabilir.

Deadlock ve Livelock Durumları

İşlemler arasındaki rekabet, deadlock veya livelock durumlarına neden olabilir. Bu durumlar, işlemlerin birbirlerini beklemesi veya sürekli olarak birbirlerini engellemesi sonucunda uygulamanın ilerleyememesine ve sistem kaynaklarının tükenmesine yol açabilir


Kod Örneği

Race Condition zafiyetine yol açan bir kod örneği

public static void main(String[] args) {
    Runnable incrementTask = () -> {
        for (int i = 0; i < 1000; i++) {
            counter++; // Paylaşılan değişkeni artır
        }
    };

    Thread thread1 = new Thread(incrementTask);
    Thread thread2 = new Thread(incrementTask);

    thread1.start();
    thread2.start();

    try {
        thread1.join();
        thread2.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    System.out.println("Sonuç: " + counter);
}

Bu örnekte, iki iş parçacığı aynı counter değişkenini artırmaya çalışır. Ancak işlem sıralamaları kontrol edilmediğinden, race condition oluşur ve sonuç her çalıştırıldığında farklılık gösterebilir. Örneğin, “Sonuç” değeri 2000 olmalıdır (her iş parçacığı 1000 kez artırır), ancak race condition nedeniyle bu değer garanti edilmez. Farklı çalıştırmalarda farklı sonuçlar elde edebilirsiniz.


Laboratuvar Çözümleri

Race Condition Zafiyetini daha iyi anlamak için çözebileceğiniz lablar

PortSwigger Academy

İçerisinde web application security alanında kendinizi geliştirebileceğiniz laboratuvarlar bulunan PortSwigger Race Condition zafiyeti konusunda da gayet güzel laboratuvarlar barındırıyor.

Yavuzlar VulnLab

Yavuzlar Web Güvenliği takımının geliştirmiş olduğu VulnLab içerisinde Owasp Top 10 zafiyetlerinin bulunduğu laboratuvarlar bulunmaktadır. Race Condition zafiyetinde gelişmek isteyenler için oldukça güzel bir laboratuvar sizleri bekliyor.


Race Condition Nasıl Önlenir

Kilitleme Mekanizmaları (Locks)

Kilitleme mekanizmaları, paylaşılan kaynağa eş zamanlı erişimi kontrol altına almak için kullanılır. İşlem kaynağa erişmeye çalıştığında, kilitleme işlemi gerçekleştirilir ve kaynak diğer işlemler tarafından kullanılamaz hale gelir. Bu, yarış durumlarını önler ancak dikkatli bir şekilde kullanılmalıdır çünkü aşırı kilitleme performans sorunlarına yol açabilir.

İşlem Sırasının Kontrolü

İşlem sırasının kontrolü, belirli bir sıra içinde işlemlerin gerçekleştirilmesini sağlayarak race condition'ı önler. Bu, belirli bir sıra izlenmeyen durumları engeller ve tutarsızlık olasılığını azaltır.

Test ve Denetimler

Race Condition zafiyetinin potansiyel etkilerine maruz kalmamak için kodunuzda kapsamlı testler yapmanız gerekmektedir.


Ek Kaynaklar

🔒
https://portswigger.net/web-security/race-conditions
https://www.techtarget.com/searchstorage/definition/race-condition
yyusufnas - OverviewGitHub
Bu yazı Yusuf Nas tarafından yazılmıştır.
Logo
Race Condition
Yavuzlar VulnLAB