A11y A%acks: Exploi1ng Accessibility in Opera1ng Systems - - PowerPoint PPT Presentation

a11y a ks exploi1ng accessibility in opera1ng systems
SMART_READER_LITE
LIVE PREVIEW

A11y A%acks: Exploi1ng Accessibility in Opera1ng Systems - - PowerPoint PPT Presentation

A11y A%acks: Exploi1ng Accessibility in Opera1ng Systems Yeongjin Jang , Chengyu Song, Simon P. Chung, Tielei Wang, and Wenke Lee Georgia Ins;tute of


slide-1
SLIDE 1

A11y ¡A%acks: ¡Exploi1ng ¡ Accessibility ¡in ¡Opera1ng ¡Systems ¡ ¡

Yeongjin ¡Jang, ¡Chengyu ¡Song, ¡ Simon ¡P. ¡Chung, ¡Tielei ¡Wang, ¡ and ¡Wenke ¡Lee ¡

Georgia ¡Ins;tute ¡of ¡Technology ¡

¡

1 ¡

slide-2
SLIDE 2

Mo;va;on ¡

  • Are ¡these ¡things ¡implemented ¡in ¡secure ¡way? ¡

2 ¡

– Assump;on: ¡input ¡comes ¡from ¡the ¡user ¡

slide-3
SLIDE 3

Mo;va;on ¡

  • Are ¡these ¡things ¡implemented ¡in ¡secure ¡way? ¡

3 ¡

– Assump;on: ¡output ¡is ¡only ¡visible ¡to ¡the ¡user ¡

slide-4
SLIDE 4

Computer ¡Accessibility ¡(a11y) ¡

  • For ¡the ¡person ¡with ¡disabili;es ¡

– Visually ¡impaired ¡

  • Text-­‑to-­‑Speech ¡reader ¡

– Hearing ¡impaired ¡

  • Cap;oning ¡service ¡

– Motor ¡impaired ¡

  • Voice ¡Commander ¡

– Keyboard ¡impaired ¡

  • On-­‑screen ¡keyboard ¡

4 ¡

slide-5
SLIDE 5

Accessibility ¡for ¡Everyone ¡

  • For ¡ease ¡of ¡access ¡

– Book ¡reader ¡

  • Text-­‑to-­‑Speech ¡reader ¡

– At ¡noisy ¡sports ¡bar ¡

  • Cap;oning ¡service ¡

– While ¡driving ¡

  • Voice ¡Commander ¡

– On ¡touchscreen ¡devices ¡

  • On-­‑screen ¡keyboard ¡

5 ¡

slide-6
SLIDE 6

Accessibility ¡Library ¡

  • OS ¡opens ¡API ¡for ¡developing ¡A11y ¡features ¡

– Available ¡in ¡Windows, ¡OS ¡X, ¡Ubuntu, ¡iOS, ¡Android, ¡

  • etc. ¡
  • Capability ¡of ¡A11y ¡Library ¡

– Read ¡UI ¡states ¡of ¡the ¡system ¡ – Perform ¡ac;ons ¡on ¡UI ¡elements ¡

  • Click ¡
  • seZext() ¡
  • etc. ¡

6 ¡

slide-7
SLIDE 7

Security ¡Implica;ons ¡of ¡A11y ¡

  • Creates ¡new ¡I/O ¡Path ¡
  • Break ¡assump;ons ¡on ¡I/O ¡

– Input ¡comes ¡from ¡the ¡user ¡

  • Through ¡a11y ¡interface, ¡a ¡program ¡can ¡send ¡input ¡

event ¡to ¡the ¡applica;on. ¡

– Output ¡can ¡only ¡be ¡seen ¡by ¡the ¡user ¡

  • A11y ¡interface ¡allows ¡to ¡a ¡program ¡can ¡read ¡output ¡of ¡

the ¡other ¡applica;ons ¡

7 ¡

slide-8
SLIDE 8

Tradi;onal ¡I/O ¡Paths ¡in ¡OS ¡

8 ¡

App ¡ App ¡ Ouptut ¡ Input ¡ Handler ¡ Regular ¡ Input ¡Devices ¡ Screen ¡Output ¡ OS ¡

slide-9
SLIDE 9

A11y ¡Added ¡New ¡I/O ¡Paths ¡to ¡OS ¡

9 ¡

