iToverDose/Yazılım· 30 MAYIS 2026 · 12:01

Çerezlerdeki Güvenlik Açığı: Saldırganlar Nasıl Uygulama Hakkınızı Ele Geçiriyor?

Çerez manipülasyonu, web uygulamalarındaki en yaygın güvenlik açıklarından biri. Peki saldırganlar basit yöntemlerle nasıl admin hakkı kazanıyor? Korunma yöntemlerini keşfedin.

DEV Community3 dk okuma0 Yorumlar

Web uygulamalarının sizi tanımasının en basit yolu, tarayıcınıza yerleştirilen çerezlerdir. Sunucu bir çerezi ayarladıktan sonra, her istekle birlikte size güvenerek geri gönderir. Ancak bu güven, saldırganlar tarafından kolayca istismar edilebilir. Geliştiriciler hassas bilgileri — örneğin oturum durumunu ya da rol bilgilerini — doğrudan çerezlerde sakladığında, saldırganlar sadece bu değerleri değiştirerek yetkilerini artırabiliyor. Peki bu saldırılar nasıl gerçekleşiyor ve nasıl korunabilirsiniz?

Çerez Manipülasyonunun Temel Yöntemleri

Çerezleri değiştirerek uygulama haklarını ele geçirmenin üç yaygın yolu bulunuyor. Her biri, geliştiricilerin yaptığı yaygın hatalara dayanıyor ve doğru çözümler farklılaşıyor.

1. Düz Metin Olarak Saklanan Çerezler: En Basit Saldırı Vektörü

Bazı uygulamalar, kullanici_giris=true ya da yetkili=false gibi değerleri doğrudan çerezlerde düz metin olarak saklıyor. Sunucu bu çerezleri tarayıcıya gönderirken, herhangi bir doğrulama yapmıyor. Saldırganlar ise sadece bu değerleri değiştirerek uygulamaya erişim sağlayabiliyor.

Örneğin, sunucu aşağıdaki çerezleri ayarladıktan sonra:

Set-Cookie: kullanici_giris=true; Max-Age=3600; Path=/ 
Set-Cookie: yetkili=false; Max-Age=3600; Path=/

Temel bir istek gönderildiğinde yanıt:

Kullanıcı Girişi Yok

Sunucunun ayarladığı çerezlerle istek gönderildiğinde:

Kullanıcı Olarak Giriş Yapıldı

Ancak yetkili değerini true olarak değiştirmek yeterli:

Kullanıcı Olarak Giriş Yapıldı

Bu basit değişiklikle saldırgan, admin yetkilerini ele geçirebiliyor. Sunucu, çerezin başlangıçta hangi değerlerle ayarlandığını kontrol etmiyor — sadece gelen veriye güveniyor.

Korunma Yöntemi: Yetkilendirme verilerini asla istemci tarafında saklamayın. Bunun yerine, rastgele bir oturum kimliği oluşturun ve bu kimliği sunucu tarafında bir depolama sistemiyle eşleştirin. Çerezin içeriğine asla güvenmeyin.

2. Karmalı Çerezler: Tahmin Edilebilir Güvenlik

Bazı geliştiriciler, çerezleri düz metin yerine karma (hash) fonksiyonlarıyla korumayı deniyor. Ancak karma fonksiyonları deterministik olduğu için aynı girdi her zaman aynı çıktıyı üretiyor. Bu da saldırganların, sunucunun hangi değerleri kontrol ettiğini bildiğinde, bu değerlerin karma karşılığını hesaplayarak yetki kazanmasını mümkün kılıyor.

Örneğin, 1 sayısının farklı karma yöntemleriyle ürettiği çıktılar:

  • MD5: c4ca4238a0b923820dcc509a6f75849b
  • SHA-256: 6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
  • SHA-512: 4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed66510a
  • SHA-1: 356a192b7913b04c54574d18c28d46e6395428ab

Saldırgan, admin kelimesinin MD5 karşılığını hesaplayarak rol çerezini değiştirebilir:

echo -n "admin" | md5sum

Çıktı:

21232f297a57a5a743894a0e4a801fc3

