An toàn hệ thống web
An toàn hệ thống web
An toàn hệ thống web
https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
Historical Web Vulnerabilities "In the Wild"
XSS peak
Resource: http://www.w3schools.com/
Goals of web security
Safely browse the web
Visit a variety of web sites without incurring harm
Confidentiality: no stolen information
Integrity: Site A cannot compromise session at Site B
System
Web Attacker
Sets up malicious
site visited by
victim; no control
of network
Alice
Network security threat model
Network Attacker
System
Intercepts and
controls network
communication
Alice
System
Web Attacker
Alice
Network Attacker
System
Alice
Web Threat Models
Web attacker
Controls attacker.com
Can obtain SSL/TLS certificate for attacker.com
User visits attacker.com
Or: runs attacker’s Facebook app, etc.
Network attacker
Passive: Wireless eavesdropper
Active: Evil router, DNS poisoning
Malware attacker
Attacker escapes browser isolation mechanisms
and run separately under control of OS
Malware attacker
Browsers may contain exploitable bugs
Often enable remote code execution by web sites
Google study: [the ghost in the browser 2007]
Found Trojans on 300,000 web pages (URLs)
Found adware on 18,000 web pages (URLs)
Example:
http://stanford.edu:81/class?name=cs155#homework
Protocol
Fragment
Hostname
Port Path
Query
Blank line
Data – none for GET
HTTP/1.0 200 OK
Date: Sun, 21 Apr 1996 02:20:42 GMT
Server: Microsoft-Internet-Information-Server/5.0
Connection: keep-alive
Content-Type: text/html Data
Last-Modified: Thu, 18 Apr 1996 17:39:05 GMT
Set-Cookie: …
Content-Length: 2543
Cookies
RENDERING CONTENT
Rendering and events
Basic browser execution model
Each browser window or frame
Loads content
Renders it
Processes HTML and scripts to display page
May involve images, subframes, etc.
Responds to events
Events can be
User actions: OnClick, OnMouseover
Rendering: OnLoad, OnBeforeUnload
Timing: setTimeout(), clearTimeout()
Example
<!DOCTYPE html>
<html>
<body>
</body>
</html>
Source: http://www.w3schools.com/js/js_output.asp
http://phet.colorado.edu/en/simulations/category/html
Example
Document Object Model (DOM)
Object-oriented interface used to read and write docs
web page in HTML is structured data
Examples
Properties: document.alinkColor, document.URL,
document.forms[ ], document.links[ ],
document.anchors[ ]
Methods: document.write(document.referrer)
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 + 6;
</script>
</body>
</html>
Source: http://www.w3schools.com/js/js_output.asp
Basic web functionality
JavaScript onError
Basic function
Triggered when error occurs loading a document
or an image
Example
<img src="image.gif"
onerror="alert('The image could not be loaded.')“
>
http://www.w3schools.com/jsref/jsref_onError.asp
Basic web functionality
JavaScript timing
Sample code
<html><body><img id="test" style="display: none">
<script>
var test = document.getElementById(’test’);
var start = new Date();
test.onerror = function() {
var end = new Date();
alert("Total time: " + (end - start));
}
test.src = "http://www.example.com/page.html";
</script>
</body></html>
When response header indicates that page is not an image, the
browser stops and notifies JavaScript via the onerror handler.
Security consequence
Malicious
2) “check this out”
Web page
scan
Firewall
Remote scripting
Goal: communicate between client-side app running
in browser and server-side app, without reloading
Methods
Java Applet/ActiveX control/Flash
Can make HTTP requests and interact with client-side
JavaScript code, but some aspects may be browser specific
XML-RPC
open, standards-based technology that requires XML-RPC
libraries on server and in your client-side code.
Simple HTTP via a hidden IFRAME
IFRAME with a script on your web server is by far the easiest of
the three remote scripting options
34
Analogy
Operating system Web browser
Primitives Primitives
System calls Document object model
Processes Frames
Disk Cookies / localStorage
Principals: Users Principals: “Origins”
Discretionary access Mandatory access control
control Vulnerabilities
Vulnerabilities Cross-site scripting
Buffer overflow Cross-site request forgery
Root exploit Cache history attacks
…
Policy Goals
Safe to visit an evil web site
Frame-Frame relationships
canScript(A,B)
Can Frame A execute a script that manipulates
arbitrary/nontrivial DOM elements of Frame B?
canNavigate(A,B)
Can Frame A change the origin of content for Frame B?
Frame-principal relationships
readCookie(A,S), writeCookie(A,S)
Can Frame A read/write cookies from site S?
See https://code.google.com/p/browsersec/wiki/Part1
https://code.google.com/p/browsersec/wiki/Part2
Library import excluded from SOP
<script src=https://seal.verisign.com/getseal?
host_name=a.com></script>
VeriSign
www.facebook.com
facebook.com
www.facebook.com facebook.com
chat.facebook.com
Additional mechanisms
Add a contact
Share contacts
postMessage syntax
frames[0].postMessage("Attack at dawn!",
"http://b.com/");
Attack at dawn!
Facebook
Facebook
Anecdote
Anecdote
Why include “targetOrigin”?
What goes wrong?
frames[0].postMessage("Attack at dawn!");
45
NAVIGATION
46
A Guninski Attack
awglogin
window.open("https://attacker.com/", "awglogin");
What should the policy be?
Sibling
Frame Bust
Child
Descendant
48
Legacy Browser Behavior
Browser Policy
IE 6 (default) Permissive
IE 6 (option) Child
IE7 (no Flash) Descendant
IE7 (with Flash) Permissive
Firefox 2 Window
Safari 3 Permissive
Opera 9 Window
HTML 5 Child
Window Policy Anomaly
top.frames[1].location = "http://www.attacker.com/...";
top.frames[2].location = "http://www.attacker.com/...";
...
Legacy Browser Behavior
Browser Policy
IE 6 (default) Permissive
IE 6 (option) Child
IE7 (no Flash) Descendant
IE7 (with Flash) Permissive
Firefox 2 Window
Safari 3 Permissive
Opera 9 Window
HTML 5 Child
Adoption of Descendant Policy
Browser Policy
IE7 (no Flash) Descendant
IE7 (with Flash) Descendant
Firefox 3 Descendant
Safari 3 Descendant
Opera 9 (many policies)
HTML 5 Descendant
When is it safe to type my password?
54
Safe to type your password?
55
Safe to type your password?
56
Safe to type your password?
???
???
57
Safe to type your password?
58
Mixed Content: HTTP and HTTPS
Problem
Page loads over HTTPS, but has HTTP content
Network attacker can control page
IE: displays mixed-content dialog to user
Flash files over HTTP loaded with no warning (!)
Note: Flash can script the embedding page
Firefox: red slash over lock icon (no dialog)
Flash files over HTTP do not trigger the slash
Safari: does not detect mixed content
Trivially spoofable
<a href=“http://www.paypal.com/”
onclick=“this.href = ‘http://www.evil.com/’;”>
PayPal</a>
COOKIES: CLIENT STATE
64
Cookies
Used to store state on user’s machine
POST …
Browser
Server
HTTP Header:
Set-cookie: NAME=VALUE ;
domain = (who can read) ;
If expires=NULL: expires = (when expires) ;
this session only
secure = (only over SSL)
Browser POST …
Server
Cookie: NAME = VALUE
GET restricted.html
Cookie: auth=val restricted.html
auth=val Check val
If YES, YES/NO
restricted.html
Cookie Security Policy
Uses:
User authentication
Personalization
User tracking: e.g. Doubleclick (3rd party
cookies)
GET …
Browser
Server
HTTP Header:
Set-cookie: NAME=VALUE ;
Secure=true
• … but no integrity
• Can rewrite secure cookies over HTTP
Þ network attacker can rewrite secure cookies
Þ can log user into attacker’s account
httpOnly Cookies
GET …
Browser
Server
HTTP Header:
Set-cookie: NAME=VALUE ;
httpOnly
<iframe name=“myframe”
src=“http://www.google.com/”>
This text is ignored by most browsers.
</iframe>
Frame Busting
Frame busting:
if (top != self)
top.location.href = location.href
Better Frame Busting
if (top != self)
top.location.href = location.href
else { … code of page here …}
Even better (after ~2010)
Set X-Frame-Options HTTP response header
Tell browser not to render a page in a <frame> or <iframe>
Ensuring that content is not embedded into other sites.
Use options "DENY", "SAMEORIGIN", or "ALLOW-FROM uri"