SlideShare a Scribd company logo
1 of 44
Download to read offline
On the Static Analysis of Hybrid Mobile Apps
A Report on the State of Apache Cordova Nation
Achim D. Brucker and Michael Herzberg
{a.brucker,msherzberg1}@sheffield.ac.uk
Department of Computer Science, The University of Sheffield, Sheffield, UK
(Parts of this research were done while the authors were working at SAP SE in Germany.)
International Symposium on Engineering Secure Software and Systems (ESSoS 2016)
April 6 - 8, 2016, London, UK
On the Static Analysis of Hybrid Mobile Apps: A Report on the State of Apache Cordova Nation
Abstract
Developing mobile applications is a challenging business: developers need to support multiple platforms and,
at the same time, need to cope with limited resources, as the revenue generated by an average app is rather
small. This results in an increasing use of cross-platform development frameworks that allow developing an
app once and offering it on multiple mobile platforms such as Android, iOS, or Windows.
Apache Cordova is a popular framework for developing multi-platform apps. Cordova combines HTML5 and
JavaScript with native application code. Combining web and native technologies creates new security
challenges as, e.g., an XSS attacker becomes more powerful.
In this paper, we present a novel approach for statically analysing the foreign language calls. We evaluate our
approach by analysing the top Cordova apps from Google Play. Moreover, we report on the current state of the
overall quality and security of Cordova apps.
Keywords: static program analysis, static application security testing, Android, Cordova, hybrid mobile apps.
Outline
1 Motivation: Hybrid Mobile Apps and their Security Challenges
2 Real World Cordova Usage
3 Static Analysis for Hybrid Apps: Building a Unified Call Graph
4 Quality of the Unified Call Graph
5 Conclusions
Motivation: Hybrid Mobile Apps and their Security Challenges
What is a Hybrid App?
Native, HTML5, or hybrid
Native apps
Java  Swift  C#
Developed for a specific
platform
All features available
Web apps
HTML5 and JS
Hosted on server, all
platforms
No access to device
features
Platform-specific Platform-independent
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 4
Motivation: Hybrid Mobile Apps and their Security Challenges
What is a Hybrid App?
Native, HTML5, or hybrid
Native apps
Java  Swift  C#
Developed for a specific
platform
All features available
+
Hybrid apps
HTML5, JS, and native
Build once, run everywhere
Access to device features
through plugins
Web apps
HTML5 and JS
Hosted on server, all
platforms
No access to device
features
Platform-specific Platform-independent
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 4
Motivation: Hybrid Mobile Apps and their Security Challenges
Why Apache Cordova?
https://cordova.apache.org/
Apache Cordova is most popular hybrid app framework
Open source
Many companies offer Apache Cordova plus commercial plugins (e.g., Adobe PhoneGap or
SAP Kapsel)
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 5
Motivation: Hybrid Mobile Apps and their Security Challenges
The Apache Cordova Framework for Android
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 6
Motivation: Hybrid Mobile Apps and their Security Challenges
Example app
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 7
Motivation: Hybrid Mobile Apps and their Security Challenges
Technical view
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 8
Motivation: Hybrid Mobile Apps and their Security Challenges
Technical view
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 8
Motivation: Hybrid Mobile Apps and their Security Challenges
Example: Get Phone Number
function showPhoneNumber(name) {
var successCallback = function(contact) {
alert("Phone number: " + contacts.phone);
}
var failureCallback = ...
cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]);
}
class ContactsPlugin extends CordovaPlugin {
boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) {
if ("find".equals(action)) {
String name = args.get(0).name;
find(name, callbackContext);
} else if ("create".equals(action)) ...
}
void find(String name, CallbackContext callbackContext) {
Contact contact = query("SELECT ... where name=" + name);
callbackContext.success(contact);
}
}
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
Motivation: Hybrid Mobile Apps and their Security Challenges
Example: Get Phone Number
function showPhoneNumber(name) {
var successCallback = function(contact) {
alert("Phone number: " + contacts.phone);
}
var failureCallback = ...
cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]);
}
class ContactsPlugin extends CordovaPlugin {
boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) {
if ("find".equals(action)) {
String name = args.get(0).name;
find(name, callbackContext);
} else if ("create".equals(action)) ...
}
void find(String name, CallbackContext callbackContext) {
Contact contact = query("SELECT ... where name=" + name);
callbackContext.success(contact);
}
}
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
Motivation: Hybrid Mobile Apps and their Security Challenges
Example: Get Phone Number
function showPhoneNumber(name) {
var successCallback = function(contact) {
alert("Phone number: " + contacts.phone);
}
var failureCallback = ...
cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]);
}
class ContactsPlugin extends CordovaPlugin {
boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) {
if ("find".equals(action)) {
String name = args.get(0).name;
find(name, callbackContext);
} else if ("create".equals(action)) ...
}
void find(String name, CallbackContext callbackContext) {
Contact contact = query("SELECT ... where name=" + name);
callbackContext.success(contact);
}
}
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
Motivation: Hybrid Mobile Apps and their Security Challenges
Example: Get Phone Number
function showPhoneNumber(name) {
var successCallback = function(contact) {
alert("Phone number: " + contacts.phone);
}
var failureCallback = ...
cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]);
}
class ContactsPlugin extends CordovaPlugin {
boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) {
if ("find".equals(action)) {
String name = args.get(0).name;
find(name, callbackContext);
} else if ("create".equals(action)) ...
}
void find(String name, CallbackContext callbackContext) {
Contact contact = query("SELECT ... where name=" + name);
callbackContext.success(contact);
}
}
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
Motivation: Hybrid Mobile Apps and their Security Challenges
Example: Get Phone Number
function showPhoneNumber(name) {
var successCallback = function(contact) {
alert("Phone number: " + contacts.phone);
}
var failureCallback = ...
cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]);
}
class ContactsPlugin extends CordovaPlugin {
boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) {
if ("find".equals(action)) {
String name = args.get(0).name;
find(name, callbackContext);
} else if ("create".equals(action)) ...
}
void find(String name, CallbackContext callbackContext) {
Contact contact = query("SELECT ... where name=" + name);
callbackContext.success(contact);
}
}
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
Motivation: Hybrid Mobile Apps and their Security Challenges
Example: Get Phone Number
function showPhoneNumber(name) {
var successCallback = function(contact) {
alert("Phone number: " + contacts.phone);
}
var failureCallback = ...
cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]);
}
class ContactsPlugin extends CordovaPlugin {
boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) {
if ("find".equals(action)) {
String name = args.get(0).name;
find(name, callbackContext);
} else if ("create".equals(action)) ...
}
void find(String name, CallbackContext callbackContext) {
Contact contact = query("SELECT ... where name=" + name);
callbackContext.success(contact);
}
}
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
Motivation: Hybrid Mobile Apps and their Security Challenges
Example: Get Phone Number
function showPhoneNumber(name) {
var successCallback = function(contact) {
alert("Phone number: " + contacts.phone);
}
var failureCallback = ...
cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]);
}
class ContactsPlugin extends CordovaPlugin {
boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) {
if ("find".equals(action)) {
String name = args.get(0).name;
find(name, callbackContext);
} else if ("create".equals(action)) ...
}
void find(String name, CallbackContext callbackContext) {
Contact contact = query("SELECT ... where name=" + name);
callbackContext.success(contact);
}
}
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
Motivation: Hybrid Mobile Apps and their Security Challenges
First security assessment
Problem: JS/Java Bridge is vulnerable to
injection attacks
For regular apps: Static Application
Security Testing (SAST)
But: No support for cross-language analysis
Our goal:
Provide basis (call graph) to apply SAST to
hybrid mobile apps
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 10
Outline
1 Motivation: Hybrid Mobile Apps and their Security Challenges
2 Real World Cordova Usage
3 Static Analysis for Hybrid Apps: Building a Unified Call Graph
4 Quality of the Unified Call Graph
5 Conclusions
Real World Cordova Usage
What we were interested in
Main goals:
Understand the use of Cordova
Learn requirements for Cordova security testing tools
Looking for answers for questions like
How many apps are using Cordova?
How is Cordova used by app developers?
Are cross-language calls common or not?
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 12
Real World Cordova Usage
Test sets
Selection of apps
all apps that ship Cordova from Google’s Top 1000:
100 apps ship Cordova plugins
only 50 actually use Cordova (5%)
three selected apps from SAP (using SAP Kapsel)
one artificial test app (to test our tool)
Manual analysis of 8 apps (including one from SAP)
to understand the use of Cordova
to assess the quality of our automated analysis
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 13
Real World Cordova Usage
What we have learned: plugin use
Plugins are used for
accessing device information
showing native dialog boxes and
splash screens
accessing network information
accessing the file storage
accessing the camera
. . .
But: Many different versions and some even
modified!
Plugin
device 52%
inappbrowser 50%
dialogs 40%
splashscreen 36%
network-information 28%
file 28%
console 24%
camera 22%
statusbar 22%
PushPlugin 22%
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 14
Real World Cordova Usage
What we have learned: app size
App size:
mobile apps are not
always small
SAP apps seem to be
larger than the average
Exceptional apps:
No HTML/JS in APK
Ship Cordova, but do not use
it
App Category JS [kLoC] Java [kLoC]
sap01 Finance 35.5 17.0
sap02 Business 345.3 53.5
sap03 Business 572.3 135.8
app01 Finance 26.3 17.8
app02 Finance 11.2 16.8
app03 Social 4.6 103.7
app04 Business 37.5 16.8
app05 Finance 20.0 44.8
app06 Finance 30.4 24.3
app07 Travel & Local 129.0 304.0
app08 Entertainment 36.7 23.0
app09 Lifestyle 36.3 44.7
app10 Finance 43.7 18.4
app11 Business 14.0 438.9
.
.
.
.
.
.
.
.
.
.
.
.
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 15
Outline
1 Motivation: Hybrid Mobile Apps and their Security Challenges
2 Real World Cordova Usage
3 Static Analysis for Hybrid Apps: Building a Unified Call Graph
4 Quality of the Unified Call Graph
5 Conclusions
Static Analysis for Hybrid Apps: Building a Unified Call Graph
Challenges
Based on the examined apps:
Cordova relies heavily on dynamic mechanisms, both on JavaScript and Java side
Developers modify their plugins and sometimes implement their own
Deep framework analysis Modelling framework Modelling plugins
Closest to the actual
program
But: Framework very
expensive
Models the Cordova
framework
Analyses plugins
Models both framework
and plugins
Analyses only UI and
business logic part
But: Developers can
write own plugins
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 17
Static Analysis for Hybrid Apps: Building a Unified Call Graph
Our approach:
analyze plugins, but model the Cordova framework
First build call graphs of Java and JavaScript separatly
Connect them using four heuristics that exploit frequent coding patterns:
ConvertModules
ReplaceCordovaExec
FilterJavaCallSites
FilterJSFrameworks
Result:
Unified Call Graph
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 18
Static Analysis for Hybrid Apps: Building a Unified Call Graph
ConvertModules
define("com.foo.contacts", function(require, exports, module) {
exports.find = function(successCallback, name) {
cordova.exec(successCallback, null, "ContactsPlugin", "find", [{"name" : name}]);
}
});
...
var successCallback = function(contact) {
alert("Phone number: " + contacts.phone);
}
plugins.contacts.find(successCallback, "Peter");
Problem:
Not all callback functions are defined within the plugin
Difficult to track callback functions from app code
Solution:
Substitute dynamic mechanism with unique, global variable
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 19
Static Analysis for Hybrid Apps: Building a Unified Call Graph
ConvertModules
define("com.foo.contacts", function(require, exports, module) {
plugins.contacts.find = function(successCallback, name) {
cordova.exec(successCallback, null, "ContactsPlugin", "find", [{"name" : name}]);
}
});
...
var successCallback = function(contact) {
alert("Phone number: " + contacts.phone);
}
plugins.contacts.find(successCallback, "Peter");
Problem:
Not all callback functions are defined within the plugin
Difficult to track callback functions from app code
Solution:
Substitute dynamic mechanism with unique, global variable
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 19
Static Analysis for Hybrid Apps: Building a Unified Call Graph
ConvertModules: Results
Most useful for
small plugins
more precise analysis
Allows finding of callback functions in app code
Less errors due to less ambiguity of dynamic mechanism
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 20
Static Analysis for Hybrid Apps: Building a Unified Call Graph
ReplaceCordovaExec
function showPhoneNumber(name) {
var successCallback = function(contact) {
alert("Phone number: "+contacts.phone);
}
cordova.exec(successCallback, null, "ContactsPlugin", "find", [{"name" : name}]);
}
Problem:
Callback call sites are hard to find
No context-sensitivity
Solution:
Stub the exec method
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 21
Static Analysis for Hybrid Apps: Building a Unified Call Graph
ReplaceCordovaExec
function showPhoneNumber(name) {
var successCallback = function(contact) {
alert("Phone number: "+contacts.phone);
}
function stub1(succ, fail) {
succ(null);
fail(null);
}
stub1(successCallback, null, "ContactsPlugin", "find", [{"name" : name}]);
}
Problem:
Callback call sites are hard to find
No context-sensitivity
Solution:
Stub the exec method
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 21
Static Analysis for Hybrid Apps: Building a Unified Call Graph
ReplaceCordovaExec: Results
Neccessary to find any Java to JavaScript calls
Most apps use exec to communicate, only some bypass it
Inexpensive way to get context-sensitivity where it is needed the most
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 22
Static Analysis for Hybrid Apps: Building a Unified Call Graph
FilterJavaCallSites
class ContactsPlugin extends CordovaPlugin {
boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) {
if ("find".equals(action)) {
String name = args.get(0).name;
find(name, callbackContext);
} else if ("create".equals(action)) ...
}
void find(String name, CallbackContext callbackContext) {
Contact contact = query("SELECT ... where name=" + name);
callbackContext.success(contact);
}
}
Problem:
How to determine the targets of the callbackContext calls?
Can we use the pattern of the action usage?
Solution:
Determine which callbackContext calls are reachable
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 23
Static Analysis for Hybrid Apps: Building a Unified Call Graph
FilterJavaCallSites: details
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 24
Static Analysis for Hybrid Apps: Building a Unified Call Graph
FilterJavaCallSites: details
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 24
Static Analysis for Hybrid Apps: Building a Unified Call Graph
FilterJavaCallSites: details
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 24
Static Analysis for Hybrid Apps: Building a Unified Call Graph
FilterJavaCallSites: results
Developers all use action variable similarly
Therefore: Many incorrect edges avoided
But: A few calls from Java to JavaScript are missed now
Some store the callbackContext and call asynchronously
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 25
Outline
1 Motivation: Hybrid Mobile Apps and their Security Challenges
2 Real World Cordova Usage
3 Static Analysis for Hybrid Apps: Building a Unified Call Graph
4 Quality of the Unified Call Graph
5 Conclusions
Quality of the Unified Call Graph
What we have learned: app size and cross-language calls
Cross-language calls:
calls from Java to JS:
very common
calls from JS to Java:
surprisingly uncommon
App Category Java2JS JS2Java JS [kLoC] Java [kLoC]
sap01 Finance 2 12 35.5 17.0
sap02 Business 20814 39 345.3 53.5
sap03 Business 9531 75 572.3 135.8
app01 Finance 9 13 26.3 17.8
app02 Finance 2 10 11.2 16.8
app03 Social 2349 31 4.6 103.7
app04 Business 1 6 37.5 16.8
app05 Finance 6 26 20.0 44.8
app06 Finance 693 70 30.4 24.3
app07 Travel & Local 3430 43 129.0 304.0
app08 Entertainment 14220 67 36.7 23.0
app09 Lifestyle 51553 89 36.3 44.7
app10 Finance 8 36 43.7 18.4
app11 Business 0 0 14.0 438.9
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 27
Quality of the Unified Call Graph
Recall and Precision
Recall:
Correctly reported calls
All reported calls
Precision:
Correctly reported calls
Calls actually present
App kLoC kNodes Plugins Recall Precision Calls
app01 43 9 5 33% 75% 17
app02 27 8 4 100% 66% 13
app03 106 18 8 1% 93% 61
app04 53 14 3 100% 100% 7
app05 64 10 7 33% 66% 29
app06 53 8 12 35% 97% 316
sap01 52 19 6 100% 66% 15
dvhma 17 7 4 100% 100% 15
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 28
Outline
1 Motivation: Hybrid Mobile Apps and their Security Challenges
2 Real World Cordova Usage
3 Static Analysis for Hybrid Apps: Building a Unified Call Graph
4 Quality of the Unified Call Graph
5 Conclusions
Conclusions
Summary
Hybrid mobile apps are getting more popular
they are recommended at SAP
Hybrid mobile apps are juicy targets
E.g., gain access to the app via the JS part . . .
. . . and use the app’s permissions to steal data
Unified Call Graph is a first step in bringing the full power of SAST to hybrid apps
Quality largely depends on used call graph builders
Future work: Data-flow analysis on top of Unified Call Graph
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 30
Thank you for your attention!
Any questions or remarks?
Conclusions
Bibliography
Achim D. Brucker and Michael Herzberg.
On the static analysis of hybrid mobile apps: A report on the state of apache cordova nation.
In Juan Caballero and Eric Bodden, editors, International Symposium on Engineering Secure Software and Systems
(ESSoS), Lecture Notes in Computer Science. Springer-Verlag, 2016.
A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 32

