İnternet üzerindeki hemen her protokol ve bileşen gibi, OAuth protokolü de saldırganların hedefinde olmuş ve kötüye kullanımı amaçlanmıştır. Örnek senaryolara yer vermeden önce, OAuth protokolünü tanıyalım.

OAuth protokolü, birden fazla servis veya sunucu arasında kimlik doğrulama veya yetkilendirme amacıyla kullanılır. Kullanıcıya herhangi bir parola ve hassas bilgi sormadığından ötürü daha güvenli olduğu düşünülmektedir ve sıkça kullanılmaktadır. Karşımıza genelde “Facebook ile Giriş Yap”, “Uygulamanın Aşağıdaki Bilgilerinize Erişmesine İzin Verin” gibi örneklerle çıkmaktadır.

OAuth’un basitçe işleyişine değinmek gerekirse, iki internet adresi olduğunu düşünelim, birisi Facebook, diğeri ise OAuth bağlantısı kurulacak site (kayitolunacaksite.com) olsun. Basit bir senaryoyla, kullanıcı kayitolunacaksite.com adresine üyelik kaydı yaptırmak istemektedir, fakat sayfada çok fazla form verisi olduğu için üyelik kaydını Facebook aracılığıyla yapmaya karar vermiştir. Bu durumda üyeliğin tamamlanabilmesi için aşağıdaki eylemler gerçekleşecek:

1- Kullanıcı, “Facebook ile Kaydol” butonuna bastığı an kayitolunacaksite.com arkaplanda Facebook’un OAuth API’ıyla iletişime geçecektir.
2- Facebook, bir açılan pencerede kullanıcıya “Bu uygulama şu bilgilere erişebilecek:” diyip işlemlere devam edip etmek istemediğini sorarak kullanıcının onayını alacaktır.
3- Kullanıcının “Tamam”, “İzin Ver” gibi uygulamaya güvendiğini belirtecek şekilde aksiyon alması halinde Facebook bir token kodu üretecektir ve bu kod sayesinde uygulama ilgili kullanıcının adı, e-posta adresi, doğum tarihi gibi bilgilere erişebilecek, bu bilgileri veritabanına kaydedecektir.

Özetle, kullanıcı üyelik formunu doldurmadı ama daha önceden bu bilgilerin aynılarını Facebook hesabına girmişti ve Facebook aracılığıyla bu bilgileri kayitolunacaksite.com adresine kopyalamış oldu. Yani formu kullanıcının yerine Facebook doldurdu desek yanlış olmaz.

Kayıt işlemini Facebook aracılığıyla gerçekleştiren kullanıcı, ilerleyen zamanlarda hesabına tekrar girmek isteyecektir ve bu sefer “Facebook ile Giriş Yap” seçeneğini kullanacaktır. Bu durumda yine Facebook, kayitolunacaksite.com adresine giriş için eşsiz bir token kodu üretecek ve arkaplanda gereken doğrulamalar yapıldıktan sonra kullanıcı hesabına erişebilecektir. Burada önemli olan konu, üretilen token kodlarında parola gibi hassas bilgiler barındırılmamasıdır. Facebook’un giriş işlemi için ürettiği örnek bir token kodu:

OAuth Protokolü Nedir, Nasıl İstismar Edilebilir?

Resimde de görüldüğü üzere, Facebook “EAAE…” ile başlayan bir token kodu üretiyor. Bu token kodu içinde id ve name bilgilerini barındırıyor. Yani, kayitolunacaksite.com bu token kodu aracılığıyla bir OAuth bağlantısı gerçekleştirdiğinde aşağıdaki bilgilere ulaşabiliyor:

Copy to Clipboard

Burada id ve name değerlerini çekmek istediğimizi söyledik, eğer bir virgül daha atıp email yazsaydık ekrana e-mail’i de yazdıracaktı. Bağlantı kurulduktan sonra sistem veritabanında kayıtlı olan e-mail ile Facebook’dan dönen e-mail’i karşılaştırıyor ve eğer birbirinin aynısıysa tarayıcınıza cookie tanımlayıp kayitolunacaksite.com adresine login olmanızı sağlıyor.

