SlideShare a Scribd company logo
Cyber Camp 2014 
(In)Security Implications in 
JavaScript Universe 
Stefano Di Paola, CTO Minded Security
$ whoami 
Stefano Di Paola @WisecWisec 
Research (Spare Time) 
 Bug Hunter & Sec Research (Pdf Uxss, Flash Security, 
HPP) 
 Software Security Since '99 
 Dealing with JavaScript since 2006 
Work 
CTO @ Minded Security Application Security Consulting 
Director of Minded Security Research Labs
What’s this talk about 
 Birth and Raise of an important language. 
 The security implication around it 
 Try to use the JavaScript phenomenon to 
understand some things about Security and Real World 
 I won’t say JavaScript is unsecure. It’d be a 
complete nonsense.
Brief History Of JS – 1990 - 2000 
1990 Only HTML 1996 Javascript is in the browser 1999 Ajax
Brief History 2000-2009 
Something’s 
Happening 
Can you 
see it?
Brief History 2009-2014 
 Browser Vendors are pushing 
new features: 
 improving speed 
 graphics capabilities 
 sound 
 Sounds Like a plan! 
 …and guess what’s the glue? 
JavaScript of course!
Brief History The big picture
PAST 
1996-2012
1996 - Why JS became so important? 
 Improve user experience during browsing. 
 On the other side gives a way to: 
 read 
 create 
 modify 
 delete page content.
Browser with new Powers 
I mean. 
 Without JavaScript a Browser was just a HTML 
Parser (Not only I know..). 
 With JavaScript a Browser has a whole new 
playground. 
 Can those features be abused?
Browser with new Powers - Risks 
 Browser now has to protect some way: 
 User Remote Data: WebSite A (evil) to read/modify/etc 
content using WebSite B (victim) abusing the victim’s 
browser. 
 User Local Data: A malicious site 
could try to access disk files. 
User Data 
is gone
Browser with new Powers - SOP 
 Concept of same-origin policy (SOP) dates back to 
Netscape Navigator 2 in 1995 
 Same Origin Policy: 
http://evil.com :80 
 Implementation of access control rules in hostile environment 
is also known as Sandbox
Subverting the SandBox – The old style 
“<html>..+ 
<html>.. taintedInput+”..</html>” 
<script>evilJs</script> 
..</html> 
taintedInput=<script>evilJs</script>
Subverting the SandBox – The old-new style 
Abuse the functionalities of a plugin that 
 behaves differently from the browser 
 gives too much power without controls. 
 in order to access data. 
whatever the browser rules are. 
Universal Cross Site Scripting
Subverting the SandBox – Acrobat Reader Plugin 
Example: Acrobat Reader Plugin UXSS 2006 
 Suppose a pdf is reachable from: 
http://www.google.com/doc.pdf 
Attacker adds 
http://www.google.com/doc.pdf?fdf=javascript:evilJS... 
And forces a browser’s victim to visit the url. 
The plugin executes the JavaScript as it originated from 
google.com 
 What happens when a user just have some pdf on it’s PC ? 
 an attacker could access to the whole filesystem!
Subverting the SandBox – The old-new-new style 
 Browser Extensions : 
 JavaScript running in extensions has much more power 
than on HTML pages. 
 can be developed by anyone 
 Could be malicious 
 ..or simply badly written (vulnerable to external 
attacks) 
 Very similar to plugin model but easier to develop. 
 Any user can install them 
 Useful for lot of stuff (Gmail Inbox Checking, Ad Block 
etc.)
Meantime.. 
On the Server Side..
Yay! Look Ma’ I’m on the Server Side! 
An early implementation of JavaScript on the server side but 
the results where not so nice: 
var year=eval("date['"+request["params"]["year"]+"'];"); 
 Became a Remote Code Execution! 
http://host/?year='+response.write(system("cat /etc/passwd"))+‘ 
Was a bank Web Application 
(implemented in 2003 tested by me in 2008).
Meantime.. 
On users PC
Mo’ Money Mo’ Trouble 
 It’s around 2005. 
 A new interesting thing happens. 
 JavaScript + Ajax increase the number of 
