Authentication Bypass, bir uygulamanın giriş veya kimlik doğrulama mekanizmasının çeşitli mantık hataları nedeniyle atlatılabilmesi durumudur.
Normalde kullanıcı adı, şifre veya başka bir doğrulama adımı geçilmeden korumalı alana erişilememesi gerekir. Ancak kontrol yanlış yazılmışsa saldırgan doğrulama sürecini devre dışı bırakabilir.
Örneğin uygulama yetkiyi kullanıcıdan gelen bir parametreye göre belirliyorsa;
if ($_GET['admin'] == 1) {
$_SESSION['is_admin'] = true;
}bu yapı ciddi bir güvenlik problemidir. Çünkü kullanıcı;
?admin=1
gibi bir değer göndererek kendi yetkisini değiştirebilir.
Authentication Bypass sadece böyle basit hatalardan oluşmaz. Zayıf session kontrolleri, hatalı şifre sıfırlama sistemi, yanlış token doğrulaması veya PHP'deki gevşek karşılaştırmalar da benzer sonuçlara yol açabilir.
Örneğin güvenlik açısından kritik değerlerde;
if ($token == $userToken)
yerine tür kontrolü de yapan;
if ($token === $userToken)
kullanılması bazı beklenmeyen karşılaştırma problemlerinin önüne geçebilir.
Buradaki temel problem,
uygulamanın kullanıcının gerçekten kim olduğunu güvenilir şekilde doğrulamadan yetki vermesidir. Giriş ekranının bulunması tek başına güvenli bir authentication sistemi olduğu anlamına gelmez.
Authentication Bypass açıklarını önlemek için kimlik doğrulama ve yetkilendirme kontrolleri tamamen
sunucu tarafında yapılmalı, session ve token değerleri güvenli şekilde doğrulanmalı ve kullanıcı tarafından değiştirilebilen hiçbir veri doğrudan yetki belirlemek için kullanılmamalıdır.