Launch ¡ Google.com! ¡

  • 1. ¡User ¡Speaks ¡
  • 2. ¡Voice ¡commander ¡translate ¡it ¡

into ¡machine ¡command ¡

  • 3. ¡OS ¡delivers ¡command ¡to ¡the ¡app ¡

(a11y ¡library) ¡

  • 4. ¡App ¡is ¡controlled ¡by ¡Voice ¡

1) ¡Click ¡address ¡bar ¡ 2) ¡Type ¡google.com ¡

slide-10
SLIDE 10

A11y ¡Added ¡New ¡I/O ¡Paths ¡to ¡OS ¡

10 ¡

Process ¡ Output ¡ Assis1ve ¡Technology ¡ OS ¡ App ¡ Process ¡ Input ¡ App ¡ Ouptut ¡ Input ¡ Handler ¡ A11y ¡ Library ¡

  • Alt. ¡input ¡through ¡a11y ¡

Regular ¡ Input ¡Devices ¡ Screen ¡Output ¡

Original ¡I/O ¡path ¡

A11y ¡Input ¡ (Voice) ¡

slide-11
SLIDE 11

A11y ¡Added ¡New ¡I/O ¡Paths ¡to ¡OS ¡

11 ¡

Process ¡ Output ¡ Assis1ve ¡Technology ¡ OS ¡ App ¡ Process ¡ Input ¡ App ¡ Ouptut ¡ Input ¡ Handler ¡ A11y ¡ Library ¡

  • Alt. ¡output ¡through ¡a11y ¡

Regular ¡ Input ¡Devices ¡ Screen ¡Output ¡

Original ¡I/O ¡path ¡

A11y ¡Output ¡ (Speaker) ¡

slide-12
SLIDE 12

Required ¡Security ¡Checks ¡

12 ¡

  • Security ¡checks ¡must ¡be ¡placed ¡to ¡make ¡the ¡

assump;on ¡hold ¡

– Does ¡a11y ¡input ¡really ¡comes ¡from ¡the ¡user? ¡

  • Checks ¡can ¡be ¡placed ¡in ¡three ¡different ¡level ¡

– Assis;ve ¡Technology ¡(processor ¡of ¡alterna;ve ¡I/O) ¡ – Opera;ng ¡System ¡ – Applica;on ¡(protect ¡themselves ¡from ¡alterna;ve ¡ I/O) ¡

slide-13
SLIDE 13

At ¡Assis;ve ¡Technology ¡(AT) ¡Level ¡

13 ¡

Launch ¡ Google.com! ¡

Required ¡checks ¡at ¡AT ¡level ¡

¡Is ¡the ¡voice ¡from ¡real ¡human? ¡

¡ ¡If ¡not, ¡machine ¡can ¡access ¡it! ¡

¡Is ¡the ¡voice ¡matched ¡with ¡registered ¡user? ¡

¡ ¡If ¡not, ¡any ¡other ¡human ¡user ¡can ¡access ¡it! ¡

slide-14
SLIDE 14

At ¡OS ¡Level ¡

14 ¡

Required ¡checks ¡at ¡OS ¡level ¡

¡Is ¡this ¡assis;ve ¡technology ¡allowed ¡to ¡access ¡a11y? ¡

¡ ¡If ¡not, ¡any ¡program ¡(possibly ¡malware) ¡can ¡access ¡it! ¡

¡ ¡

slide-15
SLIDE 15

At ¡Applica;on ¡Level ¡

15 ¡

Required ¡checks ¡at ¡applica;on ¡level ¡

¡Should ¡I ¡react ¡to ¡input ¡from ¡a11y ¡features? ¡

¡ ¡Do ¡not ¡allow ¡to ¡perform ¡security ¡sensi;ve ¡UI ¡ac;ons! ¡

¡ ¡

slide-16
SLIDE 16

Evalua;ng ¡A11y ¡Security ¡in ¡OSes ¡

  • Objec;ve ¡

– Check ¡OSs ¡if ¡they ¡are ¡secure ¡under ¡aZacks ¡ through ¡new ¡I/O ¡path ¡created ¡by ¡suppor;ng ¡A11y ¡

  • Method ¡

– Analyze ¡OS ¡for ¡accessibility ¡features ¡

  • Programma;c ¡access ¡to ¡I/O ¡event ¡
  • Voice ¡commander, ¡password ¡viewer, ¡etc. ¡