commercial web applications 
 The cost of computers lowers 
 The platforms are converging to a common 
one. The browser. 
 Big user base > Big money > Crime > Profit
What would a naive user do?
Man In The Browser - Banking Malware 
 In 2005 it was theorized for the first time the 
use of virus to hook browsers interaction with 
banking websites. 
 Takes advantage of the common interface 
the browser gives 
 Changes the page on the fly. 
 It’s a win-win. Browsers Rules are 
completely subverted! 
 Perfect Sandbox Bypass
Man In The Browser 
 Configuration Example:
Meantime.. 
On the Mobile..
Yay! Look Ma’ I’m in a telephone! 
 Every Mobile OS gives developers to use a so called 
webview. 
It’s 2011: iOS Skype HTML Injection on the username 
visualization. Lead to access to whatever the app can access. 
https://www.superevr.com/blog/2011/xss-in-skype-for-ios/
Just Before the Present – The JavaScript Situation 
It's 2011 
 WebSites are full of JavaScript coming from: 
 Advertising, 
 Web analytics, 
 User Interaction, 
 Helper libraries.
Just Before the Present - DOMinator 
 I wrote tool called DOMinator: 
 Modification of Firefox 
 Helps to track JavaScript flow during its 
execution 
 Alerts if there's some potentially exploitable 
flaw in the code. 
 Took first top 100 most visited sites, analyzed with it: 
 57 had at least some weakness in their 
JavaScript code.
Present 
2012-2014
Present + Past 
 Past stuff is actually (Mostly) still here :) 
 Some effort from browser vendors to improve SOP: 
 Content Security Policy 
 Implemented by all browsers 
 Not widely used by web applications. 
 Unfortunately everything is happening on top of an 
old model. 
There’s more! New JavaScript frameworks and 
models are gaining interest.
HTML Templating – Complex JS Models 
 Welcome to a new way to dynamically 
generate HTML page on the fly on the browser 
side! 
 Welcome HTML Templates 
 Welcome Client Side Full Dynamic Content 
 Welcome AngularJS and siblings!
AngularJS – a New Sandbox to Escape From 
{{ qty * cost }} 
not directly executed by the browser’s JS Parser. 
 A Expression parser is implemented on top of JS. 
 It’s actually a Sandbox around JS implemented in JS.
AngularJS – a New Sandbox to Escape From 
 Try to run {{alert(1)}} 
 Sandbox removes access to “dangerous 
objects” and their attributes. 
 Still often the Sandbox security is a long 
process to be refined in time. 
 Here’s a (mindblowing) Sandbox bypass 
(fixed): 
''.sub.call.call( 
({})["constructor"].getOwnPropertyDescriptor( 
''.sub.__proto__, "constructor").value, 
null, 
"alert(1)" )() 
https://code.google.com/p/mustache-security/wiki/AngularJS
AngularJS – a New Problem to Face 
 User content is completely generated on the 
client. 
 How can we create a pdf on the server side 
using the user page? 
1.Extract the generated HTML 
2.Send it to the server 
3.Use a browser on the server to recreat the 
graphics 
4.Convert it to PDF.
AngularJS – a New Problem to Face 
 User content is completely generated on the 
client. 
 How can we create a pdf on the server side 
using the user page? 
1.Extract the generated HTML 
2.Send it to the server 
3.Use a browser on the server to recreated the 
graphics
PDF Generation from Complex Content 
 WebKit – Webkit2PDF 
 Other Browser Based Solution. 
 What could go wrong with the following content? 
<iframe src=“http://internalRouter/”></iframe> 
 Parsed by a browser on the server side? 
 Write access to the whole internal network as if you 
had access with your browser to Web Server Network! 
 Arbitrary Server Side Requests
(In)Security Implication in the JS Universe
JavaScript 
in 
the 
full 
Web 
Stack!
JavaScript on the Server Side.. Again! 
 JavaScript is used by hundreds of thousands of 
