protecting users against xss-based password manager abuse

23
Protecting users against XSS-based password manager abuse AsiaCCS 2014, Kyoto Ben Stock, Martin Johns

Upload: ben-stock

Post on 18-Jul-2015

294 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Protecting Users Against XSS-based Password Manager Abuse

Protecting users against XSS-based password manager abuse

AsiaCCS 2014, Kyoto Ben Stock, Martin Johns

Page 2: Protecting Users Against XSS-based Password Manager Abuse

Agenda

● Basics on Password Managers ●  Intention & Implementation

●  Automating attacks on Password Managers

● Analysis of browsers and applications ●  Analysis of built-in password managers

●  Study of password fields on the Web

● Our proposal to a more secure password manager

● Summary & Conclusion

2

Page 3: Protecting Users Against XSS-based Password Manager Abuse

Password managers and attacks against them

Page 4: Protecting Users Against XSS-based Password Manager Abuse

Password managers

●  In a perfect world... one password per site ●  hard task to remember multiple complex passwords

● Solution: password managers ●  take burden to remember these passwords off the user

●  Implementation in two locations 1.  submitting a form è ask user to save password

2.  loading a form è fill in user and password

4

Our Extension Password Manager

host=http://localhost, user=user1, pwd=secret

host=http://localhost, user=user1, pwd=nonce

1

2

3

Page 5: Protecting Users Against XSS-based Password Manager Abuse

Password manager security issues

● Password manager detects form ●  looks up stored credentials

●  inserts them into form (and thus the DOM)

● DOM is accessible by JavaScript ●  both benign code and XSS payloads

● Attacker code may access field data (in clear text)

5

Page 6: Protecting Users Against XSS-based Password Manager Abuse

Automating attacks

● Consider XSS attacker (similarly for network attacker) ●  capable of injecting HTML markup (and JavaScript code)

1.  inject form with user/password fields

2.  wait for the Password Manager to fill out form

3.  retrieve credentials and send them to the attacker

6

Password  Manager  

A.acker  Code  

Page 7: Protecting Users Against XSS-based Password Manager Abuse

Ninja exploitation

7

h.p://ki.enpics.org  

Password  Manager  

A.acker  Code  

Page 8: Protecting Users Against XSS-based Password Manager Abuse

Factors for a successful attack

● URL matching ●  is XSS on any document on the domain sufficent?

●  Form matching ●  can we use a minimal form to easily automate attacks?

● Autofilling in frames ●  can we exploit multiple domains the same time?

● User interaction ●  can we fully automate the attack?

● Autocomplete attribute ●  can a Web site opt out of password storage?

8

Page 9: Protecting Users Against XSS-based Password Manager Abuse

Analysis of browsers and applications

Page 10: Protecting Users Against XSS-based Password Manager Abuse

What we learned thus far...

● Automated attacks are dependent on ●  password manager implementations ●  Web application implementation

●  autocomplete=off!

●  (delivery  over  HTTPS)  

●  Two analyses to conduct ●  Password manager implementations

●  Chrome, Firefox, IE, Safari, Opera and Maxthon

●  Analysis of password fields on the Web ●  Secure delivery, autocomplete, ...

10

Page 11: Protecting Users Against XSS-based Password Manager Abuse

Highlights of built-in password managers*

11

● URL matching ●  only IE stores the URL, Maxthon does not even store protocol or

port

●  Form matching ●  no browser stored structure/target URL

● Autofilling in frames ●  only IE refuses to insert credentials into frames

● User interaction ●  only IE requires user interaction

● Autocomplete attribute ●  Chrome, Opera and Maxthon do not adhere to autocomplete

*refer to the paper for the complete analysis

Page 12: Protecting Users Against XSS-based Password Manager Abuse

Analysis of password fields on the Web

● Crawl of Alexa Top 4000 ●  natural languages matching to detect login forms ●  wrapping getter for password fields to detect access

12

Characteris*c   #  Sites   %  rel.   %  abs.  

Password  field   2,143   100%   53,6%  

Form  on  HTTPS  page   821   38,3%   20,5%  

AcMon  on  HTTPS  page   1,197   55,9%   29,9%  

Autocomplete  off   293   13,6%   7,3%  

JavaScript  access   325   15,1%   8,1%  

Page 13: Protecting Users Against XSS-based Password Manager Abuse

Summarizing our findings

● Password managers are quite relaxed in matching criteria ●  XSS on same-domain is sufficient for all but IE ●  Chrome, Opera and Maxthon don't adhere to autocomplete

● Password fields are meant to work with managers ●  only 13,6% opt-out with autocomplete=off!

èPassword managers need to be protected against XSS attackers

13

Page 14: Protecting Users Against XSS-based Password Manager Abuse

Building a secure password manager

Page 15: Protecting Users Against XSS-based Password Manager Abuse

Mismatch in notion/implementations

● Password Managers should aid in authentication ● Authentication: "Credentials are sent to the server"

●  Implementation: "Credentials are inserted into forms and

then sent to the server"

● We propose to align implementation with notion

15

Page 16: Protecting Users Against XSS-based Password Manager Abuse

Our proposed solution

16

Password

Username Pwd  Mgr   Password

Nonce

Username Username Pwd  Mgr   Password

Username

Nonce

Username

Pwd  Mgr  

Page 17: Protecting Users Against XSS-based Password Manager Abuse

Constraints for this approach

● Potential pitfalls ●  Attacker changes a form's target

●  posting data to his own server / a page that reflects the content

●  Attacker changes method to GET ●  .. and subsequently reads the URL to which a frame was redirected

● Proposed constraints ●  strict checking of form target URL ●  exchanging nonce only in POST parameters

17

Page 18: Protecting Users Against XSS-based Password Manager Abuse

PoC Implementation

Our Extension Password Manager

host=http://localhost, user=user1, pwd=secret

host=http://localhost, user=user1, pwd=nonce

1

2

3

18

Page 19: Protecting Users Against XSS-based Password Manager Abuse

PoC Implementation

POST /login.php Data: user=user1&pwd=nonce

POST /login.php Data: user=user1&pwd=secret

Our Extension POST /search.php Data: user=user1&query=nonce

POST /search.php Data: user=user1&query=nonce

19

Page 20: Protecting Users Against XSS-based Password Manager Abuse

Functional evaluation

●  325 domains used JavaScript to access password fields ●  229 domains only check that field is not empty ●  96 domains send password via XHR

●  23 domains hash password before sending it out

●  1 domain applies base64 encoding

●  6 domains send password in GET parameters

●  30/2143 domains have issues with our solution ●  98,6% of all domains we analyzed work just fine ●  storing passwords in XHRs is not currently supported by

browsers

20

Page 21: Protecting Users Against XSS-based Password Manager Abuse

Summary and Conclusion

Page 22: Protecting Users Against XSS-based Password Manager Abuse

Summary & Conclusion

● Most current implementations of password managers allow for automatic stealing of passwords

● Cause: passwords are inserted into forms ●  not into outgoing request

● We propose alignment of notion and implementation ●  PoC implemented as a Firefox extension ●  working with 98,6% of domains we analyzed

22

Page 23: Protecting Users Against XSS-based Password Manager Abuse

Thank you for your attention! Special thanks to my student workers Eric Schmall and Armin Stock

●  @kcotsneb ●  http://kittenpics.org ●  [email protected]