17 Mayıs 2013 Cuma

Ödül Avcılığı Üzerine

Yazımın başında belirtmek isterim ki önce ödül avcılığı (bug bounty) programları hakkında biraz genel bilgi verip biraz da naçizane eleştirilerimi yapacağım ardından kendi bulduğum önemli bir zafiyet ile ilgili bilgi vereceğim. Açık söylemem gerekirse ödül avcılığı programları hakkındaki görüşlerim daha öncesinde de aynıydı. Sadece tekrar gözlemlemiş olduğum için mutluyum.

Ödül Avcılığı Nedir?


Benim "ödül avcılığı" dediğim İngilizcesi "bug bounty" olan kavram; güvenliğe önem veren (verdiğini söyleyen) ve kendi ekipleri dışında başka kişilerin sistemlerinde buldukları zafiyetleri kendilerine bildirmelerini ve hatta kullanıcılar ile sitenin en az zarar görmesini sağlamak için çoğu zaman parayla teşvik edilen bir organizasyondur.

Sistemlerinde tespit edilen açıkları direk olarak bu programa sahip olan firmalara bildirdiğinizde karşılığında para alabildiğiniz gibi bazen tişört veya firmanın bilumum eşantiyon ürünlerinden göndermektedirler. Bazı firmalar para konusunda cimri davranırken bazıları epeyce bonkördür. Bazen aslında çok daha fazla para almanız gereken durumlarda cüzi bir ücretle de teselli edilebilmektesiniz. Bir de arada "broker" dediğimiz firmalar var. O durumda siz açığı direk olarak ilgili firmaya değilde tefeci olan firmaya bildiriyorsunuz. Onlarda size açığı doğruladıklarında sabit olarak belirledikleri ücretten ödeme yapıyor ve durumu onlar ilgili firmalara bildiriyor. Daha az para alıyor olmanıza karşın ilgili firmanın aksine daha garanti ödeme alma şansınız oluyor. Bir nevi bizim çek kırdırma işlemine benziyor diyebiliriz. Ancak onur listelerine kendi adınızı yazdıramayabiliyorsunuz.

Tabi hal böyle olunca siz her türlü ödül avcılığı programını uygulayanların elinde oluyorsunuz. Eğer "biz bundan haberdarız" derlerse yapabileceğiniz pek bir şey yok. Ne kadar önemli bir zafiyet olursa olsun. Siz onların tarafını pek bilmediğiniz için, daha önce bildirilip bildirilmediğini aslında hiç bilmediğiniz için, tamamen güven algısı üzerine kurulmuş bir organizasyon. Zaten şunu da belirtmek isterim ki hangi firma olursa olsun gönderdiğiniz raporları değerlendiren kişiler sizden çok daha üstün kişiler olmayabiliyor. Gördüğüm bir çok durumda zafiyeti anlamadıkları için reddettikleri ancak örneğini (PoC) gördüklerinde para ödemeyi kabul ettiklerini biliyorum. Elbetteki bu organizasyonların eleştirilmesi gereken ve şeffaf olmayan birçok tarafı olduğu yadsınamayacak bir gerçektir.

Blogger'da 2 tane Stored XSS 


Google'ın Blogger servisi üzerinde bulduğum ve tamamen dışarıdan yapılacak saldırıyla tetiklenmesi sağlanan (benim kanaatimce epeyce değeri olan) açıktan bahsedeceğim. Şirketlerin birçoğunun altyapı, güvenlik ve DDoS gibi sorunlar yüzünden Blogger kullandığını düşünürsek epeyce ciddi olduğu anlaşılıyordur. Kaldı ki kendi sitesini açmak isteyen bir çok kullanıcının bir şekilde yolunun ücretsiz bir servis olan Blogger'a düştüğünü düşünürsek ne kadar vahim sonuçlar doğurabileceğini anlamak için Emmett Brown olmak gerekmiyordur herhalde.

Öncelikle zafiyet hakkında basitçe bir bilgi vermek gerekirse; sayfaya/siteye gelen kullanıcının nereden geldiği bilgisini taşıyan HTTP başlığı diyebileceğimiz "Referrer" parametresine yerleştirdiğimiz herhangi bir javascript kodu herhangi bir filtrelemeden geçmeden Blogger'ın istatistik sunan iki sayfasında direk olarak sayfanın koduna dahil edilmekte ve sayfa yüklenirken herhangi bir sınırlamaya takılmadan çalışmaktaydı. XSS açıkları çoğu zaman gerçek gücünü bilmeyen ve yaratıcı düşünemeyen kişiler tarafından küçümsense de diğer kullanıcıları hedef alan en baba (Godfather) açıklardan biridir. OWASP'ın Top 10 sıralamasında hala üçüncü sırada yer alıyor olması önemini hala yitirmediğini göstermektedir. Elbette her zafiyet gibi XSS'in de etkisine göre kendi içinde önem derecesi vardır. Ancak genellikle XSS açıklarını doğru düzgün bilmeden küçümseyen insanların temel bilgisinin ve yaratıcılığının aslında ne kadar geri olduğunu anlamak gerekiyor.

