SlideShare une entreprise Scribd logo
1  sur  60
HTML5 Security Realities



           Brad Hill, PayPal
        bhill@paypal-inc.com @hillbrad

      W3Conf: Practical standards for web professionals
      21 -22 February 2013
      San Francisco
“The reason that the Web browser is
the principal entry point for
malware is the number of choices
that a browser offers up to
whomever is at the other end.
Evolving technologies like
HTML5 promise to make this
significantly worse.” – Dan Geer
In the next 30 minutes:
• Show you real code using new standards to:
  – Solve Script Injection Vulnerabilities
  – Build Secure Mashups


• HTML5 is a big step forward in security for the
  Web platform
Solving
  Script
Injection
Script Injection, also known as Cross-Site
Scripting or XSS, is the most common Web
          Application vulnerability.

In 2007, WhiteHat estimated that 90% of
         sites were vulnerable.
XSS in a nutshell:

If somebody else’s code gets to
run in your WebApp, it’s not your
WebApp anymore.

+ Same-Origin Policy = XSS
anywhere on your domain is XSS
everywhere on your domain.
Current defenses:
 • Input filtering
    – Strip dangerous characters and tags from user data


 • Output encoding
    – Encode user data so it isn’t treated as markup


“HTML5 broke my XSS filter!”
YES.

    html5sec.org lists a dozen new XSS vectors
      in new tags and attributes in HTML5.