– Test ¡existence ¡of ¡required ¡security ¡checks ¡

  • If ¡not, ¡try ¡to ¡launch ¡an ¡aZack ¡

16 ¡

slide-17
SLIDE 17

Evalua;ng ¡A11y ¡Security ¡in ¡OSes ¡

  • Target ¡

– 4 ¡Major ¡OSes ¡

  • MS ¡Windows ¡8.1, ¡Ubuntu ¡14.04 ¡Linux ¡
  • iOS ¡6, ¡and ¡Android ¡4.4 ¡
  • Focus ¡

– Try ¡to ¡evaluate ¡OS ¡default ¡sehngs ¡

  • AT-­‑level ¡check ¡

– Voice ¡Commander ¡

  • OS-­‑level ¡check ¡

– Programma;cally ¡controllable ¡I/O ¡

  • App-­‑level ¡check ¡

– We ¡do ¡not ¡perform ¡the ¡evalua;on… ¡

17 ¡

slide-18
SLIDE 18

Evalua;on ¡on ¡A11y ¡Input ¡

18 ¡

Plajorm ¡ AT-­‑level ¡check ¡ (voice ¡commander) ¡ OS-­‑level ¡ Security ¡Check ¡ Vulnerable? ¡ Windows ¡ None ¡ (Speech ¡Recogni;on) ¡ UIPI ¡ YES ¡ Ubuntu ¡ N/A ¡ None ¡ YES ¡ iOS ¡6 ¡ None ¡ (Siri) ¡ None ¡ YES ¡ Android ¡ Voice ¡Authen;ca;on ¡ (Moto ¡X) ¡ User ¡Sehngs ¡ Required ¡ YES ¡

slide-19
SLIDE 19

Evalua;on ¡on ¡A11y ¡Output ¡

19 ¡

Plajorm ¡ Reading ¡of ¡ UI ¡Structure ¡ A11y ¡leaks ¡on ¡ screenshot ¡ Password ¡ protec;on ¡ Vulnerable? ¡ Windows ¡ UIPI ¡ Yes ¡ Yes ¡ YES ¡ Ubuntu ¡ None ¡ No ¡ Yes, ¡but ¡ incomplete ¡ YES ¡ iOS ¡6 ¡ N/A ¡ Yes ¡ N/A ¡ YES ¡ Android ¡ User ¡Sehngs ¡ Required ¡ No ¡ User ¡Sehngs ¡ Required ¡ YES ¡

slide-20
SLIDE 20

AZacks ¡for ¡missed ¡checkpoint ¡

  • We ¡tries ¡to ¡launch ¡aZacks ¡if ¡any ¡of ¡security ¡check ¡is ¡
  • missed. ¡
  • We ¡found ¡12 ¡possibly ¡vulnerable ¡points. ¡

– Windows ¡(3) ¡

  • 2 ¡Privilege ¡escala;on, ¡1 ¡password ¡leak ¡

– Linux ¡(2) ¡

  • Bypassing ¡process ¡boundary, ¡password ¡leak ¡

– iOS ¡(4) ¡

  • Bypassing ¡sandbox ¡and ¡authen;ca;on ¡
  • Privilege ¡escala;on, ¡Password ¡leak ¡

– Android ¡(3) ¡

  • Bypassing ¡sandbox ¡and ¡authen;ca;on ¡
  • password ¡leak ¡

20 ¡

slide-21
SLIDE 21

AZacks ¡on ¡Voice ¡Commander ¡

  • Voice ¡commander ¡accepts ¡non-­‑human ¡voice ¡

– Any ¡app ¡capable ¡to ¡play ¡audio ¡can ¡send ¡command ¡

  • Broken ¡assump;on: ¡input ¡comes ¡from ¡the ¡user ¡

– No ¡authen;ca;on ¡

  • Windows ¡Speech ¡Recogni;on ¡
  • Siri ¡
  • Google ¡Now ¡

– Voice ¡authen;ca;on ¡in ¡presence ¡

  • Moto ¡X ¡

– Vulnerable ¡to ¡replay ¡aZack ¡ ¡

21 ¡

slide-22
SLIDE 22

Privilege ¡Escala;on ¡in ¡Windows ¡

  • Malware ¡runs ¡as ¡normal ¡user ¡can ¡execute ¡

