iToverDose/Yazılım· 7 TEMMUZ 2026 · 00:03

SSO Kullanırken Dikkat Edilmesi Gereken Kritik Güvenlik Açığı

Federasyon tabanlı kimlik doğrulama sistemlerinde, IdP'lerin gönderdiği e-posta adreslerinin aslında güvenilir olmadığını biliyor muydunuz? Bu makalede, e-posta yerine doğru birleştirme anahtarının nasıl kullanılacağını ve hesap ele geçirme saldırılarını önlemenin yollarını keşfedin.

DEV Community3 dk okuma0 Yorumlar

Tek bir oturum açma (SSO) sistemi, kullanıcıların farklı uygulamalara erişimini basitleştirirken, güvenlik açısından da önemli bir sorumluluk yüklüyor. Ancak bu sistemlerin ardındaki varsayım, kimlik sağlayıcının (IdP) gönderdiği bilgilerin otomatik olarak güvenilir olduğu yönünde. Peki ya IdP'nin gönderdiği veriler manipüle edilebiliyorsa? İsteğimiz dışında gerçekleşen bir hesap ele geçirme saldırısının hikayesi, güvenlik açıklarını anlamamız için önemli dersler sunuyor.

SSO’nun Temel Varsayımı: Güven ve Doğrulama

SSO sistemleri, kullanıcıların farklı platformlara erişimini kolaylaştırmak için tasarlanmış olsa da, temelde bir güven zincirine dayanıyor. Bir kullanıcı IdP üzerinden sisteme giriş yaptığında, IdP’nin gönderdiği doğrulama mesajı, kullanıcının kimliğini kanıtlamak için yeterli kabul ediliyor. Bu sistemin çalışması için IdP’nin güvenilir olması gerekiyor. Ancak, bu güven zincirinin zayıf noktası, IdP’nin gönderdiği verilerin ne kadar güvenilir olduğunun sorgulanmaması.

Yanlış Anahtar: E-posta Adresi Üzerinden Hesap Eşleştirme

Birçok SSO entegrasyonunda, IdP’nin gönderdiği e-posta adresi, kullanıcıyı tanımlamak için anahtar olarak kullanılıyor. Sistem, IdP’den gelen e-posta adresini kullanarak yerel veritabanında eşleşen bir hesap arıyor ve kullanıcıyı otomatik olarak o hesaba yönlendiriyor. Bu yaklaşım basit ve kullanışlı görünse de, ciddi bir güvenlik açığı taşıyor.

IdP’nin gönderdiği e-posta adresi, aslında bir kimlik kanıtı değil. Sadece bir dize (string) olarak iletilen bu bilgi, IdP’nin kontrolündeki bir değer. Çok kiracılı (multi-tenant) bir sistemde, her kiracının kendi IdP’sini yönetmesine izin veriliyor. Bir saldırgan, kendi IdP’sini kurarak, istediği herhangi bir e-posta adresini sistemde kullanabilir. Örneğin, saldırgan ceo@farklikurum.com şeklinde bir e-posta adresi göndererek, sistemdeki gerçek CEO’nun hesabına erişim sağlayabilir. Bu saldırıda ne parola gerekir ne de kimlik avı. Sadece IdP’nin gönderdiği e-posta adresinin doğru şekilde eşleştirilmesi yeterli oluyor.

Doğrulama Yeterli mi? Hayır, Yanlış Anahtarın Sorunu

Bu güvenlik açığını gidermek için ilk akla gelen çözüm, e-posta adresinin doğrulanması olabilir. Sistem, email_verified alanının true olup olmadığını kontrol edebilir veya e-posta alan adının doğruluğunu onaylayabilir. Ancak bu yaklaşım da yetersiz kalıyor. Çünkü saldırgan, kendi IdP’sini kurduğunda, gönderdiği herhangi bir doğrulama alanını da manipüle edebiliyor. Yani, saldırganın kurduğu IdP, email_verified alanını true olarak gönderebilir ve sistem bunu kabul edebilir. Bu durumda, saldırganın gönderdiği herhangi bir doğrulama alanını sistemin kabul etmesi, güvenlik açığını ortadan kaldırmıyor.

Doğru Çözüm: Birleştirme Anahtarını Değiştirmek

Gerçek çözüm, hesap eşleştirmeyi e-posta adresi yerine, IdP’nin gönderdiği (sağlayıcı, alt) çiftine dayandırmak. Burada alt, IdP’nin kullanıcı için ürettiği benzersiz bir tanımlayıcıdır ve sadece o IdP’ye özgüdür. Sistem, kullanıcıyı yerel hesapla eşleştirirken, bu (sağlayıcı, alt) çiftini kullanıyor. Saldırganın kurduğu IdP’nin kendi (sağlayıcı, alt) çifti olabilir, ancak başka bir IdP’nin çiftini taklit edemez. Bu yaklaşım, saldırganın hesap ele geçirme girişimlerini etkisiz hale getiriyor.

E-posta adresi ise, sadece kullanıcıya ait bir ipucu olarak kalıyor. Sistem, e-posta adresini sadece yerel hesapla eşleştirmek için kullanıyor ve bu eşleştirmeyi sadece güvenilir bir IdP’nin doğruladığı durumlarda gerçekleştiriyor. Örneğin, bir kullanıcı, doğrulanmış bir IdP üzerinden giriş yaptığında, sistem e-posta adresini yerel hesapla eşleştiriyor. Ancak, e-posta adresi doğrulanmamışsa veya güvenilir bir IdP’den gelmiyorsa, sistem yeni bir hesap oluşturuyor.

Önemli Dersler ve Gelecek Adımlar

Federasyon tabanlı kimlik doğrulama sistemlerinde, iki temel soruya odaklanmak gerekiyor: "Bu IdP, kullanıcıyı doğru şekilde doğruladı mı?" ve "Bu kullanıcı, benim sistemimde kim?" İlk soru, IdP’nin gönderdiği imza ile yanıtlanırken, ikinci sorunun yanıtı, IdP’nin manipüle edemeyeceği bir anahtara dayandırılmalı. E-posta adresi, kullanıcı dostu ve benzersiz görünse de, küresel olarak geçerli ve taklit edilebilir olması nedeniyle yanlış bir anahtar olarak kabul ediliyor.

Bu güvenlik açığı, sistemin her testten geçtiği ve imzaların doğrulandığı bir durumda ortaya çıktı. Gerçekten de, saldırganın girişimi, sistemin tüm güvenlik kontrollerini bypass ederek hesap ele geçirme saldırısına yol açtı. Bu durum, güvenlik açıklarının sadece kodda değil, aynı zamanda tasarım kararlarında da gizli olabileceğini gösteriyor. Doğru çözüm, IdP’nin gönderdiği verileri sorgulamak değil, doğru birleştirme anahtarını kullanmak.

SSO sistemlerini güvenli bir şekilde uygulamak, IdP’nin gönderdiği verilerin manipüle edilemeyeceği bir anahtara dayandırmakla mümkün. Bu yaklaşım, hesap ele geçirme saldırılarını önlemenin yanı sıra, sistemlerin daha güvenilir ve dayanıklı hale gelmesini sağlıyor.

Yapay zeka özeti

Federasyon tabanlı kimlik doğrulama sistemlerinde hesap ele geçirme saldırılarını önlemek için e-posta yerine doğru anahtarın nasıl kullanılacağını öğrenin. Güvenlik açıklarını ve çözümlerini keşfedin.

Yorumlar

00
YORUM BIRAK
ID #3DZGPT

0 / 1200 KARAKTER

İnsan doğrulaması

6 + 9 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

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