Merhabalar! Ben ScooteR, Lojistik & Green Team grup adına paylaşılan “Mobil Uygulamalarda Ortaya Sıkça Çıkan Güvenlik Zafiyetleri”, makalesinde sizi görmekten mutluyum.
Haydi Başlayalım !
Mobil uygulamalarda sıkça karşılaşılan güvenlik zafiyetleri, uygulamanın tasarımı, kodlaması, veri yönetimi veya platformun sunduğu güvenlik önlemlerinin ihmal edilmesinden kaynaklanabilir. İşte en yaygın mobil uygulama güvenlik zafiyetleri:
1. Zayıf Şifreleme veya Şifreleme Eksikliği
2. Güvensiz Veri Depolama
3. Kimlik Doğrulama ve Yetkilendirme Eksiklikleri
4. İletişim Güvenliğinin Eksikliği
5. Kodda Hassas Bilgilerin Bulunması
6. Güvenli Olmayan Üçüncü Taraf Kütüphaneler
7. Tersine Mühendisliğe Karşı Savunmasızlık
8. Kullanıcı Verilerinin Gereksiz İzinlerle Toplanması
9. Güvenli Olmayan Webview Kullanımı
10. DDoS ve Brute Force Saldırılarına Karşı Korumasızlık
Bu tür güvenlik açıklarının önüne geçmek için güvenli kodlama standartlarını takip etmek, uygulamayı düzenli olarak güvenlik testlerine tabi tutmak (örn. pen testing) ve güvenlik açıklarını hızlı bir şekilde düzeltmek önemlidir.
----------------------------------------------------------------
GELELİM ÇÖZÜM BİLGİLERİMİZE;
Mobil uygulamalarda güvenlik zafiyetlerini detaylandırarak her bir zafiyetin oluşma nedenlerini, örnek senaryolarını ve çözüm önerilerini daha kapsamlı açıklayalım:
Haydi Başlayalım !
Mobil uygulamalarda sıkça karşılaşılan güvenlik zafiyetleri, uygulamanın tasarımı, kodlaması, veri yönetimi veya platformun sunduğu güvenlik önlemlerinin ihmal edilmesinden kaynaklanabilir. İşte en yaygın mobil uygulama güvenlik zafiyetleri:
1. Zayıf Şifreleme veya Şifreleme Eksikliği
- Kullanıcı verileri veya hassas bilgilerin şifrelenmeden saklanması veya iletilmesi.
- Güvenli olmayan veya zayıf şifreleme algoritmalarının kullanılması (örn. MD5, SHA-1).
- Uygulama kodunda statik anahtarların bulunması.
2. Güvensiz Veri Depolama
- Hassas verilerin (örneğin, kullanıcı şifreleri, oturum belirteçleri) cihazda güvenli olmayan bir şekilde saklanması.
- Verilerin şifrelenmeden cihazın Shared Preferences, SQLite gibi alanlarında tutulması.
3. Kimlik Doğrulama ve Yetkilendirme Eksiklikleri
- Zayıf oturum yönetimi (örn. oturum zaman aşımının olmaması).
- Güvenli olmayan kimlik doğrulama mekanizmaları.
- Çok faktörlü kimlik doğrulamanın eksikliği.
4. İletişim Güvenliğinin Eksikliği
- SSL/TLS kullanmadan hassas bilgilerin iletilmesi.
- Hatalı sertifika doğrulama (örn. sertifika pinning yapılmaması).
- "Man-in-the-Middle" (MITM) saldırılarına açık uygulama trafiği.
5. Kodda Hassas Bilgilerin Bulunması
- API anahtarlarının, gizli anahtarların ve parolaların kaynak kod içinde açık bir şekilde saklanması.
- Tersine mühendislik yoluyla bu bilgilere erişimin mümkün olması.
6. Güvenli Olmayan Üçüncü Taraf Kütüphaneler
- Güncellenmeyen veya güvenlik açıkları içeren üçüncü taraf SDK'ların kullanılması.
- Açık kaynaklı kütüphanelerin güvenilirlik testlerinin yapılmaması.
7. Tersine Mühendisliğe Karşı Savunmasızlık
- Uygulama kodunun kolayca dekompile edilebilmesi.
- Kaynak kodda iş mantığının açık bir şekilde yer alması.
8. Kullanıcı Verilerinin Gereksiz İzinlerle Toplanması
- Uygulamanın gereksiz erişim izinleri istemesi (örn. mikrofon, kamera, konum).
- Kullanıcı verilerinin izinsiz paylaşılması.
9. Güvenli Olmayan Webview Kullanımı
- WebView ile açılan web sayfalarının kötü niyetli saldırılara açık olması.
- JavaScript’in kontrolsüz bir şekilde etkinleştirilmesi.
10. DDoS ve Brute Force Saldırılarına Karşı Korumasızlık
- Kullanıcı giriş sayfalarında brute force saldırılarını önleyici mekanizmaların olmaması.
- Sunucunun fazla istekle çökertilebilmesi.
Bu tür güvenlik açıklarının önüne geçmek için güvenli kodlama standartlarını takip etmek, uygulamayı düzenli olarak güvenlik testlerine tabi tutmak (örn. pen testing) ve güvenlik açıklarını hızlı bir şekilde düzeltmek önemlidir.
----------------------------------------------------------------
GELELİM ÇÖZÜM BİLGİLERİMİZE;
Mobil uygulamalarda güvenlik zafiyetlerini detaylandırarak her bir zafiyetin oluşma nedenlerini, örnek senaryolarını ve çözüm önerilerini daha kapsamlı açıklayalım:
1. Zayıf Şifreleme veya Şifreleme Eksikliği
Detaylar:
- Hassas veriler (örneğin kullanıcı şifreleri, kredi kartı bilgileri) cihazda veya sunucuda açık bir şekilde saklanabilir.
- Yanlış şifreleme algoritmaları kullanılırsa (ör. AES yerine DES) veri, saldırganlar tarafından kolayca çözülebilir.
- Kodda şifreleme anahtarlarının saklanması (ör. hardcoded anahtarlar), saldırganların uygulamayı tersine mühendislik yoluyla analiz ederek bu anahtarlara ulaşmasını sağlar.
Örnek Senaryo:
Bir bankacılık uygulaması, kullanıcının kredi kartı bilgilerini cihazın Shared Preferences'ında şifresiz saklıyor. Bu durumda bir saldırgan, cihazı ele geçirip bu bilgilere kolayca erişebilir.Çözüm:
- Güçlü şifreleme algoritmalarını (ör. AES-256) kullanın.
- Şifreleme anahtarlarını uygulamada saklamak yerine güvenli bir sunucu ortamında tutun.
- Veriyi taşırken HTTPS gibi güvenli protokoller kullanın.
2. Güvensiz Veri Depolama
Detaylar:
- Veriler Shared Preferences, SQLite veya dosya sisteminde düz metin olarak saklanırsa saldırganlar bu verilere kolayca erişebilir.
- Cihaz kaybolduğunda veya çalındığında veriler yetkisiz kişiler tarafından okunabilir.
Örnek Senaryo:
Bir sosyal medya uygulaması, kullanıcının oturum belirteçlerini şifrelenmeden cihazın dosya sisteminde saklıyor. Root erişimi olan bir saldırgan, bu belirteçlere erişip kullanıcı hesabını ele geçirebilir.Çözüm:
- Verileri depolarken Android Keystore veya iOS Keychain gibi güvenli saklama mekanizmalarını kullanın.
- Hassas verileri şifreleyerek saklayın ve gerektiğinde yalnızca kullanıcı kimlik doğrulamasından sonra erişilebilir hale getirin.
3. Kimlik Doğrulama ve Yetkilendirme Eksiklikleri
Detaylar:
- Kullanıcı oturumları düzgün yönetilmediğinde (örn. oturum süresi sınırlı değilse) saldırganlar oturum belirteçlerini kullanabilir.
- Zayıf parola politikaları kullanıcı hesaplarının brute force saldırılarına açık hale gelmesine yol açar.
- Kullanıcı rollerine uygun yetkilendirme yapılmaması, düşük yetkili kullanıcıların yönetici işlemlerini gerçekleştirmesine olanak tanır.
Örnek Senaryo:
Bir e-ticaret uygulamasında, bir normal kullanıcı API isteği göndererek kendisini "admin" olarak yetkilendirebiliyor çünkü uygulama yetkilendirme kontrollerini düzgün yapmıyor.Çözüm:
- Kullanıcı rollerine göre kesin ve güvenli yetkilendirme kontrolleri yapın.
- Çok faktörlü kimlik doğrulama (2FA) uygulayın.
- Oturum zaman aşımı mekanizmaları ve yeniden kimlik doğrulama süreçlerini devreye alın.
4. İletişim Güvenliğinin Eksikliği
Detaylar:
- SSL/TLS kullanılmıyorsa, kullanıcı ve sunucu arasında gönderilen veriler MITM saldırılarıyla ele geçirilebilir.
- Sertifika doğrulama mekanizması devre dışı bırakılmışsa sahte sertifikalar kullanılabilir.
Örnek Senaryo:
Bir uygulama, kullanıcı şifresini düz metin olarak HTTP üzerinden sunucuya gönderiyor. Ağ trafiğini dinleyen bir saldırgan bu bilgiyi kolayca ele geçirebilir.Çözüm:
- HTTPS kullanarak tüm trafiği şifreleyin.
- Sertifika pinning uygulayarak sahte sertifikaların kullanılmasını önleyin.
- Ağ trafiğini analiz ederek güvenliğini düzenli olarak test edin.
5. Kodda Hassas Bilgilerin Bulunması
Detaylar:
- API anahtarları, şifreler veya gizli anahtarlar kaynak kod içinde açık bir şekilde bırakılabilir.
- Kodda bırakılan bu bilgiler, tersine mühendislik araçlarıyla ortaya çıkarılabilir.
Örnek Senaryo:
Bir uygulama, bir üçüncü taraf API'sine bağlanmak için kullandığı API anahtarını açıkça kodda tutuyor. Saldırganlar bu anahtarı kullanarak hizmeti kötüye kullanabilir.Çözüm:
- Hassas bilgileri kaynak koddan çıkarın ve sunucu tarafında saklayın.
- Ortam değişkenlerini ve yapılandırma dosyalarını kullanarak güvenli bir şekilde bu bilgilere erişim sağlayın.
6. Güvenli Olmayan Üçüncü Taraf Kütüphaneler
Detaylar:
- Güncel olmayan SDK veya kütüphaneler, güvenlik açıklarına sebep olabilir.
- Açık kaynaklı kütüphanelerin güvenilirlik testleri yapılmazsa kötü niyetli kodlar içerebilirler.
Örnek Senaryo:
Bir ödeme SDK'sı kullanan bir uygulama, eski bir sürümdeki zafiyet nedeniyle kullanıcı kredi kartı bilgilerini sızdırıyor.Çözüm:
- Kütüphanelerin ve SDK'ların en güncel sürümlerini kullanın.
- Kullandığınız kütüphaneleri düzenli olarak güvenlik testine tabi tutun.
7. Tersine Mühendisliğe Karşı Savunmasızlık
Detaylar:
- Kodun kolayca dekompile edilmesi, iş mantığını ve hassas bilgileri ortaya çıkarabilir.
- Uygulamanın güvenlik kontrolleri bu şekilde atlatılabilir.
Örnek Senaryo:
Bir oyun uygulaması, kullanıcıların hile yapmasını engelleyen kontrolleri istemci tarafında tutuyor. Bir saldırgan, kodu dekompile ederek bu kontrolleri kaldırıyor.Çözüm:
- Kod karıştırma araçlarını (ör. ProGuard, R8) kullanarak tersine mühendisliği zorlaştırın.
- Kritik güvenlik kontrollerini sunucu tarafına taşıyın.
8. Kullanıcı Verilerinin Gereksiz İzinlerle Toplanması
Detaylar:
- Uygulama, ihtiyacı olmadığı halde kullanıcıdan geniş kapsamlı izinler talep edebilir.
- Kullanıcı verilerinin izinsiz paylaşılması yasal sorunlara yol açabilir.
Örnek Senaryo:
Bir hesap makinesi uygulaması, gereksiz yere kamera ve konum erişimi talep ediyor.Çözüm:
- Yalnızca gerekli izinleri isteyin.
- Veri toplama politikalarını açık bir şekilde kullanıcılara sunun.
9. WebView ile Güvenlik Riskleri
Detaylar:
- WebView ile açılan sayfaların güvenlik kontrolleri yapılmadığında kötü niyetli kod çalıştırılabilir.
- JavaScript'in kontrolsüz etkinleştirilmesi risklidir.
Örnek Senaryo:
Bir alışveriş uygulaması, kötü niyetli bir URL yüklediğinde kullanıcının çerezlerini çalabilir.Çözüm:
- WebView güvenlik ayarlarını yapılandırın (ör. setJavaScriptEnabled(false)).
- Yalnızca güvenilir kaynaklardan içerik yükleyin.
****** Makalemiz şimdilik burada sonlanıyor , bir sonraki öğretici yazılarımızda buluşmak üzere esen kalın Turkhacks ile kalın ! ******








