Buradasın
ChatGPT ile Güvenlik Zaafiyetleri Analizi ve Çözüm Yarışması
youtube.com/watch?v=Qp8sRedhE-4Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir güvenlik uzmanı ve diğer katılımcıların (Sleeping, Neo, SSG, Python Tolga) ChatGPT yapay zeka aracı kullanarak güvenlik zaafiyetleri çözüm yarışmasını eleştirel bir şekilde değerlendirdikleri bir teknik tartışmayı içermektedir.
- Videoda, Sonar Source firması tarafından her yıl yayınlanan güvenlik zaafiyetleri challengelarının çözüm süreci gösterilmektedir. Katılımcılar, farklı programlama dillerinde (PHP, Java, JavaScript, Python) bulunan güvenlik zafiyetlerini önce kendi başlarına çözmeye çalışıp, ardından ChatGPT ile karşılaştırmalı bir değerlendirme yapmaktadır. Videoda XSS, veritabanı enjeksiyonu, open redirect gibi güvenlik zafiyetleri ve şifreleme modları (ECB, CBC) detaylı olarak incelenmektedir.
- Videoda ayrıca parola sıfırlama token üretimi, API kontrol kodlarında zafiyet tespiti, case sensitivity gibi konular ele alınmakta ve ChatGPT'in bu tür analizlerde nasıl kullanılabileceği tartışılmaktadır. Katılımcılar, yapay zekanın mesleğin geleceğine etkisi hakkında da görüşlerini paylaşmaktadır.
- 00:06Sonar Source Güvenlik Zafiyetleri ve Challenge'lar
- Her yılın Aralık ayında Sonar Source isimli firmanın yayınladığı güvenlik araştırmacılarının karşılaştığı güvenlik zaafiyetlerinden Koç Challenge'lar hazırlanıyor.
- Bu challengelar Aralik ayı boyunca yayınlanıyor ve konuşmacı bu challengelere giriyor.
- Konuşmacı bu challengeları öncesinde hiç bakmadığını, çünkü daha zor ve kanlı geçmesini istediğini belirtiyor.
- 01:03Chat GPT ile Yarışma
- Bu sene değişik bir şey yapacaklar ve Chat GPT ile bir yarışa girecekler, yapay zeka mesleğimizi elimizden alacak mı sorusuna cevap vermeyi planlıyorlar.
- Chat GPT ilk ortaya çıktığında çok şaşırtıcı ve işe yarayan örnekler göstermiş, assembly kodunu çözebiliyor ve kod generate edebiliyor.
- Konuşmacı "aç mı kalacağız, mesleğimiz elimizden mi alınacak?" başlığını clickbait olarak nitelendiriyor.
- 02:00Challenge'ların Değerlendirilmesi
- Konuşmacı her challenge'ı kendisi değerlendirmeye çalışacak ve zaman tutmayı düşündüğü için bir time bazlı senaryo olup olmadığını sorguluyor.
- Challenge'ı çözdükten sonra kodu Chat GPT'e verecek ve yapay zeka güvenlik zafiyetini bulup bulamayacağını test edecek.
- Sorunu sormak istediği zafiyet ile konuşmacının gördüğü zafiyet arasında farklılık olabileceğini belirtiyor.
- 02:53Webtekno ve Chat GPT Tepkileri
- Webtekno gibi platformların Chat GPT'e ilk tepkilerini paylaşmaları ve bunun üzerine yazılar yazmaları anlatılıyor.
- Konuşmacı, Chat GPT'in bugün daha fazla şaşırtmaya devam edip etmeyeceği konusunda merak duyuyor.
- Hazır olduğundan bahsediyor ve yayını başlatmaya hazırlanıyor.
- 05:14Challenge'ların Başlangıcı
- Sonar Source'un yayınladığı challenge'lar farklı programlama dillerinde (PHP, Java, JavaScript, Python) güvenlik açıklıklarından örnek sınıf kodlar içeriyor.
- Her gün bir challenge salınıyor ve konuşmacı ilk on challenge'e gireceğini belirtiyor.
- Kodları daha rahat okuyabilmek için editör açıp kodları oraya almayı planlıyor ve Chat GPT ile yarışmaya başlamak için hazırlanıyor.
- 06:56Code Review ve Güvenlik Yaklaşımı
- Konuşmacı, bazı durumlarda adım adım çalıştırma (run) gerektirdiğini belirtiyor.
- Kendisini eski bir hacker ve günümüzde güvenlik araştırmacısı olarak tanımlıyor.
- Klasik code review standartları ile kendi yaklaşımının çok farklı olduğunu vurguluyor.
- 07:25Konuşmacının Deneyimi
- 2004-2005 yıllarından beri researcher ve exploit developer olarak çalıştığını belirtiyor.
- Güvenlik alanında 300'den fazla zero day yayınladığını söylüyor.
- Özellikle yazılım geliştiricilerinin ilgisini çekecek bir hikaye paylaşacağını belirtiyor.
- 07:55Kod İncelemesi Başlangıcı
- "Can you spot the wonderblety chat" sorusunu GPT'ye sormayı planladığını belirtiyor.
- Kodda random session id time ürettiği token değerini tahmin edebileceğiniz bir zafiyet olduğunu söylüyor.
- Change password ve generate password reset token fonksiyonlarının var olduğunu belirtiyor.
- 09:01Güvenli Rastgele Değer Üretimi
- Token üretimi için kriptografik secure pseudo number generator'ların kullanılması gerektiğini vurguluyor.
- Sunucu tarafında token üretmek için CPU sıcaklığı, proses sayısı gibi farklı kaynaklardan rastgele değer okumak gerektiğini belirtiyor.
- Kullanılan kütüphanelerin kriptografik secure pseudo number generator olduğundan emin olunması gerektiğini söylüyor.
- 09:55Koddaki Zafiyet
- Satır 27'deki kodda bir zafiyet olduğunu belirtiyor.
- Bu kod kullanıldığında, sunucunun üzerinden token değeri öğrenme imkanı olduğunu açıklıyor.
- Sunucunun execution time'ı response header'ından date alarak öğrenilebileceğini söylüyor.
- 10:52Zafiyetin Detayları
- Kodda 1 ile 100 aralığında bir değer üretiliyor ve bu değer user ve sunucunun zamanı ile ilişkilendiriliyor.
- Aynı saniye içerisindeki request-response arasındaki değerler aynı çıktıyı vereceğini açıklıyor.
- Hedeflenen kişinin tokenını bulmak için sisteme token generate ettirip, e-posta, SMS veya WhatsApp üzerinden gönderilen tokenı tahmin edilebileceğini belirtiyor.
- 11:57GPT ile Karşılaştırma
- Zafiyeti GPT'ye sormayı deniyor ancak GPT'in MD5 kullanımını eleştirmesine rağmen zafiyeti anlamadığını fark ediyor.
- GPT'in MD5 kullanımını eleştirmesine rağmen, bu kodda MD5 kullanımının değil, token üretimi yöntemindeki zafiyeti sorması gerektiğini belirtiyor.
- GPT'in function'ın ne iş yaptığını ve token değerinin nasıl üretildiğini anlayabildiğini fark ediyor.
- 17:39Storytix Uygulamasındaki XSS Zafiyeti
- Storytix uygulamasında XSS (Cross-Site Scripting) zafiyeti bulunmaktadır.
- Uygulama monolitik yapıda olup serverside rendering yapmaktadır ve backend'ten database'den gelen yorumları alıp sırayla dönmektedir.
- Comment içerisinde küçüktür ve büyüktür işaretleri varsa, back and'de bir encoding yapmakta ve bu veriyi HTML kontekste normal olarak dönmektedir.
- 18:50XSS Zafiyetinin Detayları
- Kullanıcıdan gelen request, body, impulse, stream, reason alınıp pars edilerek JSON objesinden comment alınmaktadır.
- Veri hiçbir şekilde validasyon olmadan kullanılmaktadır.
- XSS zafiyeti, verinin kullanılma anında oluşmaktadır.
- 20:02Zafiyeti Tespit Etme Yöntemi
- Challenge içerisinde toplam otuzbeş tane kod bulunmaktadır.
- Kodda replace ve normalize fonksiyonları bulunmaktadır.
- Encode edilen veriyi yanlışlıkla decode edip kullanmaya giden bir hikaye vardır.
- 20:34Normalization ve Unicode XSS
- Normalization sınıfının hangi karakterleri normalize ettiğini anlamak için kodu incelemek gerekir.
- Büyük ihtimalle Unicode XSS payload kullanılacaktır.
- Normalizer Unicode karakterlerini de normalize edebileceği için saldırı kodunun Unicode karakterlerle gelmesi beklenir.
- 22:40ChatGPT ile Zafiyet Tespiti
- ChatGPT'ye kodda hangi zafiyetler olduğunu sormak için farklı sorular sorulmaktadır.
- ChatGPT, kodda SQL enjeksiyon zafiyeti olduğunu ve user input'larının sentize edilmemesini bir zaaf olarak görüyor.
- ChatGPT'ye sorgulama yaparken doğru yönlendirme yapmak zorunludur.
- 29:06Open Redirect Zafiyeti
- Bir sonraki kodda open redirect zafiyeti bulunmaktadır.
- Regex validation yapılmadığı için path parametresinde com'dan sonra sub domain eklenebilir.
- Regex'in anlamlarını anlamak için ChatGPT yardımı alınabilir.
- 32:23Bir Güvenlik Zafiyeti İncelemesi
- Konuşmacı, bir sistemdeki güvenlik zafiyetini incelemekte ve authorization header'daki token'ın client'a request olarak eklenip bir URL'e gönderilmesini açıklamaktadır.
- Zafiyetin temelinde, kullanıcı tarafından sağlanan path ile oynanarak vatandaşın authentication token'ının alınaması bulunmaktadır.
- Sistem, HTTP requestini server'a göndererek çalışmakta ve bu durumda bir DoS (Denial of Service) saldırısı riski taşıyabilmektedir.
- 33:41Regex İncelemesi
- Konuşmacı, regex ifadesini inceleyerek hangi karakterlerin kabul edilebileceğini anlamaya çalışmaktadır.
- Regex ifadesinde alt çizgi ve slash karakterlerinin tekrar edilebileceği belirtilmektedir.
- Konuşmacı, nokta karakterinin regex'te kabul edilip edilmediğini sorgulamaktadır.
- 35:05Çözüm Denemeleri
- Konuşmacı, domain adı olarak "mehmet.com" gibi bir URL'yi kullanmayı denemekte fakat regex'in bu formatta kabul etmediğini fark etmektedir.
- GitHub domain'lerini inceleyerek "github.com" ile başlayan ancak farklı bir uzantıya sahip domain'leri araştırmaktadır.
- "github.computer" gibi bir domain satın alarak sorunu çözmeyi denemektedir.
- 47:40Regex Anlaması
- Konuşmacı, regex ifadesindeki yıldız (*) karakterinin, bir ifadenin birden fazla tekrar edebilmesine izin verdiği konusunda tartışmaktadır.
- Regex'in sadece bir kez match etmesine rağmen yıldız karakteri sayesinde true kabul edildiği belirtilmektedir.
- Konuşmacı, "github.computer" domain'ini satın almanın daha güzel bir çözüm olduğunu düşünmektedir.
- 49:04Soru Çözümü ve ChatGPT ile İletişim
- Konuşmacılar Sonar Research'in sorusunu aramakta ve GitHub'daki bir computer konusunu tartışmakta.
- Bir kod parçasında, altıncı satırda request API ile başlarsa authentication kontrolü yapılıyor, başlamazsa kontrol yapılmıyor ve next'e geçiliyor.
- Birinci çözüm olarak target nokta com'a gelip API vermek, böylece request URL'den geçer ve self loop oluşmaz.
- 52:06ChatGPT ile Soru Çözümü
- Konuşmacılar ChatGPT'ye "can you spot the one bluty" sorusunu soruyorlar ancak ChatGPT doğru cevap veremiyor.
- ChatGPT'ye kod ve input verildiğinde, ChatGPT soruyu doğru şekilde cevaplayamıyor.
- Konuşmacılar ChatGPT'yi "sınıfta kaldı" diyerek eleştiriyor ve sorunun çözümünü kendileri açıklıyor.
- 56:30Kod Analizi ve Soru Çözümü
- Sorunun çözümünün "case sensitivity" (durum duyarlılığı) olduğunu belirtiyorlar.
- Python sorusu geldiğinde konuşmacılar heyecanlanıyor ve önceki soruların güzel olduğunu düşünüyorlar.
- Konuşmacılar ChatGPT'yi zorlamadığı için memnun kalıyorlar.
- 58:45Web Güvenliği ve Şifreleme Zafiyetleri
- Konuşmacı, 2015 yılında Mesut Timur tarafından yazılan "Web Güvenliği" adlı bir makaleyi hatırlıyor ve bu makalenin kendisine çok yardımcı olduğunu belirtiyor.
- Simetrik şifreleme tekniklerindeki zafiyetlerden biri olan ECB (Elektronik Codebook) modunun açıklanması gerekiyor.
- Konuşmacı, 9 sene önce okuduğu makalenin hala aklında tutmasının verdiği mutluluğu ifade ediyor.
- 1:03:19ECB ve CBC Modları Arasındaki Farklar
- ECB modunda veri bloklara bölünür ve her blok ayrı ayrı şifrelenir, bu da her bloğun değişmesi sadece o bloğun etkilenmesine neden olur.
- CBC (Cipher Block Chaining) modunda ise, her blok önceki bloğun şifreli çıktısı ile birleştirilerek şifrelenir, bu da bir bloğun değişmesinin tüm sonraki blokları etkilemesine neden olur.
- ECB'nin avantajı paralel hesaplama imkanı tanımak olsa da, güvenlik açısından CBC modu daha güvenlidir çünkü her blok birbirine bağlıdır.
- 1:09:35Pratik Örnekler ve Kullanım Alanları
- Konuşmacı, veriyi üç bloğa böldüğünde her bloğun sırasını değiştirerek deşifre edildiğinde verinin anlamı değiştiği bir örneği gösteriyor.
- Bu tür şifreleme bilgilerinin uygulama güvenlik dünyasında neden önemli olduğunu vurguluyor.
- Eski öğrendiği bilgileri pratik örneklere dönüştürerek anlatmaya çalıştığını belirtiyor.