Güvenilir Olarak CAPTCHA Yapılandırılması

Yayınlayan
Adem Kanat
Yayınlanma tarihi
26/2/2022
Okuma süresi
10
Dakika
go back icon
Geri Dön

Güvenilir Olarak CAPTCHA Yapılandırılması

Form gönderme işlemlerinde otomatize araç kullanımlarının ve kaba kuvvet saldırılarının önüne geçilmesi adına CAPTCHA kullanımı genel bir güvenlik önlemi olarak kullanılmaktadır. CAPTCHA’ların yanlış yapılandırılması nedeniyle siteler form alanlarında kaba kuvvet saldırıları, SMS ve mail flood saldırıları gibi hizmet kaynaklarının gereksiz kullanılmasına ve bütünlüğün bozulmasına neden olmaktadır.

Doğru Bir CAPTCHA Nasıl Yapılandırılır?

Örnek bir giriş formunu ele alırsak işleyiş kabaca şöyledir;

  • Kullanıcı giriş bilgilerini doldurur, CAPTCHA’yı doldurur ve formu gönderir. Arka planda eğer CAPTCHA doğru çözülmüş ise sonraki kontrol adımına (kullanıcı adı ve parola kontrolü gibi) geçer ve süreç ilerler.
  • Eğer CAPTCHA bilgisi yanlış ise tekrar bir CAPTCHA oluşturulup süreç başa döner.
Güvenilir Olarak Yapılandırılmayan CAPTCHA

CAPTCHA kullanımı otomatize işlemlerin yapılmasının engellenmesi, kötü niyetli kişilerin otomatize araç kullanmasını zorlaştırmak amacıyla kullanılmaktadır. Güvenilir olarak yapılandırılmayan CAPTCHA kullanımları alınan güvenliği geçersiz kılmaktadır.

CAPTCHA Değerinin Metinsel İfadeye Çevrilebilmesi

Bir form alanı geldiği zaman gelen CAPTCHA değeri metinsel ifadeye çevrilip sanki CAPTCHA yokmuş gibi otomatize bir şekilde işlem yapılabilmektedir.

Örnek olarak karşımıza gelen bu CAPTCHA değerinin metinsel karşılığını tesseract aracıyla çevirebiliriz.

Matematiksel işlemler ile elen CAPTCHA değerlerinde ise aynı şekilde sayıları ve işlem değerini alıp işlem yapılır.

CAPTCHA Değerinin Ön Tarafta Kontrol Edilmesi

Forma alanı doldurulurken CAPTCHA değerinin boş bırakıldığı zaman “CAPTCHA değerinin girilmesi gerekmektedir.” tarzında bir hata ile CAPTCHA değerinin boş bırakılması engellenmiştir.

Genelde kontrollerin ön yüz tarafında yanlış yapılandırılma sonucu CAPTCHA kontrolü olmaksızın işlem yapılabilir. En sık karşılaşılan yapılandırma hatası

HTML kodlarındaki tarafındaki required parametresidir.

(Required = Form elemanının gönderimini zorunlu tutmak için eklenir. İlk olarak kullanıcı tarafında kontrol edilir. Eğer server tarafında kontrol edilmezse işe yaramaz.)
Bundan dolayı form gönderme işlemi yapılırken doldurulması gerekmektedir. Fakat sunucu tarafında gelen CATPCHA değeri doğru kontrol edilmediğinden Proxy ile araya girip CAPTCHA değerini sunucuya göndermediğimiz zaman bir hata ile karşılaşılmamaktadır. CAPTCHA değeri kontrol edilmeden işlem gerçekleştirilebilmektedir.

Bir diğer yöntem olarak Geliştirici seçeneklerini kullanarak form elamanını Disable edilip kontrolden kaçılır.

CAPTCHA Değerinin Decode Edilmesi

En çok karşılaşılan diğer yapılandırma hatası basit algoritmalarla CAPTCHA oluşturulmaya çalışılmasıdır. CAPTCHA değeri client tarafında (Javascript vb. dilleri kullanarak) oluşturulduğu zaman kötü niyetli kişiler ilgili algoritmayı kullanarak kendileri otomatize araçlara ek olarak decoder vb. şeklinde araçlar yazarak CAPTCHA korumasını bypass edebilir.

Bu durumda CATPCHA değerinin karışık ve güçlü algoritmalar kullanılarak hazırlanması ve bu işlemin server (back-end) tarafında yapılması gerekmektedir. Ek olarak CAPTCHA gösterimi sırasında çeşitli yöntemlerle gösterimi zorlaştırarak görüntü işleme vb. araçların kullanılmasını zor, hatta imkânsız hale getirmek gerekmektedir.

Aynı CAPTCHA Değerinin Sorulması

Kısıtlı bir kümeden gelen sorular ya da belli bir cevabı olan sorunun CAPTCHA olarak gelmesi de kaba kuvvet saldırılarını engelleyememektedir.

Belirlenen birkaç farklı soru ve birkaç cevap bulunduğundan dolayı dar bir küme içerisinde kontroller sağlanmaktadır.

CAPTCHA Değerinin Bir Kez Çözülmesi

CAPTCHA değerinin bir kez girildikten sonra diğer isteklerde CAPTCHA değerinin yenilenmemesinden dolayı bir kere CAPTCHA değerinin doğru girilmesinin ardından kaba kuvvet saldırısı yapılabilmektedir. Buradaki temel sorun oturum anahtarımıza bağlı olarak aynı CAPTCHA değerinin kontrol edilmemesinden kaynaklıdır. Her istek sonrası yeni bir CAPTCHA oluşturulmalıdır.

Önlemler
  • Gelen CAPTCHA değerleri “Hidden input” girdi noktalarında bulunmamalıdır.
  • CAPTCHA doğrulama işlemleri backend tarafta gerçekleştirilmelidir.
  • CAPTCHA değerinin metin haline çevrilebilecek kadar basit olmamalıdır.
  • Gelen CAPTCHA değerleri tekrar kullanılmamalıdır.
Adem Kanat
Adem Kanat

Detaylı Bilgi İçin

info@gaissecurity.com