Hoşgeldin Misafir

Mobil Uygulamalarda Ortaya Sıkça Çıkan Güvenlik Zafiyetleri

ScooteR

Cyprus
12 Haz 2024
1,009 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
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

  • 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ı.
Çözüm: Güçlü ve modern şifreleme algoritmalarını (örn. AES-256, SHA-256) kullanın ve dinamik anahtar yönetimi sağlayın.


dgfu8g0.png





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ı.
Çözüm: Hassas veriler için güvenli depolama alanlarını (örn. Android Keystore, iOS Keychain) tercih edin ve şifrelemeyi zorunlu hale getirin.


j4buz1w.jpg




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.
Çözüm: Oturum yönetimini sağlam yapın, kullanıcılar için güçlü parola politikaları oluşturun ve mümkünse iki faktörlü kimlik doğrulama (2FA) uygulayın.



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.
Çözüm: SSL/TLS kullanarak tüm ağ trafiğini güvence altına alın ve sertifika doğrulama süreçlerini doğru bir şekilde uygulayın.



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ı.
Çözüm: Hassas bilgileri kaynak kodda saklamayın, bunun yerine güvenli bir sunucu tarafı çözümü veya ortam değişkenleri kullanın.




k6c2lsz.png


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ı.
Çözüm: Üçüncü taraf kütüphaneleri ve SDK'ları düzenli olarak güncelleyin ve yalnızca güvenilir kaynaklardan alın.



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ı.
Çözüm: Kod karıştırma (obfuscation) tekniklerini ve proguard gibi araçları kullanarak tersine mühendisliği zorlaştırın.



8. Kullanıcı Verilerinin Gereksiz İzinlerle Toplanması

  • Uygulamanın gereksiz erişim izinleri istemesi (örn. mikrofon, kamera, konum).
  • Kullanıcı verilerinin izinsiz paylaşılması.
Çözüm: Yalnızca gerekli izinleri talep edin ve kullanıcıya şeffaf bir şekilde nedenini açıklayın.



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.
Çözüm: WebView kullanırken güvenli yapılandırmalar yapın, JavaScript'i gereksizse devre dışı bırakın ve yalnızca güvenilir kaynaklardan içerik yükleyin.



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.
Çözüm: CAPTCHA, hız sınırlama ve IP engelleme gibi önlemler uygulayın.



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;
30y48ec.png



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:

  1. Güçlü şifreleme algoritmalarını (ör. AES-256) kullanın.
  2. Şifreleme anahtarlarını uygulamada saklamak yerine güvenli bir sunucu ortamında tutun.
  3. 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:

  1. Verileri depolarken Android Keystore veya iOS Keychain gibi güvenli saklama mekanizmalarını kullanın.
  2. Hassas verileri şifreleyerek saklayın ve gerektiğinde yalnızca kullanıcı kimlik doğrulamasından sonra erişilebilir hale getirin.

fy4ccgk.jpg





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:

  1. Kullanıcı rollerine göre kesin ve güvenli yetkilendirme kontrolleri yapın.
  2. Çok faktörlü kimlik doğrulama (2FA) uygulayın.
  3. 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:

  1. HTTPS kullanarak tüm trafiği şifreleyin.
  2. Sertifika pinning uygulayarak sahte sertifikaların kullanılmasını önleyin.
  3. Ağ trafiğini analiz ederek güvenliğini düzenli olarak test edin.


loxytwe.jpg

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:

  1. Hassas bilgileri kaynak koddan çıkarın ve sunucu tarafında saklayın.
  2. 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:

  1. Kütüphanelerin ve SDK'ların en güncel sürümlerini kullanın.
  2. Kullandığınız kütüphaneleri düzenli olarak güvenlik testine tabi tutun.




5s895ce.jpg


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:

  1. Kod karıştırma araçlarını (ör. ProGuard, R8) kullanarak tersine mühendisliği zorlaştırın.
  2. Kritik güvenlik kontrollerini sunucu tarafına taşıyın.


ddbqj85.png

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:

  1. Yalnızca gerekli izinleri isteyin.
  2. Veri toplama politikalarını açık bir şekilde kullanıcılara sunun.




g8tr1dl.jpg


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:

  1. WebView güvenlik ayarlarını yapılandırın (ör. setJavaScriptEnabled(false)).
  2. 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 ! ******
D4teRy.png
D4tyNI.png