Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND...

60
Authen’cator Leakage Through Backup Channels on Android Guangdong Bai Na’onal University of Singapore

Transcript of Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND...

Page 1: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Authen'catorLeakageThroughBackupChannelsonAndroid

GuangdongBai

Na'onalUniversityofSingapore

Page 2: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Webservicesareincreasinglydeliveredthroughmobileapps…

2

SocialNetworking

OnlineBanking EmailService

Page 3: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Can’twesimplyusemobilebrowsers?

3

V.S.

ü  Fulluseofdevice/APIsü Lessprogramminglimita'onü Runningfaster

ü CrossplaQormsü Reusablebrowserfunc'onality(JSengine,…)ü Developedfaster

Page 4: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Can’twesimplyusemobilebrowsers?

4

…the(mobile)browserhasbecomeasingleapplica'onswimminginaseaofapps.--FlurryInsights

Page 5: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Therefore,mobileappsplaythesameroleaswebbrowsers

5

HTTP/1.1200Set-Cookie:cookie1=87654321;domain=.idp.com----------------------------------------<bodyonload=foo()><script>vardomain="hfp://www.sp.com/login";varauthToken="3fa09d24a3ce";varuEmail="[email protected]";varidpSign="2oOs5u29erIas…“;func'onfoo(){varmessage=uEmail+"&"+authToken+"&"+idpSign;window.postMessage(domain,message);}</script></body>

GETHTTP/1.1

WebServer App

②Contentrendering

①Communica'on

protocols

Page 6: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

However,thisisanon-trivialtask…

6

WebServer App

②Contentrendering

①Communica'on

protocols

•  Codeinjec'onafacks–  Havebeenextensivelystudied[CCS’13,CCS’14,ESORICS’15]

•  Securityofcommunica'onprotocols–  Novelafacksurface–  NovelTrustedCompu'ngBase(TCB)

Page 7: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Focusofthistalk:webauthen'ca'onprotocolsonAndroid •  Implementa'onofwebauthen'ca'onschemesonAndroid

–  Authen'ca'onprocess–  Howauthen'ca'oncreden'als(authen'cators)aremanaged

•  Backupchannel:anewafacksurfaceagainstwebauthen'ca'ononAndroidplaQorm–  Whybackupisadangerousfunc'onalityonAndroid–  Howtoabusebackupchannels

•  Casestudiesandmi'ga'ons

7

Page 8: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Sec'on1.WebAuthen'ca'ononAndroid

Page 9: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Webauthen'ca'on:safeguardtowebaccounts

•  WebAuthen'ca'on–  Aprocessbyservertoconfirmwhetheranen'ty(client)iswhoitdeclared –  Oneofthemostlyusedwebfunc'onali'es

9

Page 10: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

HowAndroidappsimplementwebauthen'ca'on?

•  Ourinves'ga'on–  Goal:tolearnapproachescontemporaryappsusetoimplementtheir

authen'ca'onschemes

–  Focus:howauthen'catorsaremanaged

–  Methodology:wehavemanuallyanalyzedtop-ranked100appsonGooglePlay(byreverseengineeringandtrafficanalysis)

10

Page 11: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Resultsummary

11Figuresource:hfp://geektechreviews.com/wp-content/uploads/2015/07/Top-10-Free-Android-Apps-Must-Have.jpg

TOP100

66withauthen'ca'on

schemes

34withoutauthen'ca'on

schemes

Standaloneappse.g.,newsbrowsers,mapsandvideoplayers

–  Basicauthen'ca'on(40)–  SingleSign-on(40)–  AndroidAccountManager(16)

Page 12: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Webauthen'ca'onscheme#1:Basicauthen'ca'on •  Basicauthen'ca'onstandsfortradi'onalauthen'ca'onschemes

