android app security

24
Android Application Security Murat AYDIN

Upload: murat-aydin

Post on 16-Apr-2017

581 views

Category:

Technology


0 download

TRANSCRIPT

Android Application Security

Murat AYDIN

2

Güvenlik Neden Önemli?

3

Güvenlik Neden Önemli?

4

Güvenlik Neden Önemli?

5

Güvenlik Neden Önemli?

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

7

Sorular

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ı

12

Android Security ModelComponents can share process or not

OR

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

24

Sorular