More Related Content

What's hot

Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Sigma Software
 
Threat Modeling workshop by Robert Hurlbut
Threat Modeling workshop by Robert HurlbutThreat Modeling workshop by Robert Hurlbut
Threat Modeling workshop by Robert HurlbutDevSecCon
 
Making Security Agile
Making Security AgileMaking Security Agile
Making Security AgileOleg Gryb
 
Introduction to the CII Badge Programe, OW2con'16, Paris.
Introduction to the CII Badge Programe, OW2con'16, Paris. Introduction to the CII Badge Programe, OW2con'16, Paris.
Introduction to the CII Badge Programe, OW2con'16, Paris. OW2
 
"CERT Secure Coding Standards" by Dr. Mark Sherman
"CERT Secure Coding Standards" by Dr. Mark Sherman"CERT Secure Coding Standards" by Dr. Mark Sherman
"CERT Secure Coding Standards" by Dr. Mark ShermanRinaldi Rampen
 
Remediation Statistics: What Does Fixing Application Vulnerabilities Cost?
Remediation Statistics: What Does Fixing Application Vulnerabilities Cost?Remediation Statistics: What Does Fixing Application Vulnerabilities Cost?
Remediation Statistics: What Does Fixing Application Vulnerabilities Cost?Denim Group
 
A Strategic Path from Secure Code Reviews to Threat Modeling (101)
A Strategic Path from Secure Code Reviews to Threat Modeling (101)A Strategic Path from Secure Code Reviews to Threat Modeling (101)
A Strategic Path from Secure Code Reviews to Threat Modeling (101)Deepam Kanjani
 
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 PresentationThreat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 PresentationAbhay Bhargav
 
