Web Security Computer Security Peter Reiher December 9, 2014 - - PowerPoint PPT Presentation

web security computer security peter reiher december 9
SMART_READER_LITE
LIVE PREVIEW

Web Security Computer Security Peter Reiher December 9, 2014 - - PowerPoint PPT Presentation

Web Security Computer Security Peter Reiher December 9, 2014 Lecture 15 Page 1 CS 136, Fall 2014 Web Security Lots of Internet traffic is related to the web Much of it is financial in nature Also lots of private information flow


slide-1
SLIDE 1

Lecture 15 Page 1 CS 136, Fall 2014

Web Security Computer Security Peter Reiher December 9, 2014

slide-2
SLIDE 2

Lecture 15 Page 2 CS 136, Fall 2014

Web Security

  • Lots of Internet traffic is related to the

web

  • Much of it is financial in nature
  • Also lots of private information flow

around web applications

  • An obvious target for attackers
slide-3
SLIDE 3

Lecture 15 Page 3 CS 136, Fall 2014

The Web Security Problem

  • Many users interact with many servers
  • Most parties have little other relationship
  • Increasingly complex things are moved via the

web

  • No central authority
  • Many developers with little security experience
  • Many critical elements originally designed with no

thought to security

  • Sort of a microcosm of the overall security

problem

slide-4
SLIDE 4

Lecture 15 Page 4 CS 136, Fall 2014

Aspects of the Web Problem

slide-5
SLIDE 5

Lecture 15 Page 5 CS 136, Fall 2014

Who Are We Protecting?

The server From the client The client From the server The clients From each other A client’s interaction with one server From his interaction with another server Everyone From the network

slide-6
SLIDE 6

Lecture 15 Page 6 CS 136, Fall 2014

What Are We Protecting?

  • The client’s private data
  • The server’s private data
  • The integrity (sometimes also secrecy)
  • f their transactions
  • The client and server’s machines
  • Possibly server availability

– For particular clients?

slide-7
SLIDE 7

Lecture 15 Page 7 CS 136, Fall 2014

Some Real Threats

  • Buffer overflows and other compromises

– Client attacks server

  • Web based social engineering attacks

– Client or server attacks client

  • SQL injection

– Client attacks server

  • Malicious downloaded code

– Server attacks client

slide-8
SLIDE 8

Lecture 15 Page 8 CS 136, Fall 2014

More Threats

  • Cross-site scripting

– Clients attack each other

  • Threats based on non-transactional

nature of communication – Client attacks server

  • Denial of service attacks

– Threats on server availability (usually)

slide-9
SLIDE 9

Lecture 15 Page 9 CS 136, Fall 2014

Yet More Threats

  • Browser security

– Protecting interactions from one site from those with another – One server attacks client’s interactions with another

  • Data transport issues

– The network attacks everyone else

  • Certificates and trust issues

– Varied, but mostly server attacks client

slide-10
SLIDE 10

Lecture 15 Page 10 CS 136, Fall 2014

Compromise Threats

  • Much the same as for any other

network application

  • Web server might have buffer overflow

– Or other remotely usable flaw

  • Not different in character from any
  • ther application’s problem

– And similar solutions

slide-11
SLIDE 11

Lecture 15 Page 11 CS 136, Fall 2014

What Makes It Worse

  • Web servers are complex
  • They often also run supporting code

– Which is often user-visible

  • Large, complex code base is likely to

contain such flaws

  • Nature of application demands

allowing remote use

slide-12
SLIDE 12

Lecture 15 Page 12 CS 136, Fall 2014

Solution Approaches

  • Patching
  • Use good code base
  • Minimize code that the server executes
  • Maybe restrict server access

– When that makes sense

  • Lots of testing and evaluation

– Many tools for web server evaluation

slide-13
SLIDE 13

Lecture 15 Page 13 CS 136, Fall 2014

Compromising the Browser

  • Essentially, the browser is an operating system

– You can do almost anything through a browser – It shares resources among different “processes”

  • But it does not have most OS security features
  • While having some of the more dangerous OS

functionality – Like arbitrary extensibility – And supporting multiple simultaneous mutually untrusting processes

slide-14
SLIDE 14

Lecture 15 Page 14 CS 136, Fall 2014

But My Browser Must Be OK . . .

  • After all, I see the little lock icon at the

bottom of the page

  • Doesn’t that mean I’m safe?
  • Alas, no
  • What does that icon mean, and what is

the security implication?

slide-15
SLIDE 15

Lecture 15 Page 15 CS 136, Fall 2014

The Lock Icon

  • This icon is displayed by your browser

