OIDC'de MFA Atlatma: Tek URL Parametresi İkinci Faktörü Es Geçiyordu
OIDC girişinde MFA'yı devre dışı bırakan URL tabanlı bir güvenlik açığı ve token uç noktasında iddia (claim) tabanlı düzeltme.
Bir ekip, OIDC tabanlı giriş akışında çok faktörlü kimlik doğrulamayı (MFA) devreye aldıktan sonra, kendi ön-yayın denetiminde ciddi bir tasarım hatası buldu: kullanıcı şifresini girip kimlik doğrulama çerezini aldıktan sonra, MFA ekranına gitmek yerine doğrudan /connect/authorize adresine yönlendirilirse token yine de veriliyordu. Sorun, bu uç noktanın yalnızca 'oturum kimlik doğrulanmış mı' sorusunu sorması, 'ikinci faktör tamamlanmış mı' sorusunu hiç sormamasıydı. Şifre girişiyle oluşan çerez ile MFA tamamlanmış çerez aynı kabul ediliyordu.
Çözüm, MFA'yı bir arayüz adımı olarak değil, oturumun taşıdığı bir iddia (claim) olarak modellemekti. İkinci faktör tamamlandığında çerezin içine mfa_authenticated işareti yazılıyor; token veren uç nokta artık yalnızca kimlik doğrulamayı değil, bu işareti de zorunlu tutuyor. Federasyon/SSO senaryolarında, ikinci faktörü zaten uygulayan dış kimlik sağlayıcısı aynı işareti setleyerek kullanıcının tekrar sorgulanmasını önlüyor.
Genel ilke, mühendisler için doğrudan uygulanabilir: bir kontrolü, korumak istediğiniz kaynağı fiilen veren sınırda uygulayın, oraya götüren arayüz adımında değil. Aksi halde saldırgan, o adımı hiç ziyaret etmeden doğrudan uç noktaya gidebilir ve kontrol yalnızca bir öneriye dönüşür.