What Good is this Tool? A Guide to Choosing the Right Application Security Te...
What Good is this Tool? A Guide to Choosing the Right Application Security Te...What Good is this Tool? A Guide to Choosing the Right Application Security Te...
What Good is this Tool? A Guide to Choosing the Right Application Security Te...Kevin Fealey
 
White Paper: 7 Security Gaps in the Neglected 90% of your Applications
White Paper: 7 Security Gaps in the Neglected 90% of your ApplicationsWhite Paper: 7 Security Gaps in the Neglected 90% of your Applications
White Paper: 7 Security Gaps in the Neglected 90% of your ApplicationsSonatype
 
AppSec & DevSecOps Metrics: Key Performance Indicators (KPIs) to Measure Success
AppSec & DevSecOps Metrics: Key Performance Indicators (KPIs) to Measure SuccessAppSec & DevSecOps Metrics: Key Performance Indicators (KPIs) to Measure Success
AppSec & DevSecOps Metrics: Key Performance Indicators (KPIs) to Measure SuccessRobert Grupe, CSSLP CISSP PE PMP
 
Implementing an Application Security Pipeline in Jenkins
Implementing an Application Security Pipeline in JenkinsImplementing an Application Security Pipeline in Jenkins
Implementing an Application Security Pipeline in JenkinsSuman Sourav
 
#ATAGTR2018 Presentation "Decoding Security in DevSecOps" by Meghashyam Varan...
#ATAGTR2018 Presentation "Decoding Security in DevSecOps" by Meghashyam Varan...#ATAGTR2018 Presentation "Decoding Security in DevSecOps" by Meghashyam Varan...
#ATAGTR2018 Presentation "Decoding Security in DevSecOps" by Meghashyam Varan...Agile Testing Alliance
 
Secure programming language basis
Secure programming language basisSecure programming language basis
Secure programming language basisAnkita Bhalla
 
RSA 2015 Blending the Automated and the Manual: Making Application Vulnerabil...
RSA 2015 Blending the Automated and the Manual: Making Application Vulnerabil...RSA 2015 Blending the Automated and the Manual: Making Application Vulnerabil...
RSA 2015 Blending the Automated and the Manual: Making Application Vulnerabil...Denim Group
 
AppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security AgileAppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security AgileOleg Gryb
 
Microsoft Security Development Lifecycle
Microsoft Security Development LifecycleMicrosoft Security Development Lifecycle
Microsoft Security Development LifecycleRazi Rais
 

What's hot (19)

Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"
 
Threat Modeling workshop by Robert Hurlbut
Threat Modeling workshop by Robert HurlbutThreat Modeling workshop by Robert Hurlbut
Threat Modeling workshop by Robert Hurlbut
 
Red7 Software Application Security Threat Modeling
Red7 Software Application Security Threat ModelingRed7 Software Application Security Threat Modeling
Red7 Software Application Security Threat Modeling
 
Making Security Agile
Making Security AgileMaking Security Agile
Making Security Agile
 
Introduction to the CII Badge Programe, OW2con'16, Paris.
Introduction to the CII Badge Programe, OW2con'16, Paris. Introduction to the CII Badge Programe, OW2con'16, Paris.
Introduction to the CII Badge Programe, OW2con'16, Paris.
 