But your filter was already broken.
</a/style='-=a&#x5c;b expr65
ss/*
&#x2a/ion(URL='javascript:&#
x25;5cu0&#48;
64ocum&#x25;5cu0&#48;64oc
um&#x25;5cu0&#48;65nt.writ&
#x25;5cu0&#48;65(1)' )'>
1;--
<?f><x:!μ!:x/style=`b&#x5c;65h
0061vior:url(#def&#x61ult#time
2)';'`/onbegin=&#x5b�=u00&#
054;1le&#114t&#40&#x31)&#x5
d&#x2f/&#xy,z>
XSS Filters Were Doomed
Filters are a server-side attempt to simulate the
client-side parser and execution environment.
But…
• Every browser parser operated differently
• The algorithms were secret
• Every browser had proprietary features, tags
   and syntax
• Accepting bad markup was a feature
Generously coercing a shambling
     mound of line noise into an
application is no longer a competitive
                feature.
By standardizing the technology for
   building Rich Web Applications,
HTML5 began a fundamental shift in
the security posture of the Web as a
               platform.
Proprietary platforms compete for
 developers by offering features.



Open platform implementers
compete for users by offering
          quality.
And now,

BACK TO SOLVING SCRIPT INJECTION
New and Better Anti-XSS Approaches
Even if we now have some hope of simulating
the browser parser for HTML5…

     Not easy, definitely not future-proof.
     Misses client-only data flows.

Why not get help from the client?
Content Security Policy

 25          6.0                   6.0        6.0          10
       X-Content-Security-Policy    X-WebKit-CSP    (sandbox only)




HTTP header to enforce, in the client, a least-
 privilege environment for script and other
                  content.
Content-Security-Policy:
default-src 'self';
object-src 'none';
img-src https://uploads.example-board.net
         https://cdn.example-board.com
         data:;
script-src https://code.example-board.net
           https://www.google-analytics.com;
frame-src *.youtube.com;
report-uri https://www.example-
board.net/cspViolations.xyz
Content Security Policy 1.0
default-src       Everything
script-src        Scripts
object-src        Plugins
style-src         CSS
img-src           Images
media-src         Audio + Video
frame-src         Frame content
font-src          Fonts
connect-src       Script-loaded content (e.g. XHR)
sandbox           Same as HTML5 iframe sandbox
reporturi         Violation reporting
The catch…
• CSP enforces code / data separation

• This means:
  NO inline script or css
  NO eval, even in libraries

(can be disabled, but sacrifices many of the
benefits of CSP)
<script> function doSomething ()…
</script>

<button onClick="doSomething()">
Click Here!</button>
<!--myPageScript.js-->
function doSomething ()…

Document.addEventListener(‘DOMContentLoader',
function() { for var b in
document.querySelectorAll('.clickme‘))
e.addEventListener('click', doSomething); });

<!--myPageContent.html-->
<script src="myPageScript.js"></script>
<button class="clickme">Click Here!</button>
Coming soon in CSP 1.1
• Whitelisting of inline scripts and CSS

•   More granular origins
•   Better control of plugins and media types
•   Control and reporting for reflected XSS filters
•   META tag support

https://dvcs.w3.org/hg/content-security-
policy/raw-file/tip/csp-specification.dev.html
Templating

Templating is one of the oldest and most widely
used Web application construction patterns.

But it is a hive of XSS villainy because it has
never been a first-class feature in the client.
HTML Templates
New spec in progress in the WebApps WG:
 https://dvcs.w3.org/hg/webcomponents/raw-
file/tip/spec/templates/index.html

Declare templates as first-class client-side
objects for increased performance, reduced XSS
risk.
With CSP and a careful application
architecture XSS can be solved today.

In the near future it will be possible
using more familiar and better
performing idioms.
Secure
            Mashups
“HTML5 and CORS give new
ways to bypass the Same-Origin
Policy!”
A “mashup” incorporates content from
    multiple origins under different
        administrative control.

    Today, more apps than not are
authenticated mashups: ads, analytics,
           federated login

 How did we do this before HTML5?
Flash, with crossdomain.xml
<?xml version="1.0"?>
<!--https://www.foo.com/crossdomain.xml--
>
<cross-domain-policy>
  <allow-access-from
     domain=“www.example-analytics.com"/>
</cross-domain-policy>
Jan’s Rule:

“Give someone an ACL, and
     they’ll put in a *.”
A “*” in your master crossdomain.xml policy means your
 users’ information is vulnerable to any malicious SWF,
                 anywhere on the Web
I can’t use Flash on iOS anyway…

What about HTML-only methods?
<script src=“foreignOrigin">
                    Same-Origin Loophole

                               Browser
 example-2.com

                           Origin=example.com


                               <script src=
                      https://example-2.com/x.js>


                          (function( window,
                             undefined ) {…
example.com
AKA – “JSONP”
• “JSON with padding”
<script src=“example.com/jsonp?callback=foo”>

• Returns JSON data “padded” with a call to the
  function you specified.

• You hope…it’s still script!
This pattern injects somebody
     else’s code into your
          application.

Remember what the definition
      of XSS was?
<script
src="//connect.facebook.net/en_US/all.js">
</script>
We can
build it better.
 We have the
 technology.
Cross-Origin Resource Sharing (CORS)

  22    5.1     3.2    15    15    2.1   10        7


Voluntarily relax the Same-Origin Policy with an
HTTP header to allow permissioned sharing on a
resource-by-resource basis

Access-Control-Allow-Credentials: true

Access-Control-Allow-Origin: someorigin.com
CORS Client Example
var xhr = new XMLHttpRequest();
xhr.open(method, xDomainUrl, true);
xhr.withCredentials = true;

xhr.onload = function() {
       var responseText = xhr.responseText;
       validatedResponse = validate(responseText); };

xhr.onerror = function() {
      console.log('There was an error!'); };

xhr.send();
The difference:


Script src gives you code you
have no choice but to TRUST

CORS gives you data you can
VERIFY
What about the * in CORS?
    * cannot be used for a resource that supports
                    credentials.

* in Access-Control-Allow-Origin gives other origins
only the same view they already have from their own
server.

            Access-Control-Allow-Origin: *
    is actually one of the safest ways to use CORS!
What if you need data from somebody
 who doesn’t publish a CORS API?
sandboxed iframes

 23   5.1   4.2     15        2.1   10   7



and


postMessage

 23   5.1   4.2   16     12.1 2.1   8    7
trusted.mydomain.com/foo.html


<iframe sandbox=“allow-scripts”
src=“integration.mydomain.com/wrapLogin.html
     ”>
</iframe>
                By using a different domain name,
                many benefits of the sandbox can
                be achieved, even in browsers that
                         don’t support it.
integration.mydomain.com/wrapLogin.html

 <html>
 <script src=“foreigndomain.com/login.js”>
 </script>
 <script>
 window.parent.postMessage(loginName,
                  “trusted.mydomain.com”);
 </script>
 </html>
trusted.mydomain.com/foo.html

<iframe sandbox=“allow-scripts”
src=“untrusted.mydomain.com/untrusted.html”>
</iframe>
<script>
window.addEventListener("message", receiveMessage, false);
receiveMessage = function(event) {
  if(event.origin == “untrusted.mydomain.com”) {
  var data = sanitizeData(event.data);
}
<script>
But wait, there’s more!

What if you do this to your own code?
http://www.cs.berkeley.edu/~devdatta
      /papers/LeastPrivileges.pdf
Hackers HATE Him!!!!




Reduce your Trusted Computing
Base by 95% with this one simple
         HTML5 trick!!!
Summary: HTML5
HTML5 and the Open Web Platform are
improving the security of the Web ecosystem.

Rich Web Apps are not new, and HTML5 offers
big security improvements compared to the
proprietary plugin technologies it’s actually
replacing.
Summary: Script Injection
• Script Injection, aka XSS, can be a solved
  problem with proper application architecture
  and new client-side technologies.

• Avoid incomplete server-side simulation, solve
  it directly in the client environment:
  – Content Security Policy
  – HTML Templates
Summary: Mashups
• Use CORS to get (and validate) data, not code
• Use iframes and postMessage to isolate legacy
  mashup APIs

• Treat your own code like a mashup: Use the
  Same-Origin Policy as a powerful privilege
  separation technique for secure application
  architecture in HTML5

https://github.com/devd/html5privsep
Ongoing work in WebAppSec WG:
• Content Security Policy 1.1
• User Interface Security to Kill Clickjacking
• Sub-Resource Integrity

• More important work underway in the Web
  Cryptography WG
public-webappsec-request@w3.org


Thank you! Questions?


             Brad Hill, PayPal
          bhill@paypal-inc.com @hillbrad

        W3Conf: Practical standards for web professionals
        21 -22 February 2013
        San Francisco

Contenu connexe

Tendances

Building Secure User Interfaces With JWTs
Building Secure User Interfaces With JWTsBuilding Secure User Interfaces With JWTs
Building Secure User Interfaces With JWTsrobertjd
 
Stateless authentication for microservices - GR8Conf 2015
Stateless authentication for microservices - GR8Conf 2015Stateless authentication for microservices - GR8Conf 2015
Stateless authentication for microservices - GR8Conf 2015Alvaro Sanchez-Mariscal
 
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac DawsonCODE BLUE
 
Case Study of Django: Web Frameworks that are Secure by Default
Case Study of Django: Web Frameworks that are Secure by DefaultCase Study of Django: Web Frameworks that are Secure by Default
Case Study of Django: Web Frameworks that are Secure by DefaultMohammed ALDOUB
 
Web Application Security in front end
Web Application Security in front endWeb Application Security in front end
Web Application Security in front endErlend Oftedal
 
Top 10 Web Hacks 2012
Top 10 Web Hacks 2012Top 10 Web Hacks 2012
Top 10 Web Hacks 2012Matt Johansen
 
Security and Privacy on the Web in 2015
Security and Privacy on the Web in 2015Security and Privacy on the Web in 2015
Security and Privacy on the Web in 2015Francois Marier
 
MITM Attacks on HTTPS: Another Perspective
MITM Attacks on HTTPS: Another PerspectiveMITM Attacks on HTTPS: Another Perspective
MITM Attacks on HTTPS: Another PerspectiveGreenD0g
 
Building Secure User Interfaces With JWTs (JSON Web Tokens)
Building Secure User Interfaces With JWTs (JSON Web Tokens)Building Secure User Interfaces With JWTs (JSON Web Tokens)
Building Secure User Interfaces With JWTs (JSON Web Tokens)Stormpath
 
Securing your AngularJS Application
Securing your AngularJS ApplicationSecuring your AngularJS Application
Securing your AngularJS ApplicationPhilippe De Ryck
 
Super simple application security with Apache Shiro
Super simple application security with Apache ShiroSuper simple application security with Apache Shiro
Super simple application security with Apache ShiroMarakana Inc.
 
New Methods in Automated XSS Detection & Dynamic Exploit Creation
New Methods in Automated XSS Detection & Dynamic Exploit CreationNew Methods in Automated XSS Detection & Dynamic Exploit Creation
New Methods in Automated XSS Detection & Dynamic Exploit CreationKen Belva
 
Cross Site Scripting (XSS)
Cross Site Scripting (XSS)Cross Site Scripting (XSS)
Cross Site Scripting (XSS)OWASP Khartoum
 
Token Authentication for Java Applications
Token Authentication for Java ApplicationsToken Authentication for Java Applications
Token Authentication for Java ApplicationsStormpath
 
[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho
[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho
[CB16] Esoteric Web Application Vulnerabilities by Andrés RianchoCODE BLUE
 
Single-Page-Application & REST security
Single-Page-Application & REST securitySingle-Page-Application & REST security
Single-Page-Application & REST securityIgor Bossenko
 
What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017Matt Raible
 
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web ServicesXXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web ServicesAbraham Aranguren
 

Tendances (20)

Building Secure User Interfaces With JWTs
Building Secure User Interfaces With JWTsBuilding Secure User Interfaces With JWTs
Building Secure User Interfaces With JWTs
 
Stateless authentication for microservices - GR8Conf 2015
Stateless authentication for microservices - GR8Conf 2015Stateless authentication for microservices - GR8Conf 2015
Stateless authentication for microservices - GR8Conf 2015
 
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
 
Case Study of Django: Web Frameworks that are Secure by Default
Case Study of Django: Web Frameworks that are Secure by DefaultCase Study of Django: Web Frameworks that are Secure by Default
Case Study of Django: Web Frameworks that are Secure by Default
 
Web Application Security in front end
Web Application Security in front endWeb Application Security in front end
Web Application Security in front end
 
Top 10 Web Hacks 2012
Top 10 Web Hacks 2012Top 10 Web Hacks 2012
Top 10 Web Hacks 2012
 
Security and Privacy on the Web in 2015
Security and Privacy on the Web in 2015Security and Privacy on the Web in 2015
Security and Privacy on the Web in 2015
 
Web Security - CSP & Web Cryptography
Web Security - CSP & Web CryptographyWeb Security - CSP & Web Cryptography
Web Security - CSP & Web Cryptography
 
MITM Attacks on HTTPS: Another Perspective
MITM Attacks on HTTPS: Another PerspectiveMITM Attacks on HTTPS: Another Perspective
MITM Attacks on HTTPS: Another Perspective
 
Building Secure User Interfaces With JWTs (JSON Web Tokens)
Building Secure User Interfaces With JWTs (JSON Web Tokens)Building Secure User Interfaces With JWTs (JSON Web Tokens)
Building Secure User Interfaces With JWTs (JSON Web Tokens)
 
Securing your AngularJS Application
Securing your AngularJS ApplicationSecuring your AngularJS Application
Securing your AngularJS Application
 
Spring Security 3
Spring Security 3Spring Security 3
Spring Security 3
 
Super simple application security with Apache Shiro
Super simple application security with Apache ShiroSuper simple application security with Apache Shiro
Super simple application security with Apache Shiro
 
New Methods in Automated XSS Detection & Dynamic Exploit Creation
New Methods in Automated XSS Detection & Dynamic Exploit CreationNew Methods in Automated XSS Detection & Dynamic Exploit Creation
New Methods in Automated XSS Detection & Dynamic Exploit Creation
 
Cross Site Scripting (XSS)
Cross Site Scripting (XSS)Cross Site Scripting (XSS)
Cross Site Scripting (XSS)
 
Token Authentication for Java Applications
Token Authentication for Java ApplicationsToken Authentication for Java Applications
Token Authentication for Java Applications
 
[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho
[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho
[CB16] Esoteric Web Application Vulnerabilities by Andrés Riancho
 
Single-Page-Application & REST security
Single-Page-Application & REST securitySingle-Page-Application & REST security
Single-Page-Application & REST security
 
What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017What the Heck is OAuth and OpenID Connect - RWX 2017
What the Heck is OAuth and OpenID Connect - RWX 2017
 
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web ServicesXXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
 

En vedette

The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6
The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6
The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6Andrei Zmievski
 
User eXperience & Front End Development
User eXperience & Front End DevelopmentUser eXperience & Front End Development
User eXperience & Front End Developmentandreafallaswork
 
Front end Tips Tricks & Tools
Front end Tips Tricks & ToolsFront end Tips Tricks & Tools
Front end Tips Tricks & ToolsSandeep Ramgolam
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Holger Bartel
 
Sinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangSinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangMoch. Zamroni
 
Frontend automation and stability
Frontend automation and stabilityFrontend automation and stability
Frontend automation and stabilityMáté Nádasdi
 
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Edureka!
 
Architecting your Frontend
Architecting your FrontendArchitecting your Frontend
Architecting your FrontendRuben Teijeiro
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)Joseph Chiang
 
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasGrunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasDavid Amend
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsRyan Roemer
 
A modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianA modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianMagnolia
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSPhil Leggetter
 
Modern Frontend Technology
Modern Frontend TechnologyModern Frontend Technology
Modern Frontend TechnologyShip Hsu
 
Frontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryFrontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryChris Miller
 
Front End Development Workflow Tools
Front End Development Workflow ToolsFront End Development Workflow Tools
Front End Development Workflow ToolsAhmed Elmehri
 
TechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend TechnologiesTechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend Technologiesbincangteknologi
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...Prasid Pathak
 

En vedette (20)

The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6
The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6
The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6
 
User eXperience & Front End Development
User eXperience & Front End DevelopmentUser eXperience & Front End Development
User eXperience & Front End Development
 
Front end Tips Tricks & Tools
Front end Tips Tricks & ToolsFront end Tips Tricks & Tools
Front end Tips Tricks & Tools
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015
 
Sinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangSinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo Malang
 
Frontend automation and stability
Frontend automation and stabilityFrontend automation and stability
Frontend automation and stability
 
Frontend SPOF
Frontend SPOFFrontend SPOF
Frontend SPOF
 
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
 
Architecting your Frontend
Architecting your FrontendArchitecting your Frontend
Architecting your Frontend
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
 
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasGrunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web Applications
 
A modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianA modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at Atlassian
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJS
 
Frontend technologies
Frontend technologiesFrontend technologies
Frontend technologies
 
Modern Frontend Technology
Modern Frontend TechnologyModern Frontend Technology
Modern Frontend Technology
 
Frontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryFrontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr Story
 
Front End Development Workflow Tools
Front End Development Workflow ToolsFront End Development Workflow Tools
Front End Development Workflow Tools
 
TechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend TechnologiesTechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend Technologies
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
 

Similaire à W3 conf hill-html5-security-realities

W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesBrad Hill
 
The top 10 security issues in web applications
The top 10 security issues in web applicationsThe top 10 security issues in web applications
The top 10 security issues in web applicationsDevnology
 
Defeating Cross-Site Scripting with Content Security Policy (updated)
Defeating Cross-Site Scripting with Content Security Policy (updated)Defeating Cross-Site Scripting with Content Security Policy (updated)
Defeating Cross-Site Scripting with Content Security Policy (updated)Francois Marier
 
Rich Web App Security - Keeping your application safe
Rich Web App Security - Keeping your application safeRich Web App Security - Keeping your application safe
Rich Web App Security - Keeping your application safeJeremiah Grossman
 
[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
04. xss and encoding
04.  xss and encoding04.  xss and encoding
04. xss and encodingEoin Keary
 
White paper screen
White paper screenWhite paper screen
White paper screeneltincho89
 
DVWA BruCON Workshop
DVWA BruCON WorkshopDVWA BruCON Workshop
DVWA BruCON Workshoptestuser1223
 
They Ought to Know Better: Exploiting Security Gateways via Their Web Interfaces
They Ought to Know Better: Exploiting Security Gateways via Their Web InterfacesThey Ought to Know Better: Exploiting Security Gateways via Their Web Interfaces
They Ought to Know Better: Exploiting Security Gateways via Their Web Interfacesmichelemanzotti
 
Rails security: above and beyond the defaults
Rails security: above and beyond the defaultsRails security: above and beyond the defaults
Rails security: above and beyond the defaultsMatias Korhonen
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Evolution Of Web Security
Evolution Of Web SecurityEvolution Of Web Security
Evolution Of Web SecurityChris Shiflett
 
Owasp Top 10 - Owasp Pune Chapter - January 2008
Owasp Top 10 - Owasp Pune Chapter - January 2008Owasp Top 10 - Owasp Pune Chapter - January 2008
Owasp Top 10 - Owasp Pune Chapter - January 2008abhijitapatil
 
Cross Site Scripting - Mozilla Security Learning Center
Cross Site Scripting - Mozilla Security Learning CenterCross Site Scripting - Mozilla Security Learning Center
Cross Site Scripting - Mozilla Security Learning CenterMichael Coates
 
Top Ten Web Hacking Techniques of 2012
Top Ten Web Hacking Techniques of 2012Top Ten Web Hacking Techniques of 2012
Top Ten Web Hacking Techniques of 2012Jeremiah Grossman
 
Whatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the processWhatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the processguest3379bd
 
Waf.js: How to Protect Web Applications using JavaScript
Waf.js: How to Protect Web Applications using JavaScriptWaf.js: How to Protect Web Applications using JavaScript
Waf.js: How to Protect Web Applications using JavaScriptDenis Kolegov
 

Similaire à W3 conf hill-html5-security-realities (20)

W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realities
 
The top 10 security issues in web applications
The top 10 security issues in web applicationsThe top 10 security issues in web applications
The top 10 security issues in web applications
 
Defeating Cross-Site Scripting with Content Security Policy (updated)
Defeating Cross-Site Scripting with Content Security Policy (updated)Defeating Cross-Site Scripting with Content Security Policy (updated)
Defeating Cross-Site Scripting with Content Security Policy (updated)
 
Sanjeev ghai 12
Sanjeev ghai 12Sanjeev ghai 12
Sanjeev ghai 12
 
Rich Web App Security - Keeping your application safe
Rich Web App Security - Keeping your application safeRich Web App Security - Keeping your application safe
Rich Web App Security - Keeping your application safe
 
[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design
 
04. xss and encoding
04.  xss and encoding04.  xss and encoding
04. xss and encoding
 
White paper screen
White paper screenWhite paper screen
White paper screen
 
DVWA BruCON Workshop
DVWA BruCON WorkshopDVWA BruCON Workshop
DVWA BruCON Workshop
 
They Ought to Know Better: Exploiting Security Gateways via Their Web Interfaces
They Ought to Know Better: Exploiting Security Gateways via Their Web InterfacesThey Ought to Know Better: Exploiting Security Gateways via Their Web Interfaces
They Ought to Know Better: Exploiting Security Gateways via Their Web Interfaces
 
Rails security: above and beyond the defaults
Rails security: above and beyond the defaultsRails security: above and beyond the defaults
Rails security: above and beyond the defaults
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 
Cross site scripting
Cross site scriptingCross site scripting
Cross site scripting
 
Evolution Of Web Security
Evolution Of Web SecurityEvolution Of Web Security
Evolution Of Web Security
 
Owasp Top 10 - Owasp Pune Chapter - January 2008
Owasp Top 10 - Owasp Pune Chapter - January 2008Owasp Top 10 - Owasp Pune Chapter - January 2008
Owasp Top 10 - Owasp Pune Chapter - January 2008
 
Cross Site Scripting - Mozilla Security Learning Center
Cross Site Scripting - Mozilla Security Learning CenterCross Site Scripting - Mozilla Security Learning Center
Cross Site Scripting - Mozilla Security Learning Center
 
Top Ten Web Hacking Techniques of 2012
Top Ten Web Hacking Techniques of 2012Top Ten Web Hacking Techniques of 2012
Top Ten Web Hacking Techniques of 2012
 
Whatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the processWhatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the process
 
Html5 hacking
Html5 hackingHtml5 hacking
Html5 hacking
 
Waf.js: How to Protect Web Applications using JavaScript
Waf.js: How to Protect Web Applications using JavaScriptWaf.js: How to Protect Web Applications using JavaScript
Waf.js: How to Protect Web Applications using JavaScript
 

Dernier

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Dernier (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 

W3 conf hill-html5-security-realities

  • 1. HTML5 Security Realities Brad Hill, PayPal bhill@paypal-inc.com @hillbrad W3Conf: Practical standards for web professionals 21 -22 February 2013 San Francisco
  • 2. “The reason that the Web browser is the principal entry point for malware is the number of choices that a browser offers up to whomever is at the other end. Evolving technologies like HTML5 promise to make this significantly worse.” – Dan Geer
  • 3. In the next 30 minutes: • Show you real code using new standards to: – Solve Script Injection Vulnerabilities – Build Secure Mashups • HTML5 is a big step forward in security for the Web platform
  • 5. Script Injection, also known as Cross-Site Scripting or XSS, is the most common Web Application vulnerability. In 2007, WhiteHat estimated that 90% of sites were vulnerable.
  • 6. XSS in a nutshell: If somebody else’s code gets to run in your WebApp, it’s not your WebApp anymore. + Same-Origin Policy = XSS anywhere on your domain is XSS everywhere on your domain.
  • 7. Current defenses: • Input filtering – Strip dangerous characters and tags from user data • Output encoding – Encode user data so it isn’t treated as markup “HTML5 broke my XSS filter!”
  • 8. YES. html5sec.org lists a dozen new XSS vectors in new tags and attributes in HTML5. But your filter was already broken.
  • 11.
  • 12. XSS Filters Were Doomed Filters are a server-side attempt to simulate the client-side parser and execution environment. But… • Every browser parser operated differently • The algorithms were secret • Every browser had proprietary features, tags and syntax • Accepting bad markup was a feature
  • 13.
  • 14. Generously coercing a shambling mound of line noise into an application is no longer a competitive feature.
  • 15. By standardizing the technology for building Rich Web Applications, HTML5 began a fundamental shift in the security posture of the Web as a platform.
  • 16.
  • 17. Proprietary platforms compete for developers by offering features. Open platform implementers compete for users by offering quality.
  • 18. And now, BACK TO SOLVING SCRIPT INJECTION
  • 19. New and Better Anti-XSS Approaches Even if we now have some hope of simulating the browser parser for HTML5… Not easy, definitely not future-proof. Misses client-only data flows. Why not get help from the client?
  • 20. Content Security Policy 25 6.0 6.0 6.0 10 X-Content-Security-Policy X-WebKit-CSP (sandbox only) HTTP header to enforce, in the client, a least- privilege environment for script and other content.
  • 21.
  • 22. Content-Security-Policy: default-src 'self'; object-src 'none'; img-src https://uploads.example-board.net https://cdn.example-board.com data:; script-src https://code.example-board.net https://www.google-analytics.com; frame-src *.youtube.com; report-uri https://www.example- board.net/cspViolations.xyz
  • 23. Content Security Policy 1.0 default-src Everything script-src Scripts object-src Plugins style-src CSS img-src Images media-src Audio + Video frame-src Frame content font-src Fonts connect-src Script-loaded content (e.g. XHR) sandbox Same as HTML5 iframe sandbox reporturi Violation reporting
  • 24. The catch… • CSP enforces code / data separation • This means: NO inline script or css NO eval, even in libraries (can be disabled, but sacrifices many of the benefits of CSP)
  • 25. <script> function doSomething ()… </script> <button onClick="doSomething()"> Click Here!</button>
  • 26. <!--myPageScript.js--> function doSomething ()… Document.addEventListener(‘DOMContentLoader', function() { for var b in document.querySelectorAll('.clickme‘)) e.addEventListener('click', doSomething); }); <!--myPageContent.html--> <script src="myPageScript.js"></script> <button class="clickme">Click Here!</button>
  • 27. Coming soon in CSP 1.1 • Whitelisting of inline scripts and CSS • More granular origins • Better control of plugins and media types • Control and reporting for reflected XSS filters • META tag support https://dvcs.w3.org/hg/content-security- policy/raw-file/tip/csp-specification.dev.html
  • 28. Templating Templating is one of the oldest and most widely used Web application construction patterns. But it is a hive of XSS villainy because it has never been a first-class feature in the client.
  • 29. HTML Templates New spec in progress in the WebApps WG: https://dvcs.w3.org/hg/webcomponents/raw- file/tip/spec/templates/index.html Declare templates as first-class client-side objects for increased performance, reduced XSS risk.
  • 30. With CSP and a careful application architecture XSS can be solved today. In the near future it will be possible using more familiar and better performing idioms.
  • 31. Secure Mashups “HTML5 and CORS give new ways to bypass the Same-Origin Policy!”
  • 32. A “mashup” incorporates content from multiple origins under different administrative control. Today, more apps than not are authenticated mashups: ads, analytics, federated login How did we do this before HTML5?
  • 33. Flash, with crossdomain.xml <?xml version="1.0"?> <!--https://www.foo.com/crossdomain.xml-- > <cross-domain-policy> <allow-access-from domain=“www.example-analytics.com"/> </cross-domain-policy>
  • 34. Jan’s Rule: “Give someone an ACL, and they’ll put in a *.”
  • 35. A “*” in your master crossdomain.xml policy means your users’ information is vulnerable to any malicious SWF, anywhere on the Web
  • 36. I can’t use Flash on iOS anyway… What about HTML-only methods?
  • 37. <script src=“foreignOrigin"> Same-Origin Loophole Browser example-2.com Origin=example.com <script src= https://example-2.com/x.js> (function( window, undefined ) {… example.com
  • 38. AKA – “JSONP” • “JSON with padding” <script src=“example.com/jsonp?callback=foo”> • Returns JSON data “padded” with a call to the function you specified. • You hope…it’s still script!
  • 39. This pattern injects somebody else’s code into your application. Remember what the definition of XSS was?
  • 40.
  • 42.
  • 43. We can build it better. We have the technology.
  • 44. Cross-Origin Resource Sharing (CORS) 22 5.1 3.2 15 15 2.1 10 7 Voluntarily relax the Same-Origin Policy with an HTTP header to allow permissioned sharing on a resource-by-resource basis Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: someorigin.com
  • 45. CORS Client Example var xhr = new XMLHttpRequest(); xhr.open(method, xDomainUrl, true); xhr.withCredentials = true; xhr.onload = function() { var responseText = xhr.responseText; validatedResponse = validate(responseText); }; xhr.onerror = function() { console.log('There was an error!'); }; xhr.send();
  • 46. The difference: Script src gives you code you have no choice but to TRUST CORS gives you data you can VERIFY
  • 47. What about the * in CORS? * cannot be used for a resource that supports credentials. * in Access-Control-Allow-Origin gives other origins only the same view they already have from their own server. Access-Control-Allow-Origin: * is actually one of the safest ways to use CORS!
  • 48. What if you need data from somebody who doesn’t publish a CORS API?
  • 49. sandboxed iframes 23 5.1 4.2 15 2.1 10 7 and postMessage 23 5.1 4.2 16 12.1 2.1 8 7
  • 50. trusted.mydomain.com/foo.html <iframe sandbox=“allow-scripts” src=“integration.mydomain.com/wrapLogin.html ”> </iframe> By using a different domain name, many benefits of the sandbox can be achieved, even in browsers that don’t support it.
  • 51. integration.mydomain.com/wrapLogin.html <html> <script src=“foreigndomain.com/login.js”> </script> <script> window.parent.postMessage(loginName, “trusted.mydomain.com”); </script> </html>
  • 52. trusted.mydomain.com/foo.html <iframe sandbox=“allow-scripts” src=“untrusted.mydomain.com/untrusted.html”> </iframe> <script> window.addEventListener("message", receiveMessage, false); receiveMessage = function(event) { if(event.origin == “untrusted.mydomain.com”) { var data = sanitizeData(event.data); } <script>
  • 53. But wait, there’s more! What if you do this to your own code?
  • 54. http://www.cs.berkeley.edu/~devdatta /papers/LeastPrivileges.pdf
  • 55. Hackers HATE Him!!!! Reduce your Trusted Computing Base by 95% with this one simple HTML5 trick!!!
  • 56. Summary: HTML5 HTML5 and the Open Web Platform are improving the security of the Web ecosystem. Rich Web Apps are not new, and HTML5 offers big security improvements compared to the proprietary plugin technologies it’s actually replacing.
  • 57. Summary: Script Injection • Script Injection, aka XSS, can be a solved problem with proper application architecture and new client-side technologies. • Avoid incomplete server-side simulation, solve it directly in the client environment: – Content Security Policy – HTML Templates
  • 58. Summary: Mashups • Use CORS to get (and validate) data, not code • Use iframes and postMessage to isolate legacy mashup APIs • Treat your own code like a mashup: Use the Same-Origin Policy as a powerful privilege separation technique for secure application architecture in HTML5 https://github.com/devd/html5privsep
  • 59. Ongoing work in WebAppSec WG: • Content Security Policy 1.1 • User Interface Security to Kill Clickjacking • Sub-Resource Integrity • More important work underway in the Web Cryptography WG
  • 60. public-webappsec-request@w3.org Thank you! Questions? Brad Hill, PayPal bhill@paypal-inc.com @hillbrad W3Conf: Practical standards for web professionals 21 -22 February 2013 San Francisco

Notes de l'éditeur

  1. First, let me apologize that my slides aren’t very pretty – it’s tough to share a stage with so many of the most talented front-end engineers in the world and be the security person. But to that point, we’ve seen a ton of really amazing stuff here so far, yesterday, this morning, and with more to come. I think it’s safe to say that all the developers in the room are really excited about the possibilities of HTML5 and the Open Web Platform. But there is one group of people that isn’t so excited about all of this: the security community.
  2. Almost since HTML5 was born, you can’t go to a security conference or read the security tech press without finding HTML5 at the top of almost every list of threats. It’s framed it as part of an out-of-control spiral of complexity on the web that’s going to leave everyone vulnerable to more malware, more application-level compromises and more enterprise risk. Now, security people are grumpy by nature. We are constantly warning people of dangers ahead, and we’re making a better living than ever because nobody ever listens. So, when it comes to HTML5, should you listen? Well, I’m here to say that no, in this case you shouldn’t. I’ve been working on Web technologies and in security since 1994, and despite hearing about Lulzsec or Chinese hackers on the news every week, the security state of the Web today is better than it has ever been. In particular, we’ve made very large advancements in the last few years, largely due to the rapid advancement of HTML5 and the Open Web Platform, and I think the next few years are going to continue that positive trajectory.
  3. At the last W3Conf I gave a talk with Scott Stender of iSEC Partners where we talked at a high level about some the ways HTML5 is changing security for modern web apps and what to be aware of. This time I want to show some real code on how to use new standards to tackle two of the biggest problems in Web security: solving Script Injection, and building secure mashups.Along the way, I hope I’ll convince you, and maybe, if some security people are watching, them, that HTML5 is a big step forward in security for the Web platform.
  4. So, not to lack ambition, let’s tackle the biggest security problem on the Web first: Script Injection, also known as Cross-Site Scripting or XSS.
  5. This is the most common vulnerability on the Web – some studies have estimated its prevalence at 90%, and I believe that. One of the things HTML, of any version, is not good at is separating data and code, so any dynamic application tends to have script injection issues unless you’ve specifically architected your app to avoid them.
  6. I hope that most everyone who’s a web developer today already has some idea of what XSS is, but in a nutshell:If somebody else gets to run code in your WebApp, it’s not your WebApp anymore. And the Same-Origin Policy for JavaScript means that if there is an XSS vulnerability anywhere on your domain, everything on your domain is vulnerable. The attackers can take advantage of a single weakness to run amok in the browser, impersonate your users, and do anything they can do.
  7. Script Injection has been a known problem since 2001, and we’ve come up with some server-side best defensive practices to prevent it: Input filtering, where we attempt to strip dangerous characters or tags from user input before we use it in markup, and Output encoding where we attempt to encode user data so that it isn’t treated as markup by the browser.And one of the oldest security complaints about HTML5 is that it is going to break many existing XSS filters. If you have a blacklist filter that tries to strip specific tags and event handler attributes, HTML5 introduces a large number of new tags and features that won’t match your old rules.
  8. And, yes, this is true, and introducing new security risks into existing legacy systems is something we try really hard to avoid as we build new standards. But you know what? Every single blacklist filter for HTML4 is already broken. How can I be so confident? Because things like this:
  9. And this:
  10. Get interpreted as valid script in HTML4 in some browsers and can be used to mount attacks! Does your filter block those? How many browsers did you test it in?
  11. Those examples are from a book called Web Application Obfuscation by Gareth Heyes, Mario Heidrich, Eduardo Vela Nava and David Lindsay. An ENTIRE 280 PAGE BOOK full of stuff like that. Those examples I showed you are only the shore of a Lovecraftian continent of horror.
  12. How could they fill 280 pages with this stuff, and why are all of our XSS filters broken? They work in very limited contexts, but in a broader sense, they were doomed from the start, because an XSS filter is a server-side attempt to simulate the client-side parsing and execution environment, but before HTML5, every browser did this differently, how they did it was a secret, browsers were chock-full of proprietary features, tags and syntax, and accepting bad markup was actually considered a feature, in the tradition of Postel’s Law.
  13. This is all to say that the security improvements of HTML5 start at the very foundations, because HTML5t’s the first version of HTML to specify a normative state machine for parsing, including handling error conditions. Yes, there are new tags and new syntax, but if you want to know how browsers are going to parse markup, for the first time you can find out, and you can have some reasonable confidence that different browsers are going to act in a mostly consistent manner.
  14. The result of standardizing parsing is that generously coercing shambling mounds of random line noise into an application is no longer a competitive feature! And this is an insight and an outcome that doesn’t just apply to parsing –
  15. By standardizing the technology for building Rich Web Applications, HTML5 began a fundamental shift in the security posture of the Web as a platform.One of the biggest false charges leveled against HTML5 is that it’s insecure because it’s “more complex than HTML4.” But that’s not the right comparison to make. HTML4 was never by itself the platform of the Web. The Rich Web Application has been with us for a decade, but it was built in terms of plugins – in Java, Flash and ActiveX.
  16. If you’re the creator of one of these proprietary rich web app platform whether browser or plugin, you need to attract developers, so you live or die by how much you let developers do, not by how many security restrictions you put on them. You compete for developers and once you have them they’re locked in. If you’re not happy with Java’s security record, you have to re-write your whole application to switch. If you’re a user, you can’t switch – you have to take it or leave it. On the contrary, if I was using an HTML5 app and my browser had a security record like Java, I could switch in a second, and the app developers wouldn’t have to change anything.
  17. So the incentives of the Open Web Platform are different than they’ve been: Proprietary platforms compete for developers by offering features, and they can keep them because switching costs are high. On an open platform, switching costs are low, so implementers have to compete for users by offering them quality, which includes security.
  18. But enough soap box ranting – we were talking about solving script injection.
  19. And even though we finally have some hope of an accurate simulation of the browser in HTML5, that’s still not a great strategy. It’s complex, it’s not future-proof, and it misses what’s called DOM XSS, vulnerabilities through data flows that can’t be filtered at the server because the server never sees them.If script injection is a security issue at the client layer, why not solve it in the client?
  20. Maybe you remember the scene in the Odyssey where they’re about to sail past the Sirens. Odysseus knows that he’ll go mad from the siren’s song, so he orders his crew to tie him to the mast and, whatever he says later, not to untie him.That’s kind of what CSP does. It lets an app tell the browser to tie it to the mast.
  21. This is an example of a CSP header, and you can see it’s pretty straightforward. We just list the origins that are allowed to load content.The difficult part here is that to get the full benefit, you can’t use inline script or css, and that’s pretty problematic for existing apps.
  22. We can …And CSP has a reporting feature, which makes deployment much easier, because you can measure what’s going to happen and build correct policies before you start enforcing them.
  23. So in CSP 1.1, we are working to fix this, by allowing whitelisting of inline scripts and css, along with other features like controlling the types of plugins that can run, and adding reporting to existing browser anti-XSS filters. So this is a great start on preventing XSS attacks that you can start using today, but there’s one other up and coming technology I want to touch on – and that’s HTML templates.
  24. So HTML templates are a new spec under development in the WebApps Working Group that allow you to declare templates as first-class client-side objects. Instead of dynamically building markup using strings concatenation and innerHTML, we’ll have a pattern that has the potential to be both faster and offer much better security against script injection.
  25. What this boils down to is that:
  26. OK, so we’ve solved XSS, which is a pretty good day’s work– but I also promised I’d show you how to build secure mashups in HTML5 – another thing that security folks like to say can’t be done.
  27. So what’s a mashup? It’s when you include content from multiple sites in a single app. And I think we’re all familiar with anonymous mashups, like putting Craigslist apartment listings onto a Google map, but what a lot people probably don’t think about is that almost every major app today is part mashup – and moreover, they’re authenticated mashups. With features like advertising, analytics and federated login, we’re sharing authenticated user data across origins at most places we visit on the Web.
  28. So Flash allows us to do this, using a policy file called crossdomain.xml, which defines ACLs for foreign SWFs. This policy file lets SWFs loaded from www.example-analytics.com to make requests, with cookies, and read the results, from www.foo.com.
  29. But we security folks are kind of cynical, we’ve seen it all. And my friend Jan recently quippped: Give someone an ACL and they’ll put in a *.So what happens if you put a * in crossdomain.xml?
  30. Oops.. If you put * in your master policy file, you just allowed any malicious SWF anywhere on the Internet to access all your user’s information. Game over. So that’s not great…
  31. And the answer is that, since the beginning of the Same-Origin Policy, there’s always been a loophole. If I load content, and it sources script from another domain, that script becomes part of my application, effectively allowing us to read that information across domains and use this as a communication channel.
  32. But still, everyone thinks this is OK. We security people warn that this is dangerous, but nobody thinks anything bad is going to happen, they trust the people they’re getting this script from.Until two weeks ago…
  33. When Facebook broke the Internet. Did anyone see this? If you went to any of thousands of sites on the web, instead of seeing that site, you got a Facebook error page instead. Do you want to see the one line of code the broke the Internet?
  34. Well, this is the mashup pattern for Facebook Connect. So one bug here, and your application is at its mercy. But still, this was just a bug, it wasn’t an attack.
  35. Hmm… This is what Facebook had to say, just a week after the connect fiasco. Now these aren’t related and I’m sure that Facebook has really good security measures in place to make sure that a compromise of a developer workstation doesn’t propagate out to impact code on the live site, but it should give you pause.The more we use insecure patterns like script src to connect the web, the more fragile we make it, and the more we make an individual API \\a single point of failure for the security of huge parts of the web, the harder the bad guys are going to try to exploit it.
  36. Script src gives you code that you have to trust, but CORS gives you data that you can validate.
  37. And it doesn’t introduce any new Cross-Site Request Forgery attack surface.
  38. And so, in just a few lines of code, we’ve locked our legacy mashup into a strong sandbox, and only let it pass notes. If it breaks or gets hacked, it can’t reach out and affect rest of our application.
  39. But there’s more to this than I first realized….I mentioned this pattern for safe mashups at the last W3Conf in 2011, and I’m sure I’m wasn’t the first to have done so, but I didn’t realize how important it was until I saw a talk by Devdatta Akhwe at last year’s USENIX Security.In one of those brilliant insights that seems obvious once you’ve heard it, Devdatta realized that this wasn’t just a useful trick for legacy mashups – that it is actually a fundamental building block allowing privilege separation in HTML5 applications.
  40. What he said was basically, what if I treat my own code, and the libraries I host on my own domain, as being just as potentially dangerous as that foreign mashup? After all, if I’m building a complex app with tens of thousands of lines of JavaScript code, surely there are some latent bugs in there.And actually, the vast majority of that code doesn’t even need to do sensitive things like access the user’s cookie or perform transactions. We can apply the same architectural principles of privilege separation we use for architecting browsers or operating systems to our HTML5 applications using this iframe plus postMessage pattern.
  41. And he found that, for real-world applications using off-the-shelf libraries, by changing just a few lines of code, it was possible to reduce the trusted computing base of these applications by 95%, isolating all of those latent bugs into strong, browser-provided, same-origin sandboxes. So go check out this paper. If people pay attention to it, I think it has the potential to be one of the most important computer security papers of the decade and hugely reshape the risk profile of client-side WebApps.
  42. I could go on about many more features, but I think that’s a pretty good start. I hope I’ve convinced you that HTML5 and the Open Web Platform are improving the security of the Web ecosystem. Rich Web Apps aren’t new, and HTML5 offers big security improvements compared to the proprietary plugin technologies it’s actually replacing.