Torbutton and Firefox. Mike Perry Mozilla Brown Bag Jun 22, 2010



Similar documents
Securing the Tor Network

KUB Website Troubleshooting

Bug Report. Date: March 19, 2011 Reporter: Chris Jarabek

Web Tracking for You. Gregory Fleischer

Bank Hacking Live! Ofer Maor CTO, Hacktics Ltd. ATC-4, 12 Jun 2006, 4:30PM

Adobe Flash Player and Adobe AIR security

Using the VMRC Plug-In: Startup, Invoking Methods, and Shutdown on page 4

Ethical Hacking as a Professional Penetration Testing Technique

Is preventing browser fingerprinting a lost cause?

A Server and Browser-Transparent CSRF Defense for Web 2.0 Applications. Slides by Connor Schnaith

Zarafa S/MIME Webaccess Plugin User Manual. Client side configuration and usage.

New Online Banking Guide for FIRST time Login

SAMSUNG SMARTTV: HOW-TO TO CREATING INSECURE DEVICE IN TODAY S WORLD. Sergey Belov

BYOD Guidance: BlackBerry Secure Work Space

Pentesting iphone Applications. Satishb3

Web applications. Web security: web basics. HTTP requests. URLs. GET request. Myrto Arapinis School of Informatics University of Edinburgh

Juniper Secure Analytics Release Notes

Unity web- player issues in browsers & in client system

Hack Yourself First. Troy troyhunt.com

Configuration Guide BES12. Version 12.3

Infor Xtreme Browser References

Instructions for Configuring Your Browser Settings and Online Security FAQ s. ios8 Settings for iphone and ipad app

Project X Mass interception of encrypted connections

Securing Secure Browsers

Legal notices. Legal notices. For legal notices, see

Developing ASP.NET MVC 4 Web Applications MOC 20486

Hacking Web Apps. Detecting and Preventing Web Application Security Problems. Jorge Blanco Alcover. Mike Shema. Technical Editor SYNGRESS

Manual Password Depot Server 8

HOW TO CONFIGURE PASS-THRU PROXY FOR ORACLE APPLICATIONS

BlackBerry Enterprise Server for Microsoft Exchange Version: 5.0 Service Pack: 2. Feature and Technical Overview

INTRUSION DECEPTION CZYLI BAW SIĘ W CIUCIUBABKĘ Z NAMI

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

MEGA Web Application Architecture Overview MEGA 2009 SP4

VMware vcenter Log Insight Getting Started Guide

Eucalyptus User Console Guide

Web Application Hacking (Penetration Testing) 5-day Hands-On Course

DreamFactory & Modus Create Case Study

System Administration Training Guide. S100 Installation and Site Management

Altor Virtual Network Security Analyzer v1.0 Installation Guide

Virtual Data Centre. User Guide

Thomas Röthlisberger IT Security Analyst

An Evaluation of the Google Chrome Extension Security Architecture

The full setup includes the server itself, the server control panel, Firebird Database Server, and three sample applications with source code.

Pwning Intranets with HTML5

Running the Tor client on Mac OS X

Developing ASP.NET MVC 4 Web Applications

Web Application Worms & Browser Insecurity

Configuration Guide BES12. Version 12.1

Citrix StoreFront. Customizing the Receiver for Web User Interface Citrix. All rights reserved.

Cyber Security Workshop Ethical Web Hacking

Complete Cross-site Scripting Walkthrough

Configuration Guide. BlackBerry Enterprise Service 12. Version 12.0

WatchGuard Dimension v1.1 Update 1 Release Notes

Project 2: Web Security Pitfalls

Security Guide. BlackBerry Enterprise Service 12. for ios, Android, and Windows Phone. Version 12.0

Configuration Guide BES12. Version 12.2

Cloudy with a chance of 0-day

FortKnox Personal Firewall

Exchange Administrators will be able to use a more secure authentication mechanism compared with username and password

Drupal Performance Tuning

WhatsUp Gold v16.3 Installation and Configuration Guide

Conducting Web Application Pentests. From Scoping to Report For Education Purposes Only

You can find the installer for the +Cloud Application on your SanDisk flash drive.

Securing ios Applications. Dr. Bruce Sams, OPTIMAbit GmbH

vcloud Director User's Guide

Barracuda Link Balancer Administrator s Guide

Novell Sentinel Log Manager 1.2 Release Notes. 1 What s New. 1.1 Enhancements to Licenses. Novell. February 2011

How to break in. Tecniche avanzate di pen testing in ambito Web Application, Internal Network and Social Engineering

Investment Management System. Connectivity Guide. IMS Connectivity Guide Page 1 of 11

Administering Jive Mobile Apps