"CERT Secure Coding Standards" by Dr. Mark Sherman
"CERT Secure Coding Standards" by Dr. Mark Sherman"CERT Secure Coding Standards" by Dr. Mark Sherman
"CERT Secure Coding Standards" by Dr. Mark Sherman
 
Remediation Statistics: What Does Fixing Application Vulnerabilities Cost?
Remediation Statistics: What Does Fixing Application Vulnerabilities Cost?Remediation Statistics: What Does Fixing Application Vulnerabilities Cost?
Remediation Statistics: What Does Fixing Application Vulnerabilities Cost?
 
A Strategic Path from Secure Code Reviews to Threat Modeling (101)
A Strategic Path from Secure Code Reviews to Threat Modeling (101)A Strategic Path from Secure Code Reviews to Threat Modeling (101)
A Strategic Path from Secure Code Reviews to Threat Modeling (101)
 
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 PresentationThreat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
Threat-Modeling-as-Code: ThreatPlaybook AppSecUSA 2018 Presentation
 
What Good is this Tool? A Guide to Choosing the Right Application Security Te...
What Good is this Tool? A Guide to Choosing the Right Application Security Te...What Good is this Tool? A Guide to Choosing the Right Application Security Te...
What Good is this Tool? A Guide to Choosing the Right Application Security Te...
 
White Paper: 7 Security Gaps in the Neglected 90% of your Applications
White Paper: 7 Security Gaps in the Neglected 90% of your ApplicationsWhite Paper: 7 Security Gaps in the Neglected 90% of your Applications
White Paper: 7 Security Gaps in the Neglected 90% of your Applications
 
AppSec & DevSecOps Metrics: Key Performance Indicators (KPIs) to Measure Success
AppSec & DevSecOps Metrics: Key Performance Indicators (KPIs) to Measure SuccessAppSec & DevSecOps Metrics: Key Performance Indicators (KPIs) to Measure Success
AppSec & DevSecOps Metrics: Key Performance Indicators (KPIs) to Measure Success
 
Implementing an Application Security Pipeline in Jenkins
Implementing an Application Security Pipeline in JenkinsImplementing an Application Security Pipeline in Jenkins
Implementing an Application Security Pipeline in Jenkins
 
#ATAGTR2018 Presentation "Decoding Security in DevSecOps" by Meghashyam Varan...
#ATAGTR2018 Presentation "Decoding Security in DevSecOps" by Meghashyam Varan...#ATAGTR2018 Presentation "Decoding Security in DevSecOps" by Meghashyam Varan...
#ATAGTR2018 Presentation "Decoding Security in DevSecOps" by Meghashyam Varan...
 
Secure programming language basis
Secure programming language basisSecure programming language basis
Secure programming language basis
 
RSA 2015 Blending the Automated and the Manual: Making Application Vulnerabil...
RSA 2015 Blending the Automated and the Manual: Making Application Vulnerabil...RSA 2015 Blending the Automated and the Manual: Making Application Vulnerabil...
RSA 2015 Blending the Automated and the Manual: Making Application Vulnerabil...
 
Threat Modelling
Threat ModellingThreat Modelling
Threat Modelling
 
AppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security AgileAppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security Agile
 
Microsoft Security Development Lifecycle
Microsoft Security Development LifecycleMicrosoft Security Development Lifecycle
Microsoft Security Development Lifecycle
 

Viewers also liked

Comscore US Mobile App Report - June 2014 data
Comscore US Mobile App Report  - June 2014 dataComscore US Mobile App Report  - June 2014 data
Comscore US Mobile App Report - June 2014 dataLudovic Privat
 
Developing Secure Software: Experiences From an International Software Vendor
Developing Secure Software: Experiences From an International Software VendorDeveloping Secure Software: Experiences From an International Software Vendor
Developing Secure Software: Experiences From an International Software VendorAchim D. Brucker
 
comScore 2016 U.S. Mobile App Report
comScore 2016 U.S. Mobile App ReportcomScore 2016 U.S. Mobile App Report
comScore 2016 U.S. Mobile App ReportcomScore
 
Mobile Application Design & Development
Mobile Application Design & DevelopmentMobile Application Design & Development
Mobile Application Design & DevelopmentRonnie Liew
 
Mobile Application Development With Android
Mobile Application Development With AndroidMobile Application Development With Android
Mobile Application Development With Androidguest213e237
 
Writing a Report (Tips and Sample of Reports)
Writing a Report (Tips and Sample of Reports)Writing a Report (Tips and Sample of Reports)
Writing a Report (Tips and Sample of Reports)Po Po Tun
 

Viewers also liked (6)

Comscore US Mobile App Report - June 2014 data
Comscore US Mobile App Report  - June 2014 dataComscore US Mobile App Report  - June 2014 data
Comscore US Mobile App Report - June 2014 data
 
Developing Secure Software: Experiences From an International Software Vendor
Developing Secure Software: Experiences From an International Software VendorDeveloping Secure Software: Experiences From an International Software Vendor
Developing Secure Software: Experiences From an International Software Vendor
 
comScore 2016 U.S. Mobile App Report
comScore 2016 U.S. Mobile App ReportcomScore 2016 U.S. Mobile App Report
comScore 2016 U.S. Mobile App Report
 
Mobile Application Design & Development
Mobile Application Design & DevelopmentMobile Application Design & Development
Mobile Application Design & Development
 
Mobile Application Development With Android
Mobile Application Development With AndroidMobile Application Development With Android
Mobile Application Development With Android
 
Writing a Report (Tips and Sample of Reports)
Writing a Report (Tips and Sample of Reports)Writing a Report (Tips and Sample of Reports)
Writing a Report (Tips and Sample of Reports)
 

Similar to On the Static Analysis of Hybrid Mobile Apps: A Report on the State of Apache Cordova Nation

Combining the Security Risks of Native and Web Development: Hybrid Apps
Combining the Security Risks of Native and Web Development: Hybrid AppsCombining the Security Risks of Native and Web Development: Hybrid Apps
Combining the Security Risks of Native and Web Development: Hybrid AppsAchim D. Brucker
 
Web-based Hybrid Mobile Apps: State of the Practice and Research opportunitie...
Web-based Hybrid Mobile Apps: State of the Practice and Research opportunitie...Web-based Hybrid Mobile Apps: State of the Practice and Research opportunitie...
Web-based Hybrid Mobile Apps: State of the Practice and Research opportunitie...Ivano Malavolta
 
SUPARNA PARUTHY Resume USC May 2016 new
SUPARNA PARUTHY Resume USC May 2016 newSUPARNA PARUTHY Resume USC May 2016 new
SUPARNA PARUTHY Resume USC May 2016 newSUPARNA PARUTHY
 
Real world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVMReal world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVMGill Cleeren
 
Top Mobile Application Penetration Testing Tools for Android and iOS.pdf
Top Mobile Application Penetration Testing Tools for Android and iOS.pdfTop Mobile Application Penetration Testing Tools for Android and iOS.pdf
Top Mobile Application Penetration Testing Tools for Android and iOS.pdfElanusTechnologies
 
SRV421 Deep Dive with AWS Mobile Services
SRV421 Deep Dive with AWS Mobile ServicesSRV421 Deep Dive with AWS Mobile Services
SRV421 Deep Dive with AWS Mobile ServicesAmazon Web Services
 
Gitansh_Gupta_Resume
Gitansh_Gupta_ResumeGitansh_Gupta_Resume
Gitansh_Gupta_ResumeGitansh Gupta
 