developers. 
 It's too popular. 
There's a new breakthrough. 
 NodeJS - JS on the server side. - Welcome Back 
2003. 
 MongoDB JavaScript on the DBMS Layer
JavaScript on the Server Side.. Again!
JavaScript on the Server Side.. Again! 
 Request the following to a node application: 
Client: http://127.0.0.1:49090/?parameter=sss&parameter=fff 
Node: { parameter: [ 'sss', 'fff' ] } 
Client: http://127.0.0.1:49090/?parameter[XX]=sss&parameter[YYY]=fff 
Node: { parameter: { XX: 'sss', YYY: 'fff' } } 
 Node gets the query string and transform it in 
JavaScript Object Notation (JSON). 
 Completely Different from all other Web Servers!
JavaScript on a DB! SQL Injection?KindOf 
 Is still possible some other fancy server side 
attack? 
Let’s See. 
1. Create a simple nodeJS + MongoDB Application 
//MongoDB Access from NodeJS 
User.findOne({user: req.body.user, pass: req.body.pass},... 
2.Test the environment 
Client Request: user=aUserName&pass=aPassword 
Node sees as: { user: 'aUserName', pass: 'aPassword' }
JavaScript on a DB! SQL Injection?KindOf 
3. Now look at MongoDB Manual and find the 
interesting parts. 
http://docs.mongodb.org/manual/reference/sql-comparison/ 
4. Identify one of many attacks that can be 
performed: 
Client Request: user[$ne]=aUserName&pass[$ne]=aPassword 
Node sees as: { user: { '$ne': 'aUserName' }, pass: { '$ne': 
'aPassword' } } 
MongoDB Sees as: SELECT * from users where user != ‘aUsername’ 
and pass != ‘aPassword’;
Future 
2015-?
What’s going on? 
 Web as Gaming Platform No Plugins (QuakeJs) 
 Possibile to “compile” games written in C/C++ in 
asm.js. (Speed 1.5 respect to native ones!)
What’s going on? Mobile? 
 FirefoxOS (Mobile Applications in HTML5 + JS)
What’s going on? Anything Left? 
 JS Internet Of Things (JS Interpreter in a chip). 
Projects about creating an operative system on top of 
nodeJS.
Conclusions 
 We live in a world that changes faster than before. 
 New interesting technologies could get a huge user base in 
few months 
 When happens Can everything you moves even See faster 
it 
 Without giving the right time to understand the implications 
or the subtleties underneath Now? 
them. 
 JavaScript seems easy but as usually happens quality code 
means more than basic JS skills. 
 Thing are getting even harder. 
 Yet we need talented people to break and build code and 
innovate as much as possible!
Future?? 
I cant even imagine how much intricate 
Will be next years! 
And This is only one Language!
Thank you! 
/*Go and Exploit Ethically */ 
Q&A 
Twitter: @wisecwisec 
https://www.mindedsecurity.com 
Mail: stefano.dipaola@mindedsecurity.com

More Related Content

PPTX
Preventing In-Browser Malicious Code Execution
PDF
Comparing DOM XSS Tools On Real World Bug
DOC
Same Origin Policy Weaknesses
PPT
Same Origin Policy Weaknesses
PPTX
Java script, security and you - Tri-Cities Javascript Developers Group
PDF
Advanced JS Deobfuscation
PDF
Breaking AngularJS Javascript sandbox
PPTX
Phu appsec13
Preventing In-Browser Malicious Code Execution
Comparing DOM XSS Tools On Real World Bug
Same Origin Policy Weaknesses
Same Origin Policy Weaknesses
Java script, security and you - Tri-Cities Javascript Developers Group
Advanced JS Deobfuscation
Breaking AngularJS Javascript sandbox
Phu appsec13

What's hot (20)

PDF
When Ajax Attacks! Web application security fundamentals
PPTX
W3 conf hill-html5-security-realities
PDF
ng-owasp: OWASP Top 10 for AngularJS Applications
PPT
Examining And Bypassing The IE8 XSS Filter
PDF
Web Security - OWASP - SQL injection & Cross Site Scripting XSS
PDF
Securing your AngularJS Application
PDF
DOM-based XSS
PDF
whats wrong with modern security tools and other blurps
 
PPTX
Owasp web application security trends
PPT
Static Analysis: The Art of Fighting without Fighting
PDF
XSS Injection Vulnerabilities
PDF
Secure java script-for-developers
PPTX
MITM Attacks on HTTPS: Another Perspective
PDF
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
PDF
New Methods in Automated XSS Detection & Dynamic Exploit Creation
PPTX
Cross Site Scripting (XSS)
PPT
Identifying Cross Site Scripting Vulnerabilities in Web Applications
PPTX
Web Application Security in front end
PPTX
Javascript Security - Three main methods of defending your MEAN stack
When Ajax Attacks! Web application security fundamentals
W3 conf hill-html5-security-realities
ng-owasp: OWASP Top 10 for AngularJS Applications
Examining And Bypassing The IE8 XSS Filter
Web Security - OWASP - SQL injection & Cross Site Scripting XSS
Securing your AngularJS Application
DOM-based XSS
whats wrong with modern security tools and other blurps
 
Owasp web application security trends
Static Analysis: The Art of Fighting without Fighting
XSS Injection Vulnerabilities
Secure java script-for-developers
MITM Attacks on HTTPS: Another Perspective
Defeating xss-and-xsrf-with-my faces-frameworks-steve-wolf
New Methods in Automated XSS Detection & Dynamic Exploit Creation
Cross Site Scripting (XSS)
Identifying Cross Site Scripting Vulnerabilities in Web Applications
Web Application Security in front end
Javascript Security - Three main methods of defending your MEAN stack
Ad

Similar to (In)Security Implication in the JS Universe (20)

PDF
Get Ahead with HTML5 on Moible
PDF
Isomorphic JavaScript: #DevBeat Master Class
PDF
Enjoying the full stack - Frontend 2010
PPTX
Front End Development | Introduction
PDF
Bruce lawson-over-the-air
PDF
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
PDF
Angular js mobile jsday 2014 - Verona 14 may
PDF
JavaScript Mini FAQ 1st Edition by Danny Goodman ISBN
PDF
PDF
PDF
Thug: a new low-interaction honeyclient
PDF
JavaScript Mini FAQ 1st Edition by Danny Goodman ISBN
PDF
HTML5 Can't Do That
PDF
[convergese] Adaptive Images in Responsive Web Design
PDF
Web app and more
PDF
Web Apps and more
PDF
Front-end. Global domination
PDF
Frontend. Global domination.
PPTX
txWelcome to Javascript Welcome to Javascript.pp
PDF
Js foo - Sept 8 upload
Get Ahead with HTML5 on Moible
Isomorphic JavaScript: #DevBeat Master Class
Enjoying the full stack - Frontend 2010
Front End Development | Introduction
Bruce lawson-over-the-air
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
Angular js mobile jsday 2014 - Verona 14 may
JavaScript Mini FAQ 1st Edition by Danny Goodman ISBN
Thug: a new low-interaction honeyclient
JavaScript Mini FAQ 1st Edition by Danny Goodman ISBN
HTML5 Can't Do That
[convergese] Adaptive Images in Responsive Web Design
Web app and more
Web Apps and more
Front-end. Global domination
Frontend. Global domination.
txWelcome to Javascript Welcome to Javascript.pp
Js foo - Sept 8 upload
Ad

Recently uploaded (20)

PDF
Triggering QUIC, presented by Geoff Huston at IETF 123
PPTX
artificial intelligence overview of it and more
DOCX
Unit-3 cyber security network security of internet system
PDF
RPKI Status Update, presented by Makito Lay at IDNOG 10
PDF
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
PPTX
Slides PPTX World Game (s) Eco Economic Epochs.pptx
PDF
Paper PDF World Game (s) Great Redesign.pdf
PPTX
Digital Literacy And Online Safety on internet
PPTX
international classification of diseases ICD-10 review PPT.pptx
PPTX
SAP Ariba Sourcing PPT for learning material
PPTX
PptxGenJS_Demo_Chart_20250317130215833.pptx
PPTX
Job_Card_System_Styled_lorem_ipsum_.pptx
PDF
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
PPTX
Internet___Basics___Styled_ presentation
PPTX
QR Codes Qr codecodecodecodecocodedecodecode
PDF
Decoding a Decade: 10 Years of Applied CTI Discipline
PDF
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
PDF
An introduction to the IFRS (ISSB) Stndards.pdf
Triggering QUIC, presented by Geoff Huston at IETF 123
artificial intelligence overview of it and more
Unit-3 cyber security network security of internet system
RPKI Status Update, presented by Makito Lay at IDNOG 10
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
Slides PPTX World Game (s) Eco Economic Epochs.pptx
Paper PDF World Game (s) Great Redesign.pdf
Digital Literacy And Online Safety on internet
international classification of diseases ICD-10 review PPT.pptx
SAP Ariba Sourcing PPT for learning material
PptxGenJS_Demo_Chart_20250317130215833.pptx
Job_Card_System_Styled_lorem_ipsum_.pptx
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
Internet___Basics___Styled_ presentation
QR Codes Qr codecodecodecodecocodedecodecode
Decoding a Decade: 10 Years of Applied CTI Discipline
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
522797556-Unit-2-Temperature-measurement-1-1.pptx
Design_with_Watersergyerge45hrbgre4top (1).ppt
An introduction to the IFRS (ISSB) Stndards.pdf

(In)Security Implication in the JS Universe

  • 1. Cyber Camp 2014 (In)Security Implications in JavaScript Universe Stefano Di Paola, CTO Minded Security
  • 2. $ whoami Stefano Di Paola @WisecWisec Research (Spare Time)  Bug Hunter & Sec Research (Pdf Uxss, Flash Security, HPP)  Software Security Since '99  Dealing with JavaScript since 2006 Work CTO @ Minded Security Application Security Consulting Director of Minded Security Research Labs
  • 3. What’s this talk about  Birth and Raise of an important language.  The security implication around it  Try to use the JavaScript phenomenon to understand some things about Security and Real World  I won’t say JavaScript is unsecure. It’d be a complete nonsense.
  • 4. Brief History Of JS – 1990 - 2000 1990 Only HTML 1996 Javascript is in the browser 1999 Ajax
  • 5. Brief History 2000-2009 Something’s Happening Can you see it?
  • 6. Brief History 2009-2014  Browser Vendors are pushing new features:  improving speed  graphics capabilities  sound  Sounds Like a plan!  …and guess what’s the glue? JavaScript of course!
  • 7. Brief History The big picture
  • 9. 1996 - Why JS became so important?  Improve user experience during browsing.  On the other side gives a way to:  read  create  modify  delete page content.
  • 10. Browser with new Powers I mean.  Without JavaScript a Browser was just a HTML Parser (Not only I know..).  With JavaScript a Browser has a whole new playground.  Can those features be abused?
  • 11. Browser with new Powers - Risks  Browser now has to protect some way:  User Remote Data: WebSite A (evil) to read/modify/etc content using WebSite B (victim) abusing the victim’s browser.  User Local Data: A malicious site could try to access disk files. User Data is gone
  • 12. Browser with new Powers - SOP  Concept of same-origin policy (SOP) dates back to Netscape Navigator 2 in 1995  Same Origin Policy: http://evil.com :80  Implementation of access control rules in hostile environment is also known as Sandbox
  • 13. Subverting the SandBox – The old style “<html>..+ <html>.. taintedInput+”..</html>” <script>evilJs</script> ..</html> taintedInput=<script>evilJs</script>
  • 14. Subverting the SandBox – The old-new style Abuse the functionalities of a plugin that  behaves differently from the browser  gives too much power without controls.  in order to access data. whatever the browser rules are. Universal Cross Site Scripting
  • 15. Subverting the SandBox – Acrobat Reader Plugin Example: Acrobat Reader Plugin UXSS 2006  Suppose a pdf is reachable from: http://www.google.com/doc.pdf Attacker adds http://www.google.com/doc.pdf?fdf=javascript:evilJS... And forces a browser’s victim to visit the url. The plugin executes the JavaScript as it originated from google.com  What happens when a user just have some pdf on it’s PC ?  an attacker could access to the whole filesystem!
  • 16. Subverting the SandBox – The old-new-new style  Browser Extensions :  JavaScript running in extensions has much more power than on HTML pages.  can be developed by anyone  Could be malicious  ..or simply badly written (vulnerable to external attacks)  Very similar to plugin model but easier to develop.  Any user can install them  Useful for lot of stuff (Gmail Inbox Checking, Ad Block etc.)
  • 17. Meantime.. On the Server Side..
  • 18. Yay! Look Ma’ I’m on the Server Side! An early implementation of JavaScript on the server side but the results where not so nice: var year=eval("date['"+request["params"]["year"]+"'];");  Became a Remote Code Execution! http://host/?year='+response.write(system("cat /etc/passwd"))+‘ Was a bank Web Application (implemented in 2003 tested by me in 2008).
  • 20. Mo’ Money Mo’ Trouble  It’s around 2005.  A new interesting thing happens.  JavaScript + Ajax increase the number of commercial web applications  The cost of computers lowers  The platforms are converging to a common one. The browser.  Big user base > Big money > Crime > Profit
  • 21. What would a naive user do?
  • 22. Man In The Browser - Banking Malware  In 2005 it was theorized for the first time the use of virus to hook browsers interaction with banking websites.  Takes advantage of the common interface the browser gives  Changes the page on the fly.  It’s a win-win. Browsers Rules are completely subverted!  Perfect Sandbox Bypass
  • 23. Man In The Browser  Configuration Example:
  • 24. Meantime.. On the Mobile..
  • 25. Yay! Look Ma’ I’m in a telephone!  Every Mobile OS gives developers to use a so called webview. It’s 2011: iOS Skype HTML Injection on the username visualization. Lead to access to whatever the app can access. https://www.superevr.com/blog/2011/xss-in-skype-for-ios/
  • 26. Just Before the Present – The JavaScript Situation It's 2011  WebSites are full of JavaScript coming from:  Advertising,  Web analytics,  User Interaction,  Helper libraries.
  • 27. Just Before the Present - DOMinator  I wrote tool called DOMinator:  Modification of Firefox  Helps to track JavaScript flow during its execution  Alerts if there's some potentially exploitable flaw in the code.  Took first top 100 most visited sites, analyzed with it:  57 had at least some weakness in their JavaScript code.
  • 29. Present + Past  Past stuff is actually (Mostly) still here :)  Some effort from browser vendors to improve SOP:  Content Security Policy  Implemented by all browsers  Not widely used by web applications.  Unfortunately everything is happening on top of an old model. There’s more! New JavaScript frameworks and models are gaining interest.
  • 30. HTML Templating – Complex JS Models  Welcome to a new way to dynamically generate HTML page on the fly on the browser side!  Welcome HTML Templates  Welcome Client Side Full Dynamic Content  Welcome AngularJS and siblings!
  • 31. AngularJS – a New Sandbox to Escape From {{ qty * cost }} not directly executed by the browser’s JS Parser.  A Expression parser is implemented on top of JS.  It’s actually a Sandbox around JS implemented in JS.
  • 32. AngularJS – a New Sandbox to Escape From  Try to run {{alert(1)}}  Sandbox removes access to “dangerous objects” and their attributes.  Still often the Sandbox security is a long process to be refined in time.  Here’s a (mindblowing) Sandbox bypass (fixed): ''.sub.call.call( ({})["constructor"].getOwnPropertyDescriptor( ''.sub.__proto__, "constructor").value, null, "alert(1)" )() https://code.google.com/p/mustache-security/wiki/AngularJS
  • 33. AngularJS – a New Problem to Face  User content is completely generated on the client.  How can we create a pdf on the server side using the user page? 1.Extract the generated HTML 2.Send it to the server 3.Use a browser on the server to recreat the graphics 4.Convert it to PDF.
  • 34. AngularJS – a New Problem to Face  User content is completely generated on the client.  How can we create a pdf on the server side using the user page? 1.Extract the generated HTML 2.Send it to the server 3.Use a browser on the server to recreated the graphics
  • 35. PDF Generation from Complex Content  WebKit – Webkit2PDF  Other Browser Based Solution.  What could go wrong with the following content? <iframe src=“http://internalRouter/”></iframe>  Parsed by a browser on the server side?  Write access to the whole internal network as if you had access with your browser to Web Server Network!  Arbitrary Server Side Requests
  • 37. JavaScript in the full Web Stack!
  • 38. JavaScript on the Server Side.. Again!  JavaScript is used by hundreds of thousands of developers.  It's too popular. There's a new breakthrough.  NodeJS - JS on the server side. - Welcome Back 2003.  MongoDB JavaScript on the DBMS Layer
  • 39. JavaScript on the Server Side.. Again!
  • 40. JavaScript on the Server Side.. Again!  Request the following to a node application: Client: http://127.0.0.1:49090/?parameter=sss&parameter=fff Node: { parameter: [ 'sss', 'fff' ] } Client: http://127.0.0.1:49090/?parameter[XX]=sss&parameter[YYY]=fff Node: { parameter: { XX: 'sss', YYY: 'fff' } }  Node gets the query string and transform it in JavaScript Object Notation (JSON).  Completely Different from all other Web Servers!
  • 41. JavaScript on a DB! SQL Injection?KindOf  Is still possible some other fancy server side attack? Let’s See. 1. Create a simple nodeJS + MongoDB Application //MongoDB Access from NodeJS User.findOne({user: req.body.user, pass: req.body.pass},... 2.Test the environment Client Request: user=aUserName&pass=aPassword Node sees as: { user: 'aUserName', pass: 'aPassword' }
  • 42. JavaScript on a DB! SQL Injection?KindOf 3. Now look at MongoDB Manual and find the interesting parts. http://docs.mongodb.org/manual/reference/sql-comparison/ 4. Identify one of many attacks that can be performed: Client Request: user[$ne]=aUserName&pass[$ne]=aPassword Node sees as: { user: { '$ne': 'aUserName' }, pass: { '$ne': 'aPassword' } } MongoDB Sees as: SELECT * from users where user != ‘aUsername’ and pass != ‘aPassword’;
  • 44. What’s going on?  Web as Gaming Platform No Plugins (QuakeJs)  Possibile to “compile” games written in C/C++ in asm.js. (Speed 1.5 respect to native ones!)
  • 45. What’s going on? Mobile?  FirefoxOS (Mobile Applications in HTML5 + JS)
  • 46. What’s going on? Anything Left?  JS Internet Of Things (JS Interpreter in a chip). Projects about creating an operative system on top of nodeJS.
  • 47. Conclusions  We live in a world that changes faster than before.  New interesting technologies could get a huge user base in few months  When happens Can everything you moves even See faster it  Without giving the right time to understand the implications or the subtleties underneath Now? them.  JavaScript seems easy but as usually happens quality code means more than basic JS skills.  Thing are getting even harder.  Yet we need talented people to break and build code and innovate as much as possible!
  • 48. Future?? I cant even imagine how much intricate Will be next years! And This is only one Language!
  • 49. Thank you! /*Go and Exploit Ethically */ Q&A Twitter: @wisecwisec https://www.mindedsecurity.com Mail: stefano.dipaola@mindedsecurity.com