android app security
Post on 16-Apr-2017
581 Views
Preview:
TRANSCRIPT
6
%100 Güvenlik?
1992 Yılında Jeff Richards(Güvenlik Uzmanı):
1. Don't buy a computer2. If you do buy a computer, don't turn it on
2013 Yılında Murat Aydın(Ünlü Düşünür):
1. Don't buy a smart phone2. If you do buy a smart phone, don't
turn it on
8
Güvenlik Riski
Risk=Vulnerability + Threat + Consequences
• %100 Güvenlik Mümkün Değil Ama Daha Güvenli Mümkün
• Riski Azalt
9
Linux Security Model Her kullanıcının UID’si var Her grubun GID’si var Kullanıcılar Gruplara atanabilir Her kaynağın owner,group ve world
izinleri var Haklar R,W ve X
10
Android Security Model Her yüklenen Android paketinin UID’si
var Uygulamaya ait dosya, veritabanı gibi
kaynaklarda da bu UID kullanılıyor Bir uygulama başka bir uygulamanın
kaynaklarına ulaşamıyor
11
Android Security Model Uygulamalar UID paylaşabilir Dolayısı ile kaynakları da paylaşabilir
İki uygulama da aynı sertifika ile imzalanmalı
13
Sharing Process
İki bileşenin process paylaşması kaynak kullanımını azaltmak için kullanılabilir
Farklı process kullanması, biri göçtüğünde ya da kapatıldığında diğerinin devam etmesi sağlanabilir
14
Android File System
Aynı UID’ye sahip uygulamalar dosya paylaşabilir
Root olan birisi tüm kaynaklara ulaşabilir, uygulamanızın dosyalarını encrypt edin
Harici depolamada linux izinleri geçerli değil, uygulamanızın dosyalarını encrypt edin
Geliştirici dosyaların izin haklarını değiştirebilir, dikkatli değiştirin
15
Application Permissions
Uygulamanızın kullandığı izinleri Manifest dosyasına yazılır
Uygulama Manifest dosyasına yazmadığı izinleri kullanamaz
Kullanıcı uygulamayı yüklemeden önce istediği izinleri görür
Hacker bir uygulamayı hacklese de uygulamanın izinleri dışında bir yere erişemez
Mümkün olduğunca az izin kullanın
16
Security Tips
Kaynaklara izin verirken cimri davranın İzin vermek kolaydır, geri almak zordur Dosyalara MODE_WORLD_WRITEABLE
izin hakkı vermeyin Başka uygulamalarla veri paylaşmak
istiyorsanız bir content provider kullanın Root yetkisine karşı verileri şifreleyin
17
Security Tips
Harici depolama yazma ve okumaya karşı korumasız
Harici depolamada önemli veri tutmayınız
Tutuyorsanız şifreleyerek tutun Harici depolamadaki verileri kullanırken
input validation yapın çünkü dışarıdan değiştirilebilir
18
Security Tips Mümkün olduğunca az izin alın Önemli ve tehlikeli izinleri almamaya
çalışın WebView kullanırken javascript
ihtiyacınız yoksa setJavaScriptEnabled() metodunu çağırmayın, javascript injection engellenmiş olur
WebView önemli bilgilere erişiyorsa clearCache() metodunu çağırarak kaydedilen bilgileri temizleyin
19
Security Tips Önemli ve kişisel verileri saklarken
şifreleyerek saklayın Eğer önemli veriler internet üzerinden
aktarılıyorsa HttpsURLConnection veya SSLSocket metodlarını kullanın
20
Security Tips
Intent filter kullanıyorsanız servisler varsayılan olarak dışarı açıktır
Kullanmıyorsanız android:exported özelliği ile dışarı açabilir ya da kapatabilirizsiniz
Servisinizin dışarı açık olup olmaması gerektiğine karar verip buna göre bu özellikleri kullanın
android:permission özelliği ile servislerinizi dışarı karşı koruyabilirsiniz
21
Security Tips
Android NDK yerine Android SDK’da geliştirme yapın çünkü1. Android NDK daha karmaşık2. Android NDK daha az taşınabilir3. Buffer overflow’a sebep olabilecek
memory hatalarına daha çok açık
22
Security Tips
Dinamik kod yüklemeyin çünkü1. Uygulamanız ile aynı haklara sahip
olur2. Code injection’a imkan vermiş
olursunuz Özellikle güvenli olmayan ortamlardan,
şifrelenmemiş olarak dinamik kod yüklemeyin
23
Tool:Mercury
Mercury is a framework for exploring the Android platform; to find vulnerabilities and share proof-of-concept exploits
Mercury allows you to assume the role of a low-privileged Android app, and to interact with both other apps and the system.
Interact with the 4 IPC endpoints - activities, broadcast receivers, content providers and services
top related