GraphConnect Europe 2016 - Opening Keynote, Emil Eifrem
GraphConnect Europe 2016 - Opening Keynote, Emil EifremGraphConnect Europe 2016 - Opening Keynote, Emil Eifrem
GraphConnect Europe 2016 - Opening Keynote, Emil EifremNeo4j
 
Beyond Native Apps: Web Technologies to the Rescue! [SPLASH 2016 - Mobile! k...
Beyond Native Apps:  Web Technologies to the Rescue! [SPLASH 2016 - Mobile! k...Beyond Native Apps:  Web Technologies to the Rescue! [SPLASH 2016 - Mobile! k...
Beyond Native Apps: Web Technologies to the Rescue! [SPLASH 2016 - Mobile! k...Ivano Malavolta
 
CI/CD for mobile development using AppCenter
CI/CD for mobile development using AppCenterCI/CD for mobile development using AppCenter
CI/CD for mobile development using AppCenterDan Ardelean
 
Gnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Bocha
 
BarCamp KL H20 Open Social Hackathon
BarCamp KL H20 Open Social HackathonBarCamp KL H20 Open Social Hackathon
BarCamp KL H20 Open Social Hackathonmarvin337
 
apidays New York 2023 - Android Applications and APIs Hacking, Gabrielle Botb...
apidays New York 2023 - Android Applications and APIs Hacking, Gabrielle Botb...apidays New York 2023 - Android Applications and APIs Hacking, Gabrielle Botb...
apidays New York 2023 - Android Applications and APIs Hacking, Gabrielle Botb...apidays
 
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows Azure
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows AzureDeveloping Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows Azure
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows AzureRainer Stropek
 
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
 

Similar to On the Static Analysis of Hybrid Mobile Apps: A Report on the State of Apache Cordova Nation (20)

Combining the Security Risks of Native and Web Development: Hybrid Apps
Combining the Security Risks of Native and Web Development: Hybrid AppsCombining the Security Risks of Native and Web Development: Hybrid Apps
Combining the Security Risks of Native and Web Development: Hybrid Apps
 
Web-based Hybrid Mobile Apps: State of the Practice and Research opportunitie...
Web-based Hybrid Mobile Apps: State of the Practice and Research opportunitie...Web-based Hybrid Mobile Apps: State of the Practice and Research opportunitie...
Web-based Hybrid Mobile Apps: State of the Practice and Research opportunitie...
 
android
androidandroid
android
 
SUPARNA PARUTHY Resume USC May 2016 new
SUPARNA PARUTHY Resume USC May 2016 newSUPARNA PARUTHY Resume USC May 2016 new
SUPARNA PARUTHY Resume USC May 2016 new
 
Real world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVMReal world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVM
 
Top Mobile Application Penetration Testing Tools for Android and iOS.pdf
Top Mobile Application Penetration Testing Tools for Android and iOS.pdfTop Mobile Application Penetration Testing Tools for Android and iOS.pdf
Top Mobile Application Penetration Testing Tools for Android and iOS.pdf
 
SRV421 Deep Dive with AWS Mobile Services
SRV421 Deep Dive with AWS Mobile ServicesSRV421 Deep Dive with AWS Mobile Services
SRV421 Deep Dive with AWS Mobile Services
 
Gitansh_Gupta_Resume
Gitansh_Gupta_ResumeGitansh_Gupta_Resume
Gitansh_Gupta_Resume
 
GraphConnect Europe 2016 - Opening Keynote, Emil Eifrem
GraphConnect Europe 2016 - Opening Keynote, Emil EifremGraphConnect Europe 2016 - Opening Keynote, Emil Eifrem
GraphConnect Europe 2016 - Opening Keynote, Emil Eifrem
 
Beyond Native Apps: Web Technologies to the Rescue! [SPLASH 2016 - Mobile! k...
Beyond Native Apps:  Web Technologies to the Rescue! [SPLASH 2016 - Mobile! k...Beyond Native Apps:  Web Technologies to the Rescue! [SPLASH 2016 - Mobile! k...
Beyond Native Apps: Web Technologies to the Rescue! [SPLASH 2016 - Mobile! k...
 
CI/CD for mobile development using AppCenter
CI/CD for mobile development using AppCenterCI/CD for mobile development using AppCenter
CI/CD for mobile development using AppCenter
 
Gnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 years
 
BarCamp KL H20 Open Social Hackathon
BarCamp KL H20 Open Social HackathonBarCamp KL H20 Open Social Hackathon
BarCamp KL H20 Open Social Hackathon
 
apidays New York 2023 - Android Applications and APIs Hacking, Gabrielle Botb...
apidays New York 2023 - Android Applications and APIs Hacking, Gabrielle Botb...apidays New York 2023 - Android Applications and APIs Hacking, Gabrielle Botb...
apidays New York 2023 - Android Applications and APIs Hacking, Gabrielle Botb...
 
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows Azure
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows AzureDeveloping Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows Azure
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows Azure
 
Android pentesting
Android pentestingAndroid pentesting
Android pentesting
 
SangeetaNath
SangeetaNathSangeetaNath
SangeetaNath
 
Android
AndroidAndroid
Android
 
my cv
my cvmy cv
my cv
 
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
 

More from Achim D. Brucker

Usable Security for Developers: A Nightmare
Usable Security for Developers: A NightmareUsable Security for Developers: A Nightmare
Usable Security for Developers: A NightmareAchim D. Brucker
 
Formalizing (Web) Standards: An Application of Test and Proof
Formalizing (Web) Standards: An Application of Test and ProofFormalizing (Web) Standards: An Application of Test and Proof
Formalizing (Web) Standards: An Application of Test and ProofAchim D. Brucker
 
Your (not so) smart TV is currently busy with taking down the Internet
Your (not so) smart TV is currently busy  with taking down the InternetYour (not so) smart TV is currently busy  with taking down the Internet
Your (not so) smart TV is currently busy with taking down the InternetAchim D. Brucker
 
The Evil Friend in Your Browser
The Evil Friend in Your BrowserThe Evil Friend in Your Browser
The Evil Friend in Your BrowserAchim D. Brucker
 
How to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure CodeHow to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure CodeAchim D. Brucker
 
Isabelle: Not Only a Proof Assistant
Isabelle: Not Only a Proof AssistantIsabelle: Not Only a Proof Assistant
Isabelle: Not Only a Proof AssistantAchim D. Brucker
 
Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...Achim D. Brucker
 
Industrial Challenges of Secure Software Development
Industrial Challenges of Secure Software DevelopmentIndustrial Challenges of Secure Software Development
Industrial Challenges of Secure Software DevelopmentAchim D. Brucker
 
SAST for JavaScript: A Brief Overview of Commercial Tools
SAST for JavaScript: A Brief Overview of Commercial ToolsSAST for JavaScript: A Brief Overview of Commercial Tools
SAST for JavaScript: A Brief Overview of Commercial ToolsAchim D. Brucker
 
A Collection of Real World (JavaScript) Security Problems: Examples from 2 1/...
A Collection of Real World (JavaScript) Security Problems: Examples from 2 1/...A Collection of Real World (JavaScript) Security Problems: Examples from 2 1/...
A Collection of Real World (JavaScript) Security Problems: Examples from 2 1/...Achim D. Brucker
 
Deploying Static Application Security Testing on a Large Scale
Deploying Static Application Security Testing on a Large ScaleDeploying Static Application Security Testing on a Large Scale
Deploying Static Application Security Testing on a Large ScaleAchim D. Brucker
 
Model-based Conformance Testing of Security Properties
Model-based Conformance Testing of Security PropertiesModel-based Conformance Testing of Security Properties
Model-based Conformance Testing of Security PropertiesAchim D. Brucker
 
Service Compositions: Curse or Blessing for Security?
Service Compositions: Curse or Blessing for Security?Service Compositions: Curse or Blessing for Security?
Service Compositions: Curse or Blessing for Security?Achim D. Brucker
 
Encoding Object-oriented Datatypes in HOL: Extensible Records Revisited
Encoding Object-oriented Datatypes in HOL: Extensible Records RevisitedEncoding Object-oriented Datatypes in HOL: Extensible Records Revisited
Encoding Object-oriented Datatypes in HOL: Extensible Records RevisitedAchim D. Brucker
 
A Framework for Secure Service Composition
A Framework for Secure Service CompositionA Framework for Secure Service Composition
A Framework for Secure Service CompositionAchim D. Brucker
 
Extending Access Control Models with Break-glass
Extending Access Control Models with Break-glassExtending Access Control Models with Break-glass
Extending Access Control Models with Break-glassAchim D. Brucker
 
Security in the Context of Business Processes: Thoughts from a System Vendor'...
Security in the Context of Business Processes: Thoughts from a System Vendor'...Security in the Context of Business Processes: Thoughts from a System Vendor'...
Security in the Context of Business Processes: Thoughts from a System Vendor'...Achim D. Brucker
 

More from Achim D. Brucker (17)

Usable Security for Developers: A Nightmare
Usable Security for Developers: A NightmareUsable Security for Developers: A Nightmare
Usable Security for Developers: A Nightmare
 
Formalizing (Web) Standards: An Application of Test and Proof
Formalizing (Web) Standards: An Application of Test and ProofFormalizing (Web) Standards: An Application of Test and Proof
Formalizing (Web) Standards: An Application of Test and Proof
 
Your (not so) smart TV is currently busy with taking down the Internet
Your (not so) smart TV is currently busy  with taking down the InternetYour (not so) smart TV is currently busy  with taking down the Internet
Your (not so) smart TV is currently busy with taking down the Internet
 
The Evil Friend in Your Browser
The Evil Friend in Your BrowserThe Evil Friend in Your Browser
The Evil Friend in Your Browser
 
How to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure CodeHow to Enable Developers to Deliver Secure Code
How to Enable Developers to Deliver Secure Code
 
Isabelle: Not Only a Proof Assistant
Isabelle: Not Only a Proof AssistantIsabelle: Not Only a Proof Assistant
Isabelle: Not Only a Proof Assistant
 
Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...
 
Industrial Challenges of Secure Software Development
Industrial Challenges of Secure Software DevelopmentIndustrial Challenges of Secure Software Development
Industrial Challenges of Secure Software Development
 
SAST for JavaScript: A Brief Overview of Commercial Tools
SAST for JavaScript: A Brief Overview of Commercial ToolsSAST for JavaScript: A Brief Overview of Commercial Tools
SAST for JavaScript: A Brief Overview of Commercial Tools
 
A Collection of Real World (JavaScript) Security Problems: Examples from 2 1/...
A Collection of Real World (JavaScript) Security Problems: Examples from 2 1/...A Collection of Real World (JavaScript) Security Problems: Examples from 2 1/...
A Collection of Real World (JavaScript) Security Problems: Examples from 2 1/...
 
Deploying Static Application Security Testing on a Large Scale
Deploying Static Application Security Testing on a Large ScaleDeploying Static Application Security Testing on a Large Scale
Deploying Static Application Security Testing on a Large Scale
 
Model-based Conformance Testing of Security Properties
Model-based Conformance Testing of Security PropertiesModel-based Conformance Testing of Security Properties
Model-based Conformance Testing of Security Properties
 
Service Compositions: Curse or Blessing for Security?
Service Compositions: Curse or Blessing for Security?Service Compositions: Curse or Blessing for Security?
Service Compositions: Curse or Blessing for Security?
 
Encoding Object-oriented Datatypes in HOL: Extensible Records Revisited
Encoding Object-oriented Datatypes in HOL: Extensible Records RevisitedEncoding Object-oriented Datatypes in HOL: Extensible Records Revisited
Encoding Object-oriented Datatypes in HOL: Extensible Records Revisited
 
A Framework for Secure Service Composition
A Framework for Secure Service CompositionA Framework for Secure Service Composition
A Framework for Secure Service Composition
 
Extending Access Control Models with Break-glass
Extending Access Control Models with Break-glassExtending Access Control Models with Break-glass
Extending Access Control Models with Break-glass
 
Security in the Context of Business Processes: Thoughts from a System Vendor'...
Security in the Context of Business Processes: Thoughts from a System Vendor'...Security in the Context of Business Processes: Thoughts from a System Vendor'...
Security in the Context of Business Processes: Thoughts from a System Vendor'...
 

Recently uploaded

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Recently uploaded (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

On the Static Analysis of Hybrid Mobile Apps: A Report on the State of Apache Cordova Nation

  • 1. On the Static Analysis of Hybrid Mobile Apps A Report on the State of Apache Cordova Nation Achim D. Brucker and Michael Herzberg {a.brucker,msherzberg1}@sheffield.ac.uk Department of Computer Science, The University of Sheffield, Sheffield, UK (Parts of this research were done while the authors were working at SAP SE in Germany.) International Symposium on Engineering Secure Software and Systems (ESSoS 2016) April 6 - 8, 2016, London, UK
  • 2. On the Static Analysis of Hybrid Mobile Apps: A Report on the State of Apache Cordova Nation Abstract Developing mobile applications is a challenging business: developers need to support multiple platforms and, at the same time, need to cope with limited resources, as the revenue generated by an average app is rather small. This results in an increasing use of cross-platform development frameworks that allow developing an app once and offering it on multiple mobile platforms such as Android, iOS, or Windows. Apache Cordova is a popular framework for developing multi-platform apps. Cordova combines HTML5 and JavaScript with native application code. Combining web and native technologies creates new security challenges as, e.g., an XSS attacker becomes more powerful. In this paper, we present a novel approach for statically analysing the foreign language calls. We evaluate our approach by analysing the top Cordova apps from Google Play. Moreover, we report on the current state of the overall quality and security of Cordova apps. Keywords: static program analysis, static application security testing, Android, Cordova, hybrid mobile apps.
  • 3. Outline 1 Motivation: Hybrid Mobile Apps and their Security Challenges 2 Real World Cordova Usage 3 Static Analysis for Hybrid Apps: Building a Unified Call Graph 4 Quality of the Unified Call Graph 5 Conclusions
  • 4. Motivation: Hybrid Mobile Apps and their Security Challenges What is a Hybrid App? Native, HTML5, or hybrid Native apps Java Swift C# Developed for a specific platform All features available Web apps HTML5 and JS Hosted on server, all platforms No access to device features Platform-specific Platform-independent A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 4
  • 5. Motivation: Hybrid Mobile Apps and their Security Challenges What is a Hybrid App? Native, HTML5, or hybrid Native apps Java Swift C# Developed for a specific platform All features available + Hybrid apps HTML5, JS, and native Build once, run everywhere Access to device features through plugins Web apps HTML5 and JS Hosted on server, all platforms No access to device features Platform-specific Platform-independent A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 4
  • 6. Motivation: Hybrid Mobile Apps and their Security Challenges Why Apache Cordova? https://cordova.apache.org/ Apache Cordova is most popular hybrid app framework Open source Many companies offer Apache Cordova plus commercial plugins (e.g., Adobe PhoneGap or SAP Kapsel) A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 5
  • 7. Motivation: Hybrid Mobile Apps and their Security Challenges The Apache Cordova Framework for Android A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 6
  • 8. Motivation: Hybrid Mobile Apps and their Security Challenges Example app A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 7
  • 9. Motivation: Hybrid Mobile Apps and their Security Challenges Technical view A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 8
  • 10. Motivation: Hybrid Mobile Apps and their Security Challenges Technical view A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 8
  • 11. Motivation: Hybrid Mobile Apps and their Security Challenges Example: Get Phone Number function showPhoneNumber(name) { var successCallback = function(contact) { alert("Phone number: " + contacts.phone); } var failureCallback = ... cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]); } class ContactsPlugin extends CordovaPlugin { boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) { if ("find".equals(action)) { String name = args.get(0).name; find(name, callbackContext); } else if ("create".equals(action)) ... } void find(String name, CallbackContext callbackContext) { Contact contact = query("SELECT ... where name=" + name); callbackContext.success(contact); } } A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
  • 12. Motivation: Hybrid Mobile Apps and their Security Challenges Example: Get Phone Number function showPhoneNumber(name) { var successCallback = function(contact) { alert("Phone number: " + contacts.phone); } var failureCallback = ... cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]); } class ContactsPlugin extends CordovaPlugin { boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) { if ("find".equals(action)) { String name = args.get(0).name; find(name, callbackContext); } else if ("create".equals(action)) ... } void find(String name, CallbackContext callbackContext) { Contact contact = query("SELECT ... where name=" + name); callbackContext.success(contact); } } A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
  • 13. Motivation: Hybrid Mobile Apps and their Security Challenges Example: Get Phone Number function showPhoneNumber(name) { var successCallback = function(contact) { alert("Phone number: " + contacts.phone); } var failureCallback = ... cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]); } class ContactsPlugin extends CordovaPlugin { boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) { if ("find".equals(action)) { String name = args.get(0).name; find(name, callbackContext); } else if ("create".equals(action)) ... } void find(String name, CallbackContext callbackContext) { Contact contact = query("SELECT ... where name=" + name); callbackContext.success(contact); } } A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
  • 14. Motivation: Hybrid Mobile Apps and their Security Challenges Example: Get Phone Number function showPhoneNumber(name) { var successCallback = function(contact) { alert("Phone number: " + contacts.phone); } var failureCallback = ... cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]); } class ContactsPlugin extends CordovaPlugin { boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) { if ("find".equals(action)) { String name = args.get(0).name; find(name, callbackContext); } else if ("create".equals(action)) ... } void find(String name, CallbackContext callbackContext) { Contact contact = query("SELECT ... where name=" + name); callbackContext.success(contact); } } A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
  • 15. Motivation: Hybrid Mobile Apps and their Security Challenges Example: Get Phone Number function showPhoneNumber(name) { var successCallback = function(contact) { alert("Phone number: " + contacts.phone); } var failureCallback = ... cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]); } class ContactsPlugin extends CordovaPlugin { boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) { if ("find".equals(action)) { String name = args.get(0).name; find(name, callbackContext); } else if ("create".equals(action)) ... } void find(String name, CallbackContext callbackContext) { Contact contact = query("SELECT ... where name=" + name); callbackContext.success(contact); } } A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
  • 16. Motivation: Hybrid Mobile Apps and their Security Challenges Example: Get Phone Number function showPhoneNumber(name) { var successCallback = function(contact) { alert("Phone number: " + contacts.phone); } var failureCallback = ... cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]); } class ContactsPlugin extends CordovaPlugin { boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) { if ("find".equals(action)) { String name = args.get(0).name; find(name, callbackContext); } else if ("create".equals(action)) ... } void find(String name, CallbackContext callbackContext) { Contact contact = query("SELECT ... where name=" + name); callbackContext.success(contact); } } A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
  • 17. Motivation: Hybrid Mobile Apps and their Security Challenges Example: Get Phone Number function showPhoneNumber(name) { var successCallback = function(contact) { alert("Phone number: " + contacts.phone); } var failureCallback = ... cordova.exec(successCallback, failureCallback, "ContactsPlugin", "find", [{"name" : name}]); } class ContactsPlugin extends CordovaPlugin { boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) { if ("find".equals(action)) { String name = args.get(0).name; find(name, callbackContext); } else if ("create".equals(action)) ... } void find(String name, CallbackContext callbackContext) { Contact contact = query("SELECT ... where name=" + name); callbackContext.success(contact); } } A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 9
  • 18. Motivation: Hybrid Mobile Apps and their Security Challenges First security assessment Problem: JS/Java Bridge is vulnerable to injection attacks For regular apps: Static Application Security Testing (SAST) But: No support for cross-language analysis Our goal: Provide basis (call graph) to apply SAST to hybrid mobile apps A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 10
  • 19. Outline 1 Motivation: Hybrid Mobile Apps and their Security Challenges 2 Real World Cordova Usage 3 Static Analysis for Hybrid Apps: Building a Unified Call Graph 4 Quality of the Unified Call Graph 5 Conclusions
  • 20. Real World Cordova Usage What we were interested in Main goals: Understand the use of Cordova Learn requirements for Cordova security testing tools Looking for answers for questions like How many apps are using Cordova? How is Cordova used by app developers? Are cross-language calls common or not? A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 12
  • 21. Real World Cordova Usage Test sets Selection of apps all apps that ship Cordova from Google’s Top 1000: 100 apps ship Cordova plugins only 50 actually use Cordova (5%) three selected apps from SAP (using SAP Kapsel) one artificial test app (to test our tool) Manual analysis of 8 apps (including one from SAP) to understand the use of Cordova to assess the quality of our automated analysis A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 13
  • 22. Real World Cordova Usage What we have learned: plugin use Plugins are used for accessing device information showing native dialog boxes and splash screens accessing network information accessing the file storage accessing the camera . . . But: Many different versions and some even modified! Plugin device 52% inappbrowser 50% dialogs 40% splashscreen 36% network-information 28% file 28% console 24% camera 22% statusbar 22% PushPlugin 22% A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 14
  • 23. Real World Cordova Usage What we have learned: app size App size: mobile apps are not always small SAP apps seem to be larger than the average Exceptional apps: No HTML/JS in APK Ship Cordova, but do not use it App Category JS [kLoC] Java [kLoC] sap01 Finance 35.5 17.0 sap02 Business 345.3 53.5 sap03 Business 572.3 135.8 app01 Finance 26.3 17.8 app02 Finance 11.2 16.8 app03 Social 4.6 103.7 app04 Business 37.5 16.8 app05 Finance 20.0 44.8 app06 Finance 30.4 24.3 app07 Travel & Local 129.0 304.0 app08 Entertainment 36.7 23.0 app09 Lifestyle 36.3 44.7 app10 Finance 43.7 18.4 app11 Business 14.0 438.9 . . . . . . . . . . . . A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 15
  • 24. Outline 1 Motivation: Hybrid Mobile Apps and their Security Challenges 2 Real World Cordova Usage 3 Static Analysis for Hybrid Apps: Building a Unified Call Graph 4 Quality of the Unified Call Graph 5 Conclusions
  • 25. Static Analysis for Hybrid Apps: Building a Unified Call Graph Challenges Based on the examined apps: Cordova relies heavily on dynamic mechanisms, both on JavaScript and Java side Developers modify their plugins and sometimes implement their own Deep framework analysis Modelling framework Modelling plugins Closest to the actual program But: Framework very expensive Models the Cordova framework Analyses plugins Models both framework and plugins Analyses only UI and business logic part But: Developers can write own plugins A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 17
  • 26. Static Analysis for Hybrid Apps: Building a Unified Call Graph Our approach: analyze plugins, but model the Cordova framework First build call graphs of Java and JavaScript separatly Connect them using four heuristics that exploit frequent coding patterns: ConvertModules ReplaceCordovaExec FilterJavaCallSites FilterJSFrameworks Result: Unified Call Graph A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 18
  • 27. Static Analysis for Hybrid Apps: Building a Unified Call Graph ConvertModules define("com.foo.contacts", function(require, exports, module) { exports.find = function(successCallback, name) { cordova.exec(successCallback, null, "ContactsPlugin", "find", [{"name" : name}]); } }); ... var successCallback = function(contact) { alert("Phone number: " + contacts.phone); } plugins.contacts.find(successCallback, "Peter"); Problem: Not all callback functions are defined within the plugin Difficult to track callback functions from app code Solution: Substitute dynamic mechanism with unique, global variable A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 19
  • 28. Static Analysis for Hybrid Apps: Building a Unified Call Graph ConvertModules define("com.foo.contacts", function(require, exports, module) { plugins.contacts.find = function(successCallback, name) { cordova.exec(successCallback, null, "ContactsPlugin", "find", [{"name" : name}]); } }); ... var successCallback = function(contact) { alert("Phone number: " + contacts.phone); } plugins.contacts.find(successCallback, "Peter"); Problem: Not all callback functions are defined within the plugin Difficult to track callback functions from app code Solution: Substitute dynamic mechanism with unique, global variable A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 19
  • 29. Static Analysis for Hybrid Apps: Building a Unified Call Graph ConvertModules: Results Most useful for small plugins more precise analysis Allows finding of callback functions in app code Less errors due to less ambiguity of dynamic mechanism A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 20
  • 30. Static Analysis for Hybrid Apps: Building a Unified Call Graph ReplaceCordovaExec function showPhoneNumber(name) { var successCallback = function(contact) { alert("Phone number: "+contacts.phone); } cordova.exec(successCallback, null, "ContactsPlugin", "find", [{"name" : name}]); } Problem: Callback call sites are hard to find No context-sensitivity Solution: Stub the exec method A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 21
  • 31. Static Analysis for Hybrid Apps: Building a Unified Call Graph ReplaceCordovaExec function showPhoneNumber(name) { var successCallback = function(contact) { alert("Phone number: "+contacts.phone); } function stub1(succ, fail) { succ(null); fail(null); } stub1(successCallback, null, "ContactsPlugin", "find", [{"name" : name}]); } Problem: Callback call sites are hard to find No context-sensitivity Solution: Stub the exec method A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 21
  • 32. Static Analysis for Hybrid Apps: Building a Unified Call Graph ReplaceCordovaExec: Results Neccessary to find any Java to JavaScript calls Most apps use exec to communicate, only some bypass it Inexpensive way to get context-sensitivity where it is needed the most A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 22
  • 33. Static Analysis for Hybrid Apps: Building a Unified Call Graph FilterJavaCallSites class ContactsPlugin extends CordovaPlugin { boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) { if ("find".equals(action)) { String name = args.get(0).name; find(name, callbackContext); } else if ("create".equals(action)) ... } void find(String name, CallbackContext callbackContext) { Contact contact = query("SELECT ... where name=" + name); callbackContext.success(contact); } } Problem: How to determine the targets of the callbackContext calls? Can we use the pattern of the action usage? Solution: Determine which callbackContext calls are reachable A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 23
  • 34. Static Analysis for Hybrid Apps: Building a Unified Call Graph FilterJavaCallSites: details A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 24
  • 35. Static Analysis for Hybrid Apps: Building a Unified Call Graph FilterJavaCallSites: details A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 24
  • 36. Static Analysis for Hybrid Apps: Building a Unified Call Graph FilterJavaCallSites: details A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 24
  • 37. Static Analysis for Hybrid Apps: Building a Unified Call Graph FilterJavaCallSites: results Developers all use action variable similarly Therefore: Many incorrect edges avoided But: A few calls from Java to JavaScript are missed now Some store the callbackContext and call asynchronously A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 25
  • 38. Outline 1 Motivation: Hybrid Mobile Apps and their Security Challenges 2 Real World Cordova Usage 3 Static Analysis for Hybrid Apps: Building a Unified Call Graph 4 Quality of the Unified Call Graph 5 Conclusions
  • 39. Quality of the Unified Call Graph What we have learned: app size and cross-language calls Cross-language calls: calls from Java to JS: very common calls from JS to Java: surprisingly uncommon App Category Java2JS JS2Java JS [kLoC] Java [kLoC] sap01 Finance 2 12 35.5 17.0 sap02 Business 20814 39 345.3 53.5 sap03 Business 9531 75 572.3 135.8 app01 Finance 9 13 26.3 17.8 app02 Finance 2 10 11.2 16.8 app03 Social 2349 31 4.6 103.7 app04 Business 1 6 37.5 16.8 app05 Finance 6 26 20.0 44.8 app06 Finance 693 70 30.4 24.3 app07 Travel & Local 3430 43 129.0 304.0 app08 Entertainment 14220 67 36.7 23.0 app09 Lifestyle 51553 89 36.3 44.7 app10 Finance 8 36 43.7 18.4 app11 Business 0 0 14.0 438.9 . . . . . . . . . . . . . . . . . . A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 27
  • 40. Quality of the Unified Call Graph Recall and Precision Recall: Correctly reported calls All reported calls Precision: Correctly reported calls Calls actually present App kLoC kNodes Plugins Recall Precision Calls app01 43 9 5 33% 75% 17 app02 27 8 4 100% 66% 13 app03 106 18 8 1% 93% 61 app04 53 14 3 100% 100% 7 app05 64 10 7 33% 66% 29 app06 53 8 12 35% 97% 316 sap01 52 19 6 100% 66% 15 dvhma 17 7 4 100% 100% 15 A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 28
  • 41. Outline 1 Motivation: Hybrid Mobile Apps and their Security Challenges 2 Real World Cordova Usage 3 Static Analysis for Hybrid Apps: Building a Unified Call Graph 4 Quality of the Unified Call Graph 5 Conclusions
  • 42. Conclusions Summary Hybrid mobile apps are getting more popular they are recommended at SAP Hybrid mobile apps are juicy targets E.g., gain access to the app via the JS part . . . . . . and use the app’s permissions to steal data Unified Call Graph is a first step in bringing the full power of SAST to hybrid apps Quality largely depends on used call graph builders Future work: Data-flow analysis on top of Unified Call Graph A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 30
  • 43. Thank you for your attention! Any questions or remarks?
  • 44. Conclusions Bibliography Achim D. Brucker and Michael Herzberg. On the static analysis of hybrid mobile apps: A report on the state of apache cordova nation. In Juan Caballero and Eric Bodden, editors, International Symposium on Engineering Secure Software and Systems (ESSoS), Lecture Notes in Computer Science. Springer-Verlag, 2016. A.D. Brucker and M. Herzberg The University of Sheffield On the Static Analysis of Hybrid Mobile Apps April 7, 2016 32