6. %100 Güvenlik?
6
1992 Yılında Jeff Richards(Güvenlik Uzmanı):
1. Don't buy a computer
2. 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 phone
2. If you do buy a smart phone, don't turn it on
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
9
10. Android Security Model
10
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
11
İ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
13
14. Android File System
14
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
15
16. Security Tips
16
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
17
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
18
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
19
Ö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
20
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
21
Android NDK yerine Android SDK’da
geliştirme yapın çünkü
1. Android NDK daha karmaşık
2. Android NDK daha az taşınabilir
3. Buffer overflow’a sebep olabilecek
memory hatalarına daha çok açık
22. 22
Security Tips
Dinamik kod yüklemeyin çünkü
1. Uygulamanız ile aynı haklara sahip olur
2. Code injection’a imkan vermiş olursunuz
Özellikle güvenli olmayan
ortamlardan, şifrelenmemiş olarak dinamik
kod yüklemeyin
23. 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