Böylelikle bir OAuth bağlantısı gerçekleştirdik ve kayitolunacaksite.com’a Facebook aracılığıyla hem kayıt olmuş olduk, hem de oturum açmış olduk. Peki gelelim asıl konuya, OAuth protokolü siber suçlular tarafından nasıl istismar edilebilir?

Aslında bunun için çeşitli yollar mevcut. Örneğin, OAuth sağlayıcısında (Facebook) bulunan bir güvenlik açığıyla token kodları ele geçirilebilir, sahte token kodları üretilebilir. Daha da kolay bir yönteme değinecek olursak, sosyal mühendislikle kullanıcılar oltaya düşürülebilir. İkisine de bir örnek verelim.

İlk örnekteki gibi yazılım tarafındaki bir güvenlik açığını kullanarak OAuth sahteciliğini izleyelim:

Geçtiğimiz aylarda InfinitumIT ekiplerince, popüler sunucu kontrol paneli Plesk’de keşfedilen bu güvenlik açığı, kurbanların sunucularındaki kök kullanıcı (root user) bilgilerinin ele geçirilmesini ve haliyle sunucunun tamamen ele geçirilmesini mümkün kılıyordu. Senaryoda kısaca araştırmacımız, Plesk’in OAuth servisinde bir güvenlik açığı keşfediyor ve kurbana yollayarak sunucusuna giriş yapmasını istiyor. Kurban, gelen link’in Plesk’in resmi OAuth servisi olduğunu görüyor ve buna güvenerek sunucu bilgilerini giriyor, girdiği anda da root kullanıcının parolası saldırganın eline geçiyor.

Bir diğer yöntem phishing saldırısına değinelim, burada da yine Facebook örneğini kullanacağım. Saldırgan rolünde neler yapabileceğimizi düşünürsek, aklımıza öncelikle phishing için bir internet sitesi açmak gelir. Bundan yola çıkarak, saldırgan da twitterbedavamavitik.com adında bir alan adı alır ve internet sitesini kurar. İnternet sitesinin tasarımını Twitter’ın tasarımıyla birebir aynı yapan kullanıcı, tepki çekmemek için haliyle sıradan phishing formlarının aksine kullanıcılara parola de sormayacaktır. Bunun yerine bütün işlemleri OAuth protokülü aracılığıyla halletmek isteyen saldırgan, hemen Facebook Geliştirici Araçları adresine girer ve “Twitter” adında, Twitter logolu sahte bir uygulama oluşturur.

OAuth Protokolü Nedir, Nasıl İstismar Edilebilir?

Twitter adında bir uygulama oluşturan saldırgan, uygulamayı kullanıcının bütün bilgilerine erişebilecek şekilde konfigüre eder. Daha sonra twitterbedavamavitik.com adresi üzerinden “Facebook ile Bağlan” seçeneğini kullanan kullanıcı aşağıdaki gibi bir görselle karşılaşır.

OAuth Protokolü Nedir, Nasıl İstismar Edilebilir?

Eğer ki kullanıcı, az önce saldırgan tarafından oluşturulan bu sahte uygulamanın Twitter’ın resmi uygulaması olduğu yanlışına kapılır ve uygulamaya izin verirse, saldırgan hedef kullanıcının hesabı üzerinde birçok hassas bilgiye ve izine ulaşmış olur. Netice itibariyle her neresi olursa olsun, uygulamalara izin vermeden önce bizden talep ettiklerini incelemeli ve hiçbir uygulamaya geniş yetkiler vermemeliyiz.

Örnekler elbette sadece bunlarla sınırlı değil, farklı senaryolar yazılabilir, bu yazımızda en çok kullanılan ve en tehlikeli iki yöntemden bahsettik.

InfinitumIT
// Güvenli günler için…
infinitumit.com.tr