Speech ¡Recogni;on ¡

  • Speech ¡Recogni;on ¡automa;cally ¡launches ¡

with ¡administra;ve ¡privilege ¡

– Let ¡A11y ¡user ¡control ¡admin ¡stuffs… ¡

  • Malware ¡can ¡get ¡admin ¡privilege ¡by ¡sending ¡

voice ¡command ¡to ¡Speech ¡Recogni;on ¡

22 ¡

slide-23
SLIDE 23

Take ¡Control ¡Over ¡Other ¡Apps ¡

  • A11y ¡library ¡allows ¡a ¡program ¡send ¡input ¡to ¡

the ¡other ¡apps ¡

– Broken ¡assump;on: ¡input ¡comes ¡from ¡the ¡user ¡

  • Bypassing ¡app ¡sandbox ¡

– iOS ¡and ¡Android ¡

  • Sending ¡programma;c ¡input ¡to ¡the ¡target ¡app ¡

23 ¡

slide-24
SLIDE 24

Remote ¡View ¡

24 ¡

slide-25
SLIDE 25

Stealing ¡Password! ¡

  • Visual ¡Feedback ¡

– Accessibility ¡

  • There ¡is ¡no ¡tac;le ¡feedback ¡on ¡touch-­‑screen ¡devices. ¡
  • To ¡reduce ¡typo, ¡OS ¡vendors ¡applied ¡visual ¡feedback. ¡
  • Assumes ¡only ¡user ¡can ¡see ¡it. ¡

– Problem ¡

  • Exis;ng ¡feature ¡breaks ¡its ¡security ¡

– ¡Screenshot! ¡ » iOS6: ¡Private ¡API ¡allows ¡screenshot ¡ » Windows: ¡no ¡restric;on ¡at ¡all ¡

25 ¡

slide-26
SLIDE 26

Stealing ¡Password! ¡

  • Applying ¡image ¡processing ¡on ¡screenshot ¡

leaks ¡password ¡string. ¡

26 ¡

A) ¡Before ¡clicking ¡Eye ¡ B) ¡Aler ¡clicking ¡Eye ¡

slide-27
SLIDE 27

gksudo ¡password ¡dialog ¡

27 ¡

slide-28
SLIDE 28

Stealing ¡Password ¡2 ¡

  • Two ¡implementa;on ¡for ¡the ¡same ¡ac;on ¡

– GTK ¡

  • Pressing ¡Ctrl-­‑C ¡(copy) ¡has ¡no ¡effect ¡on ¡password ¡

editbox ¡

– Security ¡check ¡protects ¡the ¡content ¡

– ATK ¡

  • Calling ¡geZext() ¡

– Throws ¡Not ¡Implemented ¡excep;on ¡

  • Calling ¡copytext() ¡

– Copy ¡password ¡into ¡clipboard ¡ » Missing ¡security ¡checks… ¡

28 ¡

slide-29
SLIDE 29

Vendor ¡Responses ¡

  • Apple ¡

– Made ¡UIAutoma;on ¡inaccessible ¡from ¡regular ¡ apps ¡

  • Requires ¡special ¡permission ¡to ¡access ¡the ¡library ¡

– Disabled ¡private ¡API ¡for ¡taking ¡screenshot ¡

  • GNOME ¡ATK ¡

– Acknowledges ¡finding ¡as ¡vulnerability ¡ – Tries ¡to ¡fix ¡in ¡GNOME ¡3.14 ¡

29 ¡

slide-30
SLIDE 30

Vendor ¡Responses ¡

  • Android ¡

– AccessibilityService ¡is ¡their ¡feature… ¡

  • “Does ¡not ¡consider ¡these ¡feature ¡requests ¡as ¡

vulnerabili6es” ¡

  • Windows ¡

– Does ¡not ¡consider ¡UAC ¡bypass ¡as ¡security ¡ vulnerability ¡

30 ¡

slide-31
SLIDE 31

Discussions ¡

  • Root-­‑cause ¡

– Maximizing ¡Compa;bility ¡

  • The ¡UI ¡is ¡expected ¡to ¡run ¡as ¡if ¡it ¡gets ¡the ¡real ¡input ¡on ¡

a11y ¡request ¡

  • Programma;c ¡input ¡processed ¡as ¡same ¡as ¡the ¡real ¡one ¡