ArcGIS Server Security Threats & Best Practices David Cordes Michael Young

Configuration Guide. BES12 Cloud

Reading an sent with Voltage Secur . Using the Voltage Secur Zero Download Messenger (ZDM)

Developing ASP.NET MVC 4 Web Applications Course 20486A; 5 Days, Instructor-led

DEPLOYMENT GUIDE Version 1.1. Deploying the BIG-IP LTM v10 with Citrix Presentation Server 4.5

VMware Software Manager - Download Service User's Guide

Team Members: Christopher Copper Philip Eittreim Jeremiah Jekich Andrew Reisdorph. Client: Brian Krzys

Building native mobile apps for Digital Factory

Repeater. BrowserStack Local. browserstack.com 1. BrowserStack Local makes a REST call using the user s access key to browserstack.

TxEIS Browser Settings

Customize Mobile Apps with MicroStrategy SDK: Custom Security, Plugins, and Extensions

VMware vcenter Support Assistant 5.1.1

Introduction to Mobile Performance Testing

Administering Jive for Outlook

Data Breaches and Web Servers: The Giant Sucking Sound

Sophos Mobile Control SaaS startup guide. Product version: 6

SuperLumin Nemesis. Administration Guide. February 2011

Online Backup Client User Manual Mac OS

Online Backup Client User Manual Mac OS

A Tale of the Weaknesses of Current Client-Side XSS Filtering

Threat Modeling/ Security Testing. Tarun Banga, Adobe 1. Agenda

Are you having trouble logging in with a Username that contains special characters or spaces?

Cross-site site Scripting Attacks on Android WebView

365-Day: HTTPS Cookie Stealing. Mike Perry Riverbed Technology DEFCON 2008

Product Manual. MDM On Premise Installation Version 8.1. Last Updated: 06/07/15

AJAX Storage: A Look at Flash Cookies and Internet Explorer Persistence

WatchGuard Training. Introduction to WatchGuard Dimension

Attack and Penetration Testing 101

Transcription:

Torbutton and Firefox Mike Perry Mozilla Brown Bag Jun 22, 2010

Topics For Today 1. Torbutton's Adversary Model and Requirements 2. Torbutton Functional Overview and Demo 3. Torbutton Architecture & Major Components 4. Comparison to Firefox 3.6 Private Browsing 5. Current Firefox Bugs Impacting Tor Security 6. Awkward XPCOM Interfaces and Inconsistencies 7. Interfaces that would be really, really helpful

Adversary Goals 1. Bypassing proxy settings 2. Correlation of Tor vs Non-Tor 3. History disclosure 4. Location information 5. Misc Anonymity set reduction (Fingerprinting) 6. History records and other on-disk information

Adversary Capabilities (Positioning) Can modify content at exit node or its router Can insert malicious content into ads or websites they control Can target Tor enabled as well as Tor disabled states Can insert malicious content into non-tor traffic At user's local network, ISP, or other upstream router Can seize computers of Tor Users

Adversary Capabilities (Attacks) Can insert javascript into content Attribute-based history disclosure Timezone information, Fingerprinting Browser Exploits Can insert CSS into content JS-free attribute-based history disclosure Can insert plugins into content Proxy bypass, alternate identifier storage Can read and insert cookies Can create cached content (unique identifiers)

Torbutton Requirements 1. Proxy Obedience Obey Tor settings 2. Network Isolation Don't mix Tor+Non-Tor 3. State Separation Keep cookies, cache separate 4. Tor Undiscoverability Hidden while Tor is off 5. Disk Avoidance Don't write Tor state to disk 6. Location Neutrality Don't reveal location 7. Anonymity Set Preservation Mask User Agent 8. Update Safety No insecure updates via Tor 9. Interoperability Don't break other extensions

Major Torbutton Functionality (1) Disable plugins while Tor is enabled docshell.allowplugins Isolate dynamic content per Tor load state docshell.allowjavascript nsicontentpolicy Cookie jars/cookie clearing Component based on code from Colin Jackson Cache management Cache prefs and clearing on toggle Prevent Livemark updates

Major Torbutton Functionality (2) History management global-history;2 and nav-history-service;1 hooking Prevent both CSS and JS attacks + history recording Tor-specific warning before launching apps Hook external-[helper-app/protocol]-service;1 User agent+locale spoofing Timezone spoofing Store+set the TZ environment variable Session Store Blocking in Tor mode Re-register custom copy of nssessionstore.js

TorButton Demo https://www.torproject.org/torbutton/design/#singlestat http://ha.ckers.org/weird/css-history.cgi http://www.tjkdesign.com/articles/css%20pop%20ups/5