onthebasisof–  Knowledge(e.g.,apasswordandsecurityques'ons)

•  34outof40appsusepassword-basedschemes

–  Ownership(e.g.,ahardwaretokenandamobilephone)•  6outof40appsuseSMS-basedone'mepasswordschemes

–  Inherence(e.g.,fingerprintandre'nalpafern)•  Noneisfound•  Fingerprintconfiden'alityatBlackHatUS2015byDr.WeiTao

12

Page 13: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Generalprocessofbasicauthen'ca'onondesktopbrowsers

13

WebServer

UID/PWD

•  Authen'cator–  Anauthen'ca'oncreden'alindica'ngclient’sloginsession–  E.g.,cookies,sessionID,OAuthTokenandOAuthCode

ü  Sameoriginpolicy(SOP)ü Contentsecuritypolicy(CSP)ü Cookieprotec'onü …

WebBrowser

Page 14: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Generalprocessofbasicauthen'ca'ononAndroidapps

14

WebServer

UID/PWD RestAPI

Webview

ContentProvider

SharedPreference

AndroidApp

InternalStorage /data/data/appname

Page 15: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Webauthen'ca'onscheme#2:SingleSign-on

•  SingleSign-On(SSO)–  Akerberos-likesinglecreden'al

authen'ca'onscheme

–  BrowserID(Mozilla)–  FacebookConnect

•  250+Millionusers,2,000,000websites–  OpenID

•  onebillionusers,50,000websites–  …

15

Page 16: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Threepar'esinSSO

16

User

Iden'tyProvider(IDP)

RelyingParty(RP)

e.g.,

e.g., Token

Page 17: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

SSOinAndroid •  RelyingParty(RP)

–  Applica'on•  Iden'typrovider(IDP)

–  SSOServiceisreleasedinformofSDK–  E.g.,FacebookConnect,TwiferID

17

Page 18: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Aconcreteprocess:Facebookconnect

18

Legend Secretcookies

OAuthAccesstoken

FacebookServer

RPapp

FacebookSDK

Android

/app/app/RP

Android

IDPapp

RPapp

FacebookSDK

/app/app/IDP /app/app/RP

Page 19: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Webauthen'ca'onscheme#3:AndroidAccountManager

19hfp://blog.udinic.com/2013/04/24/write-your-own-android-authen'cator/

•  AccountManager–  AnAndroidservicewhichprovidesadelegated

authen'ca'onserviceandcentralizedaccount/authen'catorcontrol

–  Pros•  Simplifiestheprocessforthedeveloper

–  Byimplemen'ngsomeinterface

•  Canhandlemul'pletokentypesforasingleaccount

•  Automa'callybackgroundupdate(SyncAdapters)

Page 20: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

BriefinghowAccountManagerworks •  Developerneedsonlyto…

–  TocreateanAccountAuthen)cator•  Addaccounts,accounttypes,authtoken

–  TocreateanAc'vity•  Throughwhichusersentercreden'als

•  Accountmanagerwill…–  Manageauthen'cators

•  Locatedinaccount.dbin/data/system/users/0

–  Updateauthen'catorsonbackground

20

Page 21: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Securityofauthen'ca'onschemes •  Securityofprotocolsinthreelayers

–  Design-levelsecurity:designandlogicflaws•  Anotoriousexample:flawsinNeedham-Schroederprotocol•  Protocolverifica'on:theoremproving(Proverif),modelchecking(PAT)

–  Implementa'on-levelsecurity•  Implementa'onerrors/bugsinthecode•  E.g.,GooglelDflaw:notallmessagesarecoveredinsignature(IEEES&P’12)Guessableauthen'cators(NDSS’13)

–  Infrastructure-levelsecurity•  Exploitsintheso|warestack(e.g.,OS,filesystem)thattheprotocolsrelyupon•  Apreviousstudy:passwordleakagethroughcompromisedADB(ClaudXiaoonHITCON’14)

21

Page 22: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Let’slookatinfrastructure-levelsecurityofwebauthen'ca'ononAndroid

22

UID/PWD RestAPI

Webview

ContentProvider

SharedPreference

AndroidApp

InternalStorage /data/data/appname

BasicAuthen'ca'on

Page 23: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Let’slookatinfrastructure-levelsecurityofwebauthen'ca'ononAndroid

23

SingleSign-on

Legend Secretcookies

OAuthAccesstoken

FacebookServer

RPapp

FacebookSDK

Android

/app/app/RP

Android

IDPapp

RPapp

FacebookSDK

/app/app/IDP /app/app/RP

Page 24: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Let’slookatinfrastructure-levelsecurityofwebauthen'ca'ononAndroid

24

SingleSign-on

BasicAuthen'ca'on

AccountManager

/app/app/appname

Theownerapp’sproprietarydirectory

Systemdirectory /data/system/users/0

Page 25: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Isola'onMechanisminAndroid

25

Sandbox Sandbox

/data/data/appname

✓✗

Uname/password

Whatifthesandboxisbypassed?

Page 26: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Backupfunc'onalityhastoviolatesandboxmechanism

26

Backupapp

Sandbox Sandbox

✓✗✓

Page 27: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Sec'on2.BackuponAndroid

Page 28: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

TwowaystoimplementbackuponAndroid •  Root-basedbackup

–  Rootthedeviceandgrantrootprivilegetothebackupapps

•  ADB-basedbackup

28

Backupapp

Sandbox Sandbox

✓✓

Weconsideronlytobackupanapp’sdatalocatedinitsproprietaryfolder,insteadoftheuser’sdatacanbeaccessedthroughAPIslikecontactsandSMSmessages

Page 29: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

ADB-basedbackup •  ADB(AndroidDebugBridge)

–  ADBisaversa'lecommandlinetoolthatletsuserscommunicatewithanemulatorinstanceorconnectedAndroid-powereddevice.

–  Runningonsystem(orsignature)levelprivilege•  Root>system>user

•  HowdoesADB-basedbackupwork?(doweneed“addbackup”every'me?)

29

System level Android

proxy

1.  adbshell2.  app_processproxy User level

Backup app

Page 30: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

HowdoesanADBproxyconductbackup?

30

bu1backupappname>backupdata.ab

bu0restore<backupdata.ab

backup

restore

ANDROIDBACKUP11noneorAES-256

Reference:hfp://nelenkov.blogspot.sg/2012/06/unpacking-android-backups.html

magicformatversion

compressionflag

encryp'onalgo

compressedusingdeflatealgorithm

data

Page 31: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Howbackupcanbeathreattoauthen'ca'on?

31

BackupAppVic'mApp

Globallyreadablestorage

ADBProxy

MaliciousApp

Channel#1:BackupdataLeakage

Channel#2:BackupcapabilityLeakage

Page 32: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Asummaryofleakagethroughtheexis'ngbackupapps

Category Apps Installs Publiclyaccessible?

Backupdataencrypted?

Compromisedinterfaces?

Leakagepossible?

Root-based

MyBackup 1,000,000-5,000,000 SDcard ✗ -- ✓

Ul'mateBackup

500,000-1,000,000 SDcard ✗ -- ✓

EaseBackup 100,000-500,000 SDcard ✗ -- ✓

TitaniumBackup

10,000,000-50,000,000 SDcard ✗ -- ✓

ADB-based Helium 1,000,000-5,000,000 SDcard ✗ ✓ ✓

32

Page 33: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

AnalyzinganADB-basedBackupApp •  Helium

–  Oneofthebestappsin2013(www.gizmap.com/best-android-apps-2013/30238)–  Developer:ClockworkMod

•  DeveloperofCyanogenModAndroidOS•  Hasreleased19appsonGooglePlay,15millioninstalls

•  OuranalysisontheADB-basedappisenlightenedbyScreenMilker[NDSS’14]

33

Page 34: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

InternalsofHelium(obtainedbyreverseengineering)

34

ShellRunner ShellProxyService am startservice ①

/data/data/helium Local Socket Server

Android Helium

Legend control

flow

flow data

settings.db

Page 35: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

InternalsofHelium(obtainedbyreverseengineering)

35

ShellRunner ShellProxyService am startservice ①

/data/data/helium Local Socket Server

LocalBackup Main

Activity ⑴

⑵ ⑶ ⑷

SD Card

Android Helium

Legend control

flow

flow data

settings.db

Page 36: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

InternalsofHelium(obtainedbyreverseengineering)

36

ShellRunner ShellProxyService am startservice ①

/data/data/helium Local Socket Server

WebBackup

LocalBackup Main

HTTPServer

Activity

Asyn

⑵ ⑶ ⑷

SD Card

(i) (ii) (iii)

(iv)

Android Helium

Legend control

flow

flow data

settings.db

Page 37: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

AccessControlProtocolintheADBProxy

37

ADBProxy

LocalSocketServer HeliumMainapp

CodeofADBproxy

CodeofbroadcastPassword()

Page 38: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Alogicflaw

38

ADBProxy

LocalSocketServer HeliumMainapp

CodeofADBproxy

CodeofbroadcastPassword()

Page 39: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

HowhandleSocket()works?

39

handleSocket(){try{

while(true){r=getRequest();if(checkOTP(r)) serve(r);else throwexcep'on;}

catch{ //notterminate}}

Page 40: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Alogicflaw

40

ADBProxy

LocalSocketServer HeliumMainapp

CodeofADBproxy

CodeofbroadcastPassword()

Page 41: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Afack#1:Exploitthelogicflaw

41

ShellRunner ShellProxyService

AuthSniffer User

uninstall start

mHelium

Monitor uninstall events Attacker

Monitor install events Trick user to install mHelium

install

start

Helium uninstalled

Wrong token

•  Disadvantageoftheafacker–  Heliumneedstobeuninstalled–  Afackerneedstoinstallan

malwarewiththesamenameasHelium

•  Advantageoftheafacker–  OnceobtainingtheOTP,the

afackerisabletobackupthevic'mappatany'me(ac'veafack)

–  OnceobtainingtheOTP,theafackerisabletoconductotherhigh-privilegedac'ons(seehfp://developer.android.com/tools/help/adb.html)

Page 42: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Afack#2:InvoketheWebinterface

42

HTTPServeronport5000

URL Method HTTPBody DescripKon

hfp://IP:5000/api/package GET NULL Fetchthelistofinstalledapps

hfp://IP:5000/api/backup.zip POST Nameoftheapptobackup

Backup

hfp://IP:5000/api/restore.zip

POST Backupdata Restore

Page 43: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Afack#2:InvoketheWebinterface

43

HTTPServeronport5000

•  Disadvantageoftheafacker–  TheHTTPserverisclosedbydefaultandonlyopenwhenweb

backupisused(semi-ac'veafack)–  NeedsINTERNETpermission

•  Advantageoftheafacker–  Canbackuptargetvic'm–  EasiertoimplementthanAfack#1

Page 44: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Afack#3:Accessbackupdataonexternalstorage

44

•  Disadvantageoftheafacker–  Cannotchosetargetvic'm(passiveafack)

•  Advantageoftheafacker–  Easytoimplement

Page 45: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Sec'on3.ImpactandCasestudies

Page 46: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

ExtentoftheADBbackup •  Theappswon’tbebackupbyADBproxywhen

–  UsingAndroidAccountManagerforauthen'ca'on–  Android:allowBackupisfalse

•  IfadeveloperdoesnotspecifyitinAndroidManifest.xml,itistruebydefault!!–  Ourstudyrevealsthatonly~10%appsspecifyitfalse.

46

Page 47: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Howmanyappsaresubjecttotheseafacks? •  DataSetI

–  Topranked100apps•  DataSetII

–  Randomlychosen10CategoriesofappsfromGoolgePlay–  Top10appsfromeachcategory

47Helium

Device 1 Device 2 Web Server

?

Attacker PC

Proxy ②

③ ④ ⑤

Victim App

Page 48: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Howmanyappsaresubjecttotheseafacks?

48

W/OAuthen'ca'on,

83

Infected,80 AccountManager,23

W/OBackup,14

Notinfected,

37

Page 49: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Casestudy#1:FacebookApp

49

POSThfps://b-api.facebook.com/method/auth.loginHTTP/1.1...User-Agent:[FBAN/FB4A;FBAV/9.0.0.26.28;FBBV/2403143;FBDM/email=alice.tester%40gmail.com&password=pwd&sig=452aca050cdce967a699e969076962f0&...

HTTP/1.1200OK...Content-Type:applica'on/json{"session_key":"5.71T...411696","access_token":"CAAAAUaZA...XW8ZD","session_cookies":[{"name":"c_user","value":“100003708411696","expires":"Thu,28May201510:11:48GMT","domain":".facebook.com"},{“name":"xs","value":"201:71TTJlPmwZwjXQ:2:1401271908:10025","expires":"Thu,28May201510:11:48GMT","domain":".facebook.com"},...]...}

Page 50: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Iden'fyingauthen'cators

50

access_token Creden'alsinsubsequentrequests,e.g.,pos'nganewpost

c_user Creden'alsindica'ngtheuser’sloginstate xs

prefs_db

/data/data/com.facebook.katana

Page 51: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Casestudy#2:FacebookSingleSign-on

51

user id/pwd

rpApp Facebook Server

c_user, xs verification

OAuth token

Facebook SDK

? user_info&OAuth token user_info

c_user, xs OAuth token

Authen'ca'on

Authoriza'on

• Authoriza'on:theusercancontrolwhatinforma'oncanbeaccessedbytherpApp.

Page 52: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Authen'catorsbelongingtotwoorigins?

52

FacebookServer

RPapp

FacebookSDK

Android

/app/app/RP

c_user

xs

OAuthtoken

facebook.com

rp.com

• Facebookcompletelydelegatesthesecrecyofitscreden'alstoRPapp?!

Page 53: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Usingc_userandxstologintouser’saccountandcompletelyviolateauthoriza'on…

53

Page 54: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Facebook’sopinion

54

FacebookSecurity

Butcouldn'tamaliciousapplica)onwithaWebViewalsostealusernamesandpasswordsasthey'resubmiKed?Oncetheuserisenteringtheircreden)alsoutsideofatrustedbrowser,there'sveryliKlethatwecandofromourendtoprotectthem.That'swhyit'ssoimportantthatmarketplaceslikeGooglePlayandApple'sAppStoretakestepstoprotectusersfrommaliciousapplica)ons.

Page 55: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Sec'on4.Mi'ga'on

Page 56: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Sugges'onstobackupappdevelopers •  BuildsecureADB-basedBackup

–  Preventbackupprivilegefromexposure•  VerifiedAccesscontroloftheADBproxy•  Secrecyofbackupdata

–  Followtheprincipleofleastprivilege•  Exposeonlybackup/restorefunc'onality

–  ManagelifecycleofADBproxy•  ADBproxyneveroutlivesthemainapp

56

Page 57: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

Sugges'onstowebappdevelopers •  Protectauthen'cators

–  Disableandroid:allowBackupifnotnecessary–  Avoidstoringpassword–  Shortenauthen'catorlife'me

•  Avoidimplementa'onownauthen'catormanagement–  UseAndroidAccountManager

57

Page 58: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

SummaryandTake-away •  Thedilemma

–  Backupfunc'onalityv.s.Confiden'ality–  Pushtheboundaryorbreakthesandbox?

•  ScreenMilker[NDSS’14]

•  Authen'ca'on–  Awarenessofinfrastructure-levelafacks

58

Page 59: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

References •  [CCS’13]Wang,Rui,etal."UnauthorizedorigincrossingonmobileplaQorms:Threatsand

mi'ga'on."•  [CCS’14]Jin,Xing,etal."Codeinjec'onafacksonHTML5-basedmobileapps:Characteriza'on,

detec'onandmi'ga'on."•  [ESORICS’15]Hassanshahi,Behnaz,etal."Web-to-Applica'onInjec'onAfacksonAndroid:

Characteriza'onandDetec'on."•  [IEEES&P’12]Wang,Rui,etal."Signingmeontoyouraccountsthroughfacebookandgoogle:A

traffic-guidedsecuritystudyofcommerciallydeployedsingle-sign-onwebservices.“•  [NDSS’13]Bai,Guangdong,etal.“AUTHSCAN:Automa'cExtrac'onofWebAuthen'ca'on

ProtocolsfromImplementa'ons.”•  [NDSS’14]Lin,Chia-Chi,etal."Screenmilker:Howtomilkyourandroidscreenforsecrets."

59

Page 60: Authen’cator Leakage Through Backup Channels on Androidindex-of.es/Miscellanous/CONF SLIDES AND PAPER/eu... · – How authen’caon creden’als ( authen’cators) are managed

60

Thankyou!

[email protected]