31 ¡

Real ¡Touch ¡Click ¡ A11y ¡Click ¡ Intermediate ¡func ¡

  • nTouchEvent() ¡

performA11yAc;onInternal() ¡ Final ¡handler ¡in ¡UI ¡ performClick() ¡ performClick() ¡

slide-32
SLIDE 32

Discussions ¡

  • Root-­‑cause ¡

– Problems ¡when ¡it ¡handled ¡differently ¡

  • On ¡gksudo ¡dialog, ¡copytext() ¡works ¡while ¡Ctrl-­‑C ¡does ¡

not ¡work! ¡

  • New ¡implementa;on ¡could ¡miss ¡security ¡checks. ¡

32 ¡

GTK::CopyText() ¡{ ¡ ¡if(text-­‑>isVisible) ¡ ¡ ¡return ¡text ¡ ¡else ¡ ¡ ¡return ¡null; ¡ } ¡ ¡ ¡ ATK::CopyText() ¡{ ¡ ¡… ¡ ¡return ¡text ¡ ¡… ¡ } ¡ ¡ ¡

slide-33
SLIDE 33

Discussions ¡

  • Root-­‑cause ¡

– No ¡correct ¡authen;ca;on ¡for ¡alterna;ve ¡input ¡

  • Any ¡program ¡can ¡send ¡fake ¡voice… ¡

– Technical ¡& ¡economical ¡difficulty ¡

  • Possible ¡solu;on ¡for ¡voice ¡authen;ca;on ¡

– Liveness ¡check ¡ – Challenge-­‑response ¡

  • Prac;cal ¡issues ¡

– Processing ¡power ¡ – Power ¡consump;on ¡ – etc ¡

33 ¡

slide-34
SLIDE 34

Discussions ¡

  • Root-­‑cause ¡

– Weak ¡access ¡control ¡on ¡a11y ¡libraries ¡

  • Windows: ¡None ¡
  • OS ¡X ¡: ¡None ¡
  • Ubuntu: ¡None ¡
  • iOS ¡6 ¡: ¡None ¡-­‑> ¡patched ¡in ¡iOS ¡7 ¡
  • Android: ¡User ¡sehngs ¡

– Not ¡enough… ¡

34 ¡

slide-35
SLIDE 35

Android ¡

  • Sehngs ¡for ¡a11y ¡

– AccessibilityService ¡is ¡ available ¡upon ¡user ¡ config ¡

  • User ¡must ¡set ¡the ¡

applica;on ¡as ¡accessibility ¡ service ¡

35 ¡

slide-36
SLIDE 36

Android ¡

  • App ¡uses ¡A11y ¡

– A ¡non-­‑assis;ve ¡ technology ¡uses ¡a11y ¡

  • For ¡suppor;ng ¡restricted ¡

UI ¡features… ¡

  • Downloaded ¡more ¡than ¡

10 ¡million ¡;mes… ¡

36 ¡

slide-37
SLIDE 37

Discussions ¡

  • Recommenda;ons ¡

– Apply ¡access ¡control ¡on ¡a11y ¡library ¡ – Provide ¡mechanism ¡to ¡dis;nguish ¡a11y ¡I/O ¡from ¡ the ¡real ¡I/O ¡requests ¡ – For ¡the ¡security ¡sensi;ve ¡UIs, ¡get ¡input ¡from ¡ physical ¡devices, ¡and ¡not ¡others. ¡ ¡

37 ¡

slide-38
SLIDE 38

Conclusion ¡

  • Accessibility ¡in ¡OS ¡

– Suppor;ng ¡accessibility ¡creates ¡new ¡I/O ¡path ¡to ¡ the ¡OS ¡ – Security ¡mechanisms ¡in ¡OS ¡has ¡trust ¡in ¡I/O ¡

  • The ¡assump;on ¡would ¡not ¡valid ¡if ¡a11y ¡I/O ¡treated ¡as ¡

same ¡as ¡the ¡real ¡one ¡

– We ¡found ¡12 ¡aZacks… ¡ – OSes ¡need ¡to ¡be ¡design ¡a11y ¡securely ¡against ¡ these ¡aZacks. ¡ ¡

38 ¡

slide-39
SLIDE 39

Ques;ons? ¡

  • Q&A ¡

39 ¡