Bu değeri rol çerezine yerleştirerek admin sayfasına erişim sağlanabilir. Aynı şekilde, salter (salt) kullanılmayan karma değerler, gökkuşağı tablolarıyla da çözülebiliyor.

Korunma Yöntemi: Çerezleri imzalamak için sunucu tarafında gizli bir anahtar kullanın. Ayrıca, her oturum için benzersiz bir tuz (salt) ekleyerek, aynı girdinin farklı oturumlarda farklı çıktılar üretmesini sağlayın. Sadece karma kullanmak, güvenlik sağlamaz — çünkü girdiler tahmin edilebilir.

3. Base64 ile Şifrelenmiş Görünen Çerezler: Basit Bir Kod Çözme İşlemi

Base64, şifreleme değil kodlama yöntemidir. Herhangi biri tarafından kolayca çözülebilir. Buna rağmen bazı uygulamalar, oturum verilerini Base64 ile kodlanmış çerezlerde saklıyor ve bu verileri güvenilir kabul ediyor.

Örneğin, sunucu aşağıdaki çerezi ayarladıktan sonra:

Set-Cookie: oturum=eyJpZCI6MSwiYWRtaW4iOmZhbHNlfQ==; Max-Age=3600; Path=/

Bu değeri çözdüğünüzde:

echo 'eyJpZCI6MSwiYWRtaW4iOmZhbHNlfQ==' | base64 -d

Çıktı:

{"id": 1, "yetkili": false}

Değeri değiştirip tekrar kodladığınızda:

echo -n '{"id": 1, "yetkili": true}' | base64

Çıktı:

eyJpZCI6MSwiYWRtaW4iOnRydWV9

Bu değiştirilmiş çerezi göndererek admin erişimi elde edilebilir. Sunucu, çerezin gerçekten sunucu tarafından oluşturulduğunu doğrulamadığı için saldırı başarılı oluyor.

Korunma Yöntemi: Daima imzalı tokenler kullanın — örneğin JWT. Sunucu tarafında imzayı doğruladıktan sonra çerez verilerine güvenin. Eğer çerezde hassas veriler bulunması gerekiyorsa, şifreli tokenler kullanarak içeriğin okunamaz veya değiştirilemez olmasını sağlayın.

Güvenlik Açığından Korunmanın En İyi Uygulamaları

Çerez manipülasyonu, sunucunun güvenmemesi gereken veriye güvenmesinden kaynaklanıyor. Bu sorunu çözmek için izlenmesi gereken adımlar şunlar:

  • Sunucu tarafında yetkilendirme: Tüm yetkilendirme verilerini istemci yerine sunucu tarafında saklayın. Sadece rastgele oturum kimlikleri kullanın.
  • İmzalama ve doğrulama: Çerezleri bir gizli anahtarla imzalayın ve her istek için imzayı doğrulayın. Bu şekilde, çerezlerin değiştirilmesi engellenmiş olur.
  • Şifreleme kullanın: Eğer çerezlerde hassas veriler bulunuyorsa, bunları şifreleyin ve sadece sunucu tarafından çözülebilir hale getirin.
  • Geliştirme aşamasında test edin: Uygulamanızı güvenlik testlerine tabi tutun ve çerez manipülasyonu senaryolarını simüle edin.

Çerez manipülasyonu, yazılım güvenliğinin temellerinden biri. Bu saldırı vektörüne karşı korunmak, geliştiricilerin ve güvenlik uzmanlarının ortak sorumluluğu. Uygulamanızda bu açıkları henüz kapatmadıysanız, şimdi harekete geçmenin tam zamanı.

Güvenlik konusunda daha fazla bilgi edinmek ister misiniz? Uygulama güvenliği (AppSec) hakkında tartışmalara katılın ya da yorumlarınızı paylaşın. Her zaman yeni teknikler ve en iyi uygulamalar hakkında konuşmaya açığız!

Yapay zeka özeti

Çerez manipülasyonu saldırılarıyla uygulamalarınıza nasıl admin hakları kazanılır? Düz metin, karma ve Base64 saldırılarının arkasındaki teknikleri ve korunma yollarını keşfedin.

Yorumlar

00
YORUM BIRAK
ID #NKO8FZ

0 / 1200 KARAKTER

İnsan doğrulaması

3 + 8 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.