Daha iyi anlaşılması için raporu Google'a gönderirken kullandığım görüntüler üzerinden anlatayım. Ben, artık bir klasik haline gelmiş ('"><img src=x onerror=prompt(1)>) bir şekilde bulmuştum.

Herhangi bir yolla araya girip siteyi gezerken gönderdiğim referrer parametresini değiştiriyorum ve kurban kullanıcının istatistikler sayfasına geldiğinde çalıştırılmasını istediğim kodu koyuyorum. Sonrasında kurban blogunun istatistik bilgilerine baktığında benim yollamış olduğum kod çalışacaktır. İstatistikler ile ilgili hem özet bilgi sunan hem de detaylı bilgi sunan iki sayfa bu zafiyetten etkilenmekteydi. 

Ekran görüntülerinde bazı yerleri "bilerek" gizleme gereği duydum.


Özet istatistik bilgilerinin sunulduğu sayfa


Trafik kaynaklarının daha detaylı gösterildiği bölüm


Peki ben bunu Google'a bildirdiğimde ne oldu?


Öncelikle ben bunu 19 Nisan 2013 tarihinde Google Güvenlik Ekibine e-posta üzerinden bildirdim. Yaşanan bazı sorunlar nedeniyle toplamda üç kez bildirdim. Bir süre sonra cevap döndüler ve açığın kapatılması için ilgili ekibe yollamak üzere dosyaladıklarından, daha fazla bilgiye sahip olduklarında beni de bilgilendireceklerini söylediler. 

Süreç devam ederken günler sonra otomatik olarak hazırlanmış bir e-posta aldım. İçeriğinde, açığın daha önce kendilerine bildirildiği ve bu açıktan haberdar oldukları için herhangi bir ödül vs. kazanamayacağımdan bahsedilmişti. Sorun benim bildirmemden 17 gün sonra kapatılınca (6 Mayıs 2013) ben de tekrar e-posta yollama ve durumu öğrenme gereği hissettim. Çünkü size daha fazla bilgi vereceğiz demelerine rağmen herhangi bir geri dönüş olmamıştı. Tüm bu olanlara cevaben Google Güvenlik Ekibinden bir yetkili gelen hata raporlarını tek tek incelediklerini önce açığı doğruladıklarını ardından onları düzeltilmeleri için sistemlerine girdiklerinden bahsetti. Hatta bu sistemlerine giriş sırasında daha önce bildirilip bildirilmediğini kontrol ettiklerini belirtti(?). 

Nasıl oluyorsa tam üç kez benim bildirdiğim rapor daha önce ellerinde olmasına rağmen fark edilmemiş ve tam 17 gün sonra kapatılmıştı. Kaldı ki bu süre zafiyeti kötü niyetli olarak kullanmanız için oldukça fazla bir süre. Açık kapatıldıktan sonra yaptığım her yazışmada "artık bu olmadı ama artık önümüzdeki açıklara bakacağız" demeleri nedense bana ilginç geldi. Biraz sert bir üslupla cevap yazdığımda, hatta önümüzdeki açıkların zaten bildikleri şeyler olduğundan bahsettiğimde, rekor bir sürede 28 dakikada cevap vermelerine de ayrıca şaşırdım. Çünkü normalde 2-3 güne ancak cevap verebiliyorlar. Hal böyle olunca da Google sayfasında yer alan, ne ödül alan bildirileri yapanların olduğu ne de ödül alamamış ama önemli bir tespitte bulunmuş kişilerin olduğu onur listelerinde olamadım. Üzgünüm. Zaten bundan sonra da ödül avcılığı işleriyle pek de uğraşmak istemiyorum. 



4 yorum :

ege kaya dedi ki...

tebrikler ismin hall of famede geçiyor sanırım

Gökmen GÜREŞÇİ dedi ki...

Teşekkür ederim. Evet geçiyor ancak bu zafiyet yüzünden değildi.

Hüseyin Küçük dedi ki...

Tebrik ederim Gökmen.

Sedat dedi ki...

Gökmen Bey tebrik ederim ayrıac ben de aynı konudan yakınan biriyim. İngilizcemin çok iyi olmaması ve teknik bilgiler içerdiği için doğru bir şekilde derdimi anlatamadığım için yandex ödül programına alınmadım. Bildirdikten 10 gün sonra daha detaylı bilgi isteyerek senaryo kurmamı istediler . Tekrar saatlerce uğraşarak yolladım ve sonuç sıfır. Ayrıca deneme yaptığım mail adresleri de kapatıldı :) Sanırım tamamen internete veda ettim artık..
Hayırlı Günler