Upload
petr-dvorak
View
446
Download
1
Embed Size (px)
Citation preview
Bankovní aplikace... a jejich bezpečnost
Petr Dvo!ák, Partner & iOS Development Lead@joshis_tweets
Má cenu se starat?
Business case
• Ztráta pen"z - nutnost p!ímé refundace
• Ztráta dat - nutnost investic (nové karty, ...)
• Reputační riziko
Reputa#ní riziko
• $patn" odhadnuteln% dopad
• Problém nemusí nastat, sta#í mo&nost
• B"&n% u&ivatel je neinformovan%
Nutná ob"'...
Reputa#ní rizikoCena v K#
Po#et klient(
Dopad incidentu
Cena protiopat!ení
Typické problémy
Bezpe#ná komunikace
• iOS
• Základní validace certi)kátu.
• Jednoduchá instalace nové CA do systému.
Bezpe#ná komunikace
• iOS
• Základní validace certi)kátu.
• Jednoduchá instalace nové CA do systému.
Bezpe#ná komunikace
• iOS
• Základní validace certi)kátu.
• Jednoduchá instalace nové CA do systému.
Bezpe#ná komunikace
• iOS
• Základní validace certi)kátu.
• Jednoduchá instalace nové CA do systému.
Bezpe#ná komunikace
• iOS
• Základní validace certi)kátu.
• Jednoduchá instalace nové CA do systému.
MITM Proxy
Co s tím?
• D(sledná kontrola certi)kátu na klientovi.
• Problém: Vypr*ení platnosti certi)kátu.
• Pouze EV certi)káty od trusted CA.
• Dodate#né podepisování (OAuth 1.0a)
Logování informací
• V"t*inou ji& vy!e*eno.
• Pro# se tím je*t" zab%vat?
Odd"lená prost!edí
• Prost!edí pro v%voj: chci logovat, nemám certi)kát.
• Prost!edí pro produkci: nechci logovat, mám certi)kát.
• Nastavení procesu na úrovni sestavení aplikace.
Jailbreak
• Nutnost pro v%vojá!e.
• Zapov"zeno u&ivatel(m.
• Vhodné n"jak otestovat v aplikaci.
Jailbreak
#pragma mark - Basic 90% test
+ (BOOL) deviceIsJailbroken
{
NSString *)lePath = @"/Applications/Cydia.app";
return [[NSFileManager defaultManager] )leExistsAtPath:)lePath];
}
Pro# ne jailbreak?
• Úto#ník získá kompletní p!ístup ke v*emu.
• Jakákoliv ochrana je pak marná.
• Keychain je odkryt%.
• MobileSubstrate (run-time patche)
Demo Cycript
// helper functionsfunction CGPointMake(x, y) { return {x:x, y:y}; }function CGSizeMake(w, h) { return {width:w, height:h}; }function CGRectMake(x, y, w, h) { return {origin:CGPointMake(x,y), size:CGSizeMake(w, h)}; }
// add UIView to the main windowvar v = [[UILabel alloc] initWithFrame:CGRectMake(0,0,320,480)];v.text = "Hacked by Inmite!";v.textAlignment = 1;v.font = [UIFont boldSystemFontOfSize:25];v.alpha = 0.85;[[UIApplication sharedApplication].keyWindow addSubview:v];
Cycript - Demo
Ochrana hesla
• Samoz!ejm" hesla neukládat “na disk”.
• A co ani do pam"ti?
iOS aplikace v akci
iOS Docs: “The system [iOS] keeps suspended apps in memory for as long as possible, removing them only when the amount of free memory gets low.”
App Startuje
App Zavřena
App Mrtvá
User: Aplikace skončila... Útočník ukradne telefon...... nebo ho ztratíte...
Mallware?Game over...
Zadává se heslo
System: Ještě si ji tu nechám...
Práce s pam"tí
• Tajné = nem"lo by na za!ízení dlouho z(stávat.
• iOS: Objective-C
• Android: Java
• Spole#n% jmenovatel: C
Mechanism illustrationAp
p &
Keyb
oard
UIT
extF
ield
C Se
curt
ity
mod
ule
User taps a letter
Ln
KeyboardCreated
Security Context Created
Letter Ln Ciphered using OTP
C_Ln appended
User presses sign-
in
App fetches [C_Li]i=1..Length
Context Deciphers Password
H/TOTP signature computed
Keyboard Destroyed.
Password & Context Destroyed
App Sends Signed
Request.
H/TOTP signature Received
Sent [C_Li]i=1..Length
Mechanism illustrationAp
p &
Keyb
oard
UIT
extF
ield
C Se
curt
ity
mod
ule
User taps a letter
Ln
KeyboardCreated
Security Context Created
Letter Ln Ciphered using OTP
C_Ln appended
User presses sign-
in
App fetches [C_Li]i=1..Length
Context Deciphers Password
H/TOTP signature computed
Keyboard Destroyed.
Password & Context Destroyed
App Sends Signed
Request.
H/TOTP signature Received
Ln C_Ln
Sent [C_Li]i=1..Length
Mechanism illustrationAp
p &
Keyb
oard
UIT
extF
ield
C Se
curt
ity
mod
ule
User taps a letter
Ln
KeyboardCreated
Security Context Created
Letter Ln Ciphered using OTP
C_Ln appended
User presses sign-
in
App fetches [C_Li]i=1..Length
Context Deciphers Password
H/TOTP signature computed
Keyboard Destroyed.
Password & Context Destroyed
App Sends Signed
Request.
H/TOTP signature Received
[C_Li]i=1..Length binary garbage
Sent [C_Li]i=1..Length
[C_Li]i=1..Length
Te#ka na záv"r...
V"d"li jste, &e ...
• ... iOS p!i p!echodu aplikace na pozadí d"lá screenshot aplikace?
• Nutnost o*et!it v rámci aplikace zobrazením dummy view.
D"kuji, otázky?