Torbutton Architecture Browser overlay Tab tags, plugins, Javascript hooks XPCOM contract hooking Register a new class-id that implements a contracted component with one or more interfaces Copies uninteresting members and methods Doesn't work if components are referenced by class-id Additional Components Cookie Jar handler Map for content windows -> tabs Content Policy

Browser Overlay Per window observers Recieves notification via 'tor_enabled' pref if Tor state changes Updates UI elements accordingly Master Window observers 'unload' notification to transfer control on close Receives notification if proxy settings change Updates browser prefs and Torbutton settings accordingly Receives notification if any Torbutton prefs change Tab tags and Javascript hooks deployed from a docloaderservice;1 listener

Unprivileged Javascript Hooks Deployed from a docloaderservice;1 weblistener Needs to receive event before content JS runs, but after window object is built. calls evalinsandbox with contentwindow.wrappedjsobject as the sandbox Currently only used for window.screen Can be unmasked in FF3.0+, need alternatives

Hooked Components @mozilla.org/browser/global-history;2 Hooks isvisited to lie to Gecko about visted status Hooks adduri to prevent disk writes during Tor @mozilla.org/browser/sessionstore;1 Modified nssessionstore.js to prevent disk writes @mozilla.org/browser/sessionstartup;1 Used for notification of crashes via dorestore() Also doubles as an app-startup observer for Torbutton @mozilla.org/browser/external-protocol-service;1 Warns on external app launch (Firefox fails to do so)

Additional Components @stanford.edu/cookie-jar-selector;2 Sends 'shutdown-cleanse' profile change messages to the cookiemanager Writes out current state's cookies, loads new state's @torproject.org/content-window-mapper;1 Searches all windows for tabbedbrowser that owns a content window and caches the result @torproject.org/cssblocker;1 Obtains the contentwindow from node param and uses window mapper to obtain tabbrowser Checks tab tag against current state for allow/deny

Firefox Private Browsing Mode Subset of Torbutton Requirements Not concerned with proxies, anonymity set, location Anonymity set issues lead to fingerprinting Users can still be tracked via plugins Form fill is a problem HTML5 protocol handlers a problem Certificates+SSL Session Ids are a problem DNS prefetching+livemarks a potential problem External apps/protocols may be a problem

PBM vs Torbutton Torbutton more flexible in allowing the user to persist state if they want This is mainly because of the Toggle-Model Google Incognito Window-Model may be superior This is also why we build Tor Browser Bundle PBM tab save+restore model dodges a lot of issues Torbutton has anti-fingerprinting measures PBM handles/clears: clipboard, permission manager, the SDR, and error console

Combining FF PBM with Torbutton Primarily of interest so that other addons know to be private. Want to preserve Torbutton's options... Wrap nsiobserver::observe to block privatebrowsing emit for: nscookieservice nsnavhistory NsSessionStore Also need to emit an exit followed by an enter if Tor enabled for startup.

PBM+Torbutton Integration Issues Several components directly query the Private Browsing Service, instead of tracking the emits. This makes fine-tuning behavior difficult In particular: Form-fill history cannot be enabled via above hacks History UI is altered. Cannot delete items. Passwords can't be stored Content-type prefs can't be saved Clean way to preserve DOM storage? APIs are not developed enough

Firefox Bugs Impacting Tor nsnsscertificatedb::deletecertificate has race conditions (Bug 435159) Timezone config/hookable JS Date() (Bugs 419598+392274) docshell.allowjavascript does not kill all event handlers (Bug 409737) docshell.allowplugins not honored for direct links (Bug 401296, 282106?) Others: https://www.torproject.org/torbutton/design/#firefoxbugs

Awkward Firefox Interfaces Lack of context in nsiconentpolicy, nsiweblistener, and nsiprotocolproxyfilter contentwindow vs tab.. What browser am I in? getmostrecentwindow has race conditions and getbrowser() not available from components Components.classes & interfaces exposed to content JS. Why? Bug? Allows fingerprinting.. Some components are called only by Class ID Some interfaces not suitable for augmentation by hooking

Interface Wishlist Scriptable nsipluginmanager::register/unregister Better scriptable DOM Storage APIs More fine-grained nsisessionstore interface 'app-crash-recover' event before session restore Scriptable control over OOP plugin system calls Or force network IO through proxy settings! nsiproxyinfo member of tabbrowser to allow pertab proxying Scriptable hooks for to window.screen and Date

What can I do to help Tor? Expose PBM + anti-fingerprinting work as components Torbutton needs finer-grained control Help fix Tor-related Firefox bugs! https://www.torproject.org/torbutton/design/#firefoxbugs Extra bandwidth? Run a node! See Tor source contrib directory for Linux 'tc' prioritization script No need to impact your own traffic flows