when a digital certificate checks out

  • A web site provided a certificate

attesting to its identity

  • The certificate was properly signed by

someone your browser trusts

  • That’s all it means
slide-16
SLIDE 16

Lecture 15 Page 16 CS 136, Fall 2014

What Are the Implications?

  • All you know is that the web site is who it

claims to be – Which might not be who you think it is – Maybe it’s amozon.com, not amazon.com – Would you notice the difference?

  • Only to the extent that a trusted signer

hasn’t been careless or compromised – Some have been, in the past

slide-17
SLIDE 17

Lecture 15 Page 17 CS 136, Fall 2014

Another Browser Security Issue

  • What if you’re accessing your bank

account in one browser tab

  • And a site showing silly videos of cats

in another?

  • What if one of those videos contains an

attack script?

  • Can the evil cat script steal your bank

account number?

slide-18
SLIDE 18

Lecture 15 Page 18 CS 136, Fall 2014

Same Origin Policy

  • Meant to foil such attacks
  • Built into all modern browsers

– And also things like Flash

  • Basically, pages from a single origin

can access each other’s stuff

  • Pages from a different origin cannot
  • Particularly relevant to cookies
slide-19
SLIDE 19

Lecture 15 Page 19 CS 136, Fall 2014

Web Cookies

  • Essentially, data a web site asks your

browser to store

  • Sent back to that web site when you

ask for another service from it

  • Used to set up sessions and maintain

state (e.g., authentication status)

  • Lots of great information about your

interactions with sites in the cookies

slide-20
SLIDE 20

Lecture 15 Page 20 CS 136, Fall 2014

Same Origin Policy and Cookies

  • Script from one domain cannot get the

cookies from another domain – Prevents the evil cat video from sending authenticated request to empty your bank account

  • Domain defined by DNS domain

name, application protocol – Sometimes also port

slide-21
SLIDE 21

Lecture 15 Page 21 CS 136, Fall 2014

SQL Injection Attacks

  • Many web servers have backing

databases – Much of their information stored in a database

  • Web pages are built (in part) based on

queries to a database – Possibly using some client input . . .

slide-22
SLIDE 22

Lecture 15 Page 22 CS 136, Fall 2014

SQL Injection Mechanics

  • Server plans to build a SQL query
  • Needs some data from client to build it

– E.g., client’s user name

  • Server asks client for data
  • Client, instead, provides a SQL fragment
  • Server inserts it into planned query

– Leading to a “somewhat different” query

slide-23
SLIDE 23

Lecture 15 Page 23 CS 136, Fall 2014

An Example

“select * from mysql.user where username = ‘ “ . $uid . “ ‘ and password=password(‘ “. $pwd “ ‘);”

  • Intent is that user fills in his ID and

password

  • What if he fills in something else?

‘or 1=1; -- ‘

slide-24
SLIDE 24

Lecture 15 Page 24 CS 136, Fall 2014

What Happens Then?

  • $uid has the string substituted, yielding

“select * from mysql.user where username = ‘ ‘ or 1=1; -- ‘ ‘ and password=password(‘ “. $pwd “ ‘);”

  • This evaluates to true

– Since 1 does indeed equal 1 – And -- comments out rest of line

  • If script uses truth of statement to determine

valid login, attacker has logged in

slide-25
SLIDE 25

Lecture 15 Page 25 CS 136, Fall 2014

Basis of SQL Injection Problem

  • Unvalidated input
  • Server expected plain data
  • Got back SQL commands
  • Didn’t recognize the difference and went

ahead

  • Resulting in arbitrary SQL query being sent

to its database – With its privileges

  • Unvalidated input
slide-26
SLIDE 26

Lecture 15 Page 26 CS 136, Fall 2014

Some Example Attacks

  • 130 million credit card numbers stolen in

2009 with SQL injection attack

  • Used to steal 1 million Sony passwords
  • Yahoo lost 450,000 passwords to a SQL

injection in 2012

  • Successful SQL injections on Bit9, British

Royal Navy, PBS

  • Ruby on Rails and Drupal content

management system had ones recently

slide-27
SLIDE 27

Lecture 15 Page 27 CS 136, Fall 2014

Solution Approaches

  • Carefully examine all input
  • Use database access controls
  • Avoid using SQL in web interfaces
  • Parameterized variables
slide-28
SLIDE 28

Lecture 15 Page 28 CS 136, Fall 2014

Examining Input for SQL

  • SQL is a well defined language
  • Generally web input shouldn’t be SQL
  • So look for it and filter it out
  • Problem: proliferation of different

input codings makes the problem hard

  • Problem: some SQL control characters

are widely used in real data – E.g., apostrophe in names

slide-29
SLIDE 29

Lecture 15 Page 29 CS 136, Fall 2014

Using Database Access Controls

  • SQL is used to access a database
  • Most databases have decent access

control mechanisms

  • Proper use of them limits damage of

SQL injections

  • Problem: may be hard to set access

controls to prohibit all dangerous queries

slide-30
SLIDE 30

Lecture 15 Page 30 CS 136, Fall 2014

Avoid SQL in Web Interfaces

  • Never build a SQL query based on user

input to web interface

  • Instead, use predefined queries that

users can’t influence

  • Typically wrapped by query-specific

application code

  • Problem: may complicate

development

slide-31
SLIDE 31

Lecture 15 Page 31 CS 136, Fall 2014

Use Parameterized Variables

  • SQL allows you to set up code so

variables are bound parameters

  • Parameters of this kind aren’t

interpreted as SQL

  • Pretty much solves the problem, and is

probably the best solution

slide-32
SLIDE 32

Lecture 15 Page 32 CS 136, Fall 2014

Malicious Downloaded Code

  • The web relies heavily on downloaded code

– Full language and scripting language – Mostly scripts

  • Instructions downloaded from server to

client – Run by client on his machine – Using his privileges

  • Without defense, script could do anything
slide-33
SLIDE 33

Lecture 15 Page 33 CS 136, Fall 2014

Types of Downloaded Code

  • Java

– Full programming language

  • Scripting languages

– JavaScript – VB Script – ECMAScript – XSLT

slide-34
SLIDE 34

Lecture 15 Page 34 CS 136, Fall 2014

Drive-By Downloads

  • Often, user must request that

something be downloaded

  • But not always

– Sometimes visiting a page or moving a cursor causes downloads

  • These are called drive-by downloads

– Since the user is screwed just by visiting the page

slide-35
SLIDE 35

Lecture 15 Page 35 CS 136, Fall 2014

Solution Approaches

  • Disable scripts in your browser
  • Use secure scripting languages
  • Isolation mechanisms
  • Virus protection and blacklist

approaches

  • Parameterized variables
slide-36
SLIDE 36

Lecture 15 Page 36 CS 136, Fall 2014

Disabling Scripts

  • Browsers (or plug-ins) can disable

scripts – Selectively, based on web site

  • The bad script is thus not executed
  • Problem: Cripples much good web

functionality – So users re-enable scripting

slide-37
SLIDE 37

Lecture 15 Page 37 CS 136, Fall 2014

Use Secure Scripting Languages

  • Some scripting languages are less

prone to problems than others

  • Write your script in those
  • Problem: secure ones aren’t popular
  • Problem: many bad things can still be

done with “secure” languages

  • Problem: can’t force others to write

their scripts in these languages

slide-38
SLIDE 38

Lecture 15 Page 38 CS 136, Fall 2014

Isolation Mechanisms

  • Architecturally arrange for all

downloaded scripts to run in clean VM – Limiting the harm they can do

  • Problem: they might be able to escape

the VM

  • Problem: what if a legitimate script

needs to do something outside its VM?

slide-39
SLIDE 39

Lecture 15 Page 39 CS 136, Fall 2014

Signatures and Blacklists

  • Identify known bad scripts
  • Develop signatures for them
  • Put them on a blacklist and distribute it

to others

  • Before running downloaded script,

automatically check blacklist

  • Problem: same as for virus protection
slide-40
SLIDE 40

Lecture 15 Page 40 CS 136, Fall 2014

Cross-Site Scripting

  • XSS
  • Many sites allow users to upload information

– Blogs, photo sharing, Facebook, etc. – Which gets permanently stored – And displayed

  • Attack based on uploading a script
  • Other users inadvertently download it

– And run it . . .

slide-41
SLIDE 41

Lecture 15 Page 41 CS 136, Fall 2014

The Effect of XSS

  • Arbitrary malicious script executes on

user’s machine

  • In context of his web browser

– At best, runs with privileges of the site storing the script – Often likely to run at full user privileges

slide-42
SLIDE 42

Lecture 15 Page 42 CS 136, Fall 2014

Non-Persistent XSS

  • Embed a small script in a link pointing

to a legitimate web page

  • Following the link causes part of it to

be echoed back to the user’s browser

  • Where it gets executed as a script
  • Never permanently stored at the server
slide-43
SLIDE 43

Lecture 15 Page 43 CS 136, Fall 2014

Persistent XSS

  • Upload of data to a web site that stores

it permanently

  • Generally in a database somewhere
  • When other users request the

associated web page,

  • They get the bad script
slide-44
SLIDE 44

Lecture 15 Page 44 CS 136, Fall 2014

Some Examples

  • Wordpress had a XSS bug in 2014
  • Multiple ones on Weather Channel web site

in 2014

  • Other XSS vulnerabilities discovered on

sites run by eBay, Symantec, PayPal, Facebook, Amazon, Adobe, Microsoft, Google Gmail, LinkedIn, the Scientology website, thousands of others

  • D-Link router flaw exploitable through XSS
slide-45
SLIDE 45

Lecture 15 Page 45 CS 136, Fall 2014

Why Is XSS Common?

  • Use of scripting languages widespread

– For legitimate purposes

  • Most users leave them enabled in their

browsers

  • Sites allowing user upload are very

popular

  • Only a question of getting user to run

your script

slide-46
SLIDE 46

Lecture 15 Page 46 CS 136, Fall 2014

Typical Effects of XSS Attack

  • Most commonly used to steal personal

information – That is available to legit web site – User IDs, passwords, credit card numbers, etc.

  • Such information often stored in

cookies at client side

slide-47
SLIDE 47

Lecture 15 Page 47 CS 136, Fall 2014

Solution Approaches

  • Don’t allow uploading of anything
  • Don’t allow uploading of scripts
  • Provide some form of protection in

browser

slide-48
SLIDE 48

Lecture 15 Page 48 CS 136, Fall 2014

Disallowing Data Uploading

  • Does your web site really need to allow

users to upload stuff?

  • Even if it does, must you show it to
  • ther users?
  • If not, just don’t take any user input
  • Problem: Not possible for many

important web sites

slide-49
SLIDE 49

Lecture 15 Page 49 CS 136, Fall 2014

Don’t Allow Script Uploading

  • A no-brainer for most sites

– Few web sites want users to upload scripts, after all

  • So validate user input to detect and

remove scripts

  • Problem: Rich forms of data encoding

make it hard to detect all scripts

  • Good tools can make it easier
slide-50
SLIDE 50

Lecture 15 Page 50 CS 136, Fall 2014

Protect the User’s Web Browser

  • Similar solutions as for any form of

protecting from malicious scripts

  • With the same problems:

– Best solutions cripple functionality

  • Firefox Content Security Policy

– Allows web sites to specify where content can be loaded from

slide-51
SLIDE 51

Lecture 15 Page 51 CS 136, Fall 2014

Cross-Site Request Forgery

  • CSRF
  • Works the other way around
  • An authenticated and trusted user

attacks a web server – Usually someone posing as that user

  • Generally to fool server that the trusted

user made a request

slide-52
SLIDE 52

Lecture 15 Page 52 CS 136, Fall 2014

CSRF in Action

  • Attacker puts link to (say) a bank on

his web page

  • Unsuspecting user clicks on the link
  • His authentication cookie goes with the

HTTP request – Since it’s for the proper domain

  • Bank authenticates him and transfers

his funds to the attacker

slide-53
SLIDE 53

Lecture 15 Page 53 CS 136, Fall 2014

Issues for CSRF Attacks

  • Not always possible or easy
  • Attacks sites that don’t check referrer header

– Indicating that request came from another web page

  • Attacked site must allow use of web page to

allow something useful (e.g., bank withdrawal)

  • Must not require secrets from user
  • Victim must click link on attacker’s web site
  • And attacker doesn’t see responses
slide-54
SLIDE 54

Lecture 15 Page 54 CS 136, Fall 2014

Exploiting Statelessness

  • HTTP is designed to be stateless
  • But many useful web interactions are

stateful

  • Various tricks used to achieve statefulness

– Usually requiring programmers to provide the state – Often trying to minimize work for the server

slide-55
SLIDE 55

Lecture 15 Page 55 CS 136, Fall 2014

A Simple Example

  • Web sites are set up as graphs of links
  • You start at some predefined point

– A top level page, e.g.

  • And you traverse links to get to other pages
  • But HTTP doesn’t “keep track” of where

you’ve been – Each request is simply the name of a link

slide-56
SLIDE 56

Lecture 15 Page 56 CS 136, Fall 2014

Why Is That a Problem?

  • What if there are unlinked pages on the

server?

  • Should a user be able to reach those

merely by naming them?

  • Is that what the site designers

intended?

slide-57
SLIDE 57

Lecture 15 Page 57 CS 136, Fall 2014

A Concrete Example

  • The ApplyYourself system
  • Used by colleges to handle student

applications

  • For example, by Harvard Business

School in 2005

  • Once all admissions decisions made,

results available to students

slide-58
SLIDE 58

Lecture 15 Page 58 CS 136, Fall 2014

What Went Wrong?

  • Pages representing results were created as

decisions were made

  • Stored on the web server

– But not linked to anything, since results not yet released

  • Some appliers figured out how to craft

URLs to access their pages – Finding out early if they were admitted

slide-59
SLIDE 59

Lecture 15 Page 59 CS 136, Fall 2014

The Core Problem

  • No protocol memory of what came before
  • So no protocol way to determine that

response matches request

  • Could be built into the application that

handles requests

  • But frequently isn’t

– Or is wrong

slide-60
SLIDE 60

Lecture 15 Page 60 CS 136, Fall 2014

Solution Approaches

  • Get better programmers

– Or better programming tools

  • Back end system that maintains and compares

state

  • Front end program that observes requests and

responses – Producing state as a result

  • Cookie-based

– Store state in cookies (preferably encrypted)

slide-61
SLIDE 61

Lecture 15 Page 61 CS 136, Fall 2014

Data Transport Issues

  • The web is inherently a network

application

  • Thus, all issues of network security are

relevant

  • And all typical network security

solutions are applicable

  • Where do we see problems?
slide-62
SLIDE 62

Lecture 15 Page 62 CS 136, Fall 2014

(Non-) Use of Data Encryption

  • Much web traffic is not encrypted

– Or signed

  • As a result, it can be sniffed
  • Allowing eavesdropping, MITM

attacks, alteration of data in transit, etc.

  • Why isn’t it encrypted?
slide-63
SLIDE 63

Lecture 15 Page 63 CS 136, Fall 2014

Why Web Sites Don’t Use Encryption

  • Primarily for cost reasons
  • Crypto costs cycles
  • For high-volume sites, not encrypting

messages lets them buy fewer servers

  • They are making a cost/benefit analysis

decision

  • And maybe it’s right?
slide-64
SLIDE 64

Lecture 15 Page 64 CS 136, Fall 2014

Problems With Not Using Encryption

  • Sensitive data can pass in the clear

– Passwords, credit card numbers, SSNs, etc.

  • Attackers can get information from

messages to allow injection attacks

  • Attackers can readily profile traffic

– Especially on non-secured wireless networks

slide-65
SLIDE 65

Lecture 15 Page 65 CS 136, Fall 2014

Firesheep

  • Many wireless networks aren’t encrypted
  • Many web services don’t use end-to-end

encryption for entire sessions

  • Firesheep was a demo of the dangers of those in

combination

  • Simple Firefox plug-in to scan unprotected

wireless nets for unencrypted cookies – Allowing session hijacking attacks

  • When run in that environment, tended to be highly

successful

slide-66
SLIDE 66

Lecture 15 Page 66 CS 136, Fall 2014

Why Does Session Hijacking Work?

  • Web sites try to avoid computation costs of

encryption

  • So they only encrypt login
  • Subsequent HTTP messages

“authenticated” with a cookie

  • Anyone who has the cookie can authenticate
  • The cookie is sent in the clear . . .
  • So attacker can “become” legit user
slide-67
SLIDE 67

Lecture 15 Page 67 CS 136, Fall 2014

Sometimes This Isn’t Enough

  • Especially powerful “attackers” can subvert

this process – Man-in-the-middle attacks by ISPs – NSA compromised key management – NSA also spied on supposedly private links

  • Usually impossible for typical criminal
  • Hard or impossible for a user to know if this

is going on

slide-68
SLIDE 68

Lecture 15 Page 68 CS 136, Fall 2014

Using Encryption on the Web

  • Some web sites support use of HTTPS

– Which permits encryption of data – Based on TLS/SSL

  • Performs authentication and two-way

encryption of traffic – Authentication is certificate-based

  • HSTS (HTTP Strict Transport Security)

requires browsers to use HTTPS

slide-69
SLIDE 69

Lecture 15 Page 69 CS 136, Fall 2014

Increased Use of Web Encryption

  • These and other problems have led

more major web sites to encrypt traffic

  • E.g., Google announced in 2014 it

would encrypt all search requests

  • Facebook and Twitter adopted HSTS

in 2014

  • Arguably, all web interactions should

be encrypted

slide-70
SLIDE 70

Lecture 15 Page 70 CS 136, Fall 2014

Conclusion

  • Web security problems not inherently

different than general software security

  • But generality, power, ubiquity of the

web make them especially important

  • Like many other security problems,

constrained by legacy issues