• Sonuç bulunamadı

Güvenli Uygulama Geliştirme Android. Bedirhan Urgun

N/A
N/A
Protected

Academic year: 2022

Share "Güvenli Uygulama Geliştirme Android. Bedirhan Urgun"

Copied!
30
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

Güvenli Uygulama Geliştirme Android

Bedirhan Urgun

(2)

• OWASP, www.owasp.org

• OWASP Turkey, www.webguvenligi.org

• Yazılım güvenliği farkındalığı

– Projeler

– Yarışmalar

– İletişim

(3)

Yazılım Öncelikleri

• İşlevsellik / Functionality

• Performans

• Güvenlik

• Kod Kalitesi

• Kullanılabilirlik / GUI

http://webguvenligi.org/mpoll

(4)

Primum non nocere

Önce, zarar verme

(5)

The Next Big Thing

Startups Social Networking

Mobility

Business

Convergence

(6)

Neden Güvenli Geliştirmeliyim?

• Şan/Şöhret kaybı

• Para kaybı

• Zorlayan standardlar

– PCI, SOX, ISO-27001, HIPAA, v.b.

• Zorlayan kurumlar

– BDDK, BTK, v.b.

(7)

Güvenli Android Geliştirme

• Hassas Veriler ve Intent

• Hassas Veriler ve LogCat

• Girdi Denetimi

• Güvenli Depolama

• Bağlantı Güvenliği

• Bileşenler Arası Yetkilendirme

http://webguvenligi.org/belgeler

(8)

Hassas Veriler ve Intent

Intent registrationIntent = new

Intent("com.google.android.c2dm.intent.REGISTER");

registrationIntent.putExtra("app",

PendingIntent.getBroadcast(this, 0, new Intent(), 0));

registrationIntent.putExtra("sender","[email protected]");

startService(registrationIntent);

(9)

Hassas Veriler ve Intent

Intent

<intent-filter android:priority="999">

(10)

Hassas Veriler ve LogCat

(11)

Girdi Denetimi

Intent i = getIntent();

String url = i.getStringExtra("url");

// url whitelist kontrolünden geçirilmelidir.

(12)

Bağlantı Güvenliği

URL url = new URL("https://www.webguvenligi.org");

HttpsURLConnection con = (HttpsURLConnection) url.openConnection();

readStream(con.getInputStream());

(13)

Güvenli Depolama

try{

FileOutputStream fos = openFileOutput("puanlar", MODE_PRIVATE);

OutputStreamWriter out = new OutputStreamWriter(fos);

out.append("oyuncu1#80\n");

out.append("oyuncu2#34\n");

}

catch(FileNotFoundException fnfe){

...

(14)

Beni Hatırla

getSharedPreferences("MyPrefsFile", MODE_PRIVATE)

.edit()

.putString("username", username)

.putString("password", password)

.commit();

(15)

Beni Hatırla

String token = login(username, password);

getSharedPreferences("MyPrefsFile", MODE_PRIVATE) .edit()

.putString("token", token)

.commit();

(16)

Android Yetki Yönetimi

(17)

Gerçek – Sahte Ayrımı

gerçek kaynak

gerçek hedef

sahte hedef

sahte

kaynak

(18)

Yetkilendirme Yapıları

• permission tanımı

• permission isteği

<permission

android:name="org.webguvenligi.permission" />

(19)

Yetkilendirme Yapıları - Devam

• permission zorunluluğu

<receiver

android:permission="org.webguvenligi.permission">

<activity

android:permission="org.webguvenligi.permission">

<service

android:permission="org.webguvenligi.permission">

<provider

(20)

Yetkilendirme Yapıları - Devam

• permission zorunluluğu

sendBroadcast(intent, "org.webguvenligi.permission")

checkCallingPermission("org.webguvenligi.permission")

PackageManager pm = context.getPackageManager();

(21)

Yetkilendirme – Senaryo 1

A B

A yetkili

midir?

(22)

Yetkilendirme – Senaryo 2

A B

Sadece A

yetkili

midir?

(23)

Yetkilendirme – Senaryo 3

A B

A gerçek

midir?

(24)

Yetkilendirme - İpucu 1

• normal permission kontrolü

<uses-permission

android:name="permission"

A B

A yetkili midir?

3

(25)

Yetkilendirme - İpucu 2

• permission protectionLevel ipucu

<permission

android:name="permission"

android:protectionLevel="signature" />

<receiver

A B

Sadece A yetkili midir?

1

2

(26)

Yetkilendirme - İpucu 3

• hardcoded signature kontrolü

A B

A gerçek midir?

packageInfo = pm.getPackageInfo(A_PkgName,

PackageManager.GET_SIGNATURES);

(27)

Tehdit Modelleme - Push Notification

Push Notification

Servisi

Push Notification Sunucusu

Kayıt Broadcast

Android Cihaz

Uygulama

(28)

Doğrulama Eğilimi

Üçlü Doğru/Yanlış Emin Olma Yüzdesi %

n, 2n, 2n+2

7, 14, 16 Doğru % 60

5, 10, 12 Doğru % 80

(29)

Yanlışlama Eğilimi

Üçlü Doğru/Yanlış Emin Olma Yüzdesi %

n, 2n, 2n+2

7, 14, 16 Doğru % 60

6, 12, 13 Doğru % 0

(30)

Teşekkürler

owasp turkey mailing list

Referanslar

Benzer Belgeler

Ayrıca alkol- madde kullanımı, patolojik kumar, tıkınırcasına yeme bozukluğu gibi impulsivitenin belirgin olduğu durumlarda kendine zarar verme daha sık görülür

Filolojik bakış bize şunu göstermektedir: Çalışmanın Latincedeki karşılığı olan labor kavramı zor, zahmetli,güç, yorucu bir içeriğe sahipken; eski Germen dilindeki

Bu tür davranışları olan olguların önemli bir bölümünde psikotik bozukluk, kişilik bozuklukları, zeka geriliği, madde kullanım bozukluğu, dissosiyatif kimlik

It is specified that asymptomatic hyperammonemia which VPA revealed is 20% and the incidence of symptomatic hyperammonemia is 5%. VPA induced hyperammonemia pathogenesis is not

gün sabah digoksin tedavisi annesi tara- fından 1 damla yerine 1 çay kaşığı olarak uygulanmış olup aynı gün, huzursuzluk, beslenmede azalma, kusma yakınmasıyla Çocuk

Bu tez çalışmasında, yaygın olarak kullanılan yazılım geliştirme süreç modelleri karşılaştırılarak, gelişen yazılım mühendisliği projelerinde uygun ve güvenli yazılım

Bu bağlamda, hızla gelişen bilişim dünyasının önde gelen mobil uygulama platformlarından Android işletim sistemi ve iOS işletim sistemi tabanlı uygulamaların yazılım

This study demonstrates that isolating a rabbit calvarial inlay autogenous bone graft from the dura and/or periosteum results in signifıcantly (p &lt; 0.05)