Vulnerability Types - adisorbo/vulnerability_proneness GitHub Wiki

In the following Table, we report the vulnerability types considered in our study.

Id Vulnerability Type Severity Description # of vulnerable apps
v1 <SSL_Security> SSL Connection Checking Critical The app connects to URLs that are NOT under SSL 938
v2 <WebView><Remote Code Execution><#CVE-2013-4710#> WebView RCE Vulnerability Checking Critical The app makes use of the addJavascriptInterface method. This method can be used to allow JavaScript to control the host application. 692
v3 <Implicit_Intent> Implicit Service Checking Critical The app uses an implicit intent to start a service. This is a security hazard because one cannot be certain what service will respond to the intent, and the user cannot see which service starts. 420
v4 App Sandbox Permission Checking Critical Creating world-readable or word-writeable files is very dangerous, and likely to cause security holes in applications. It is strongly discouraged: applications should use more formal mechanism for interactions. 279
v5 <SSL_Security> SSL Certificate Verification Checking Critical The app does not check the validation of SSL Certificate. This allows self-signed, expired or mismatch CN certificates for SSL connection allowing attackers to perform MITM attacks. 201
v6 <KeyStore><Hacker> KeyStore Protection Checking Critical The app uses KeyStore(s) not protected by password. 200
v7 <Command> Runtime Command Checking Critical The app uses the critical function Runtime.getRuntime().exec("...").This could allow an attacker to inject arbitrary system commands into the application 191
v8 <#BID 64208 CVE-2013-6271#> Fragment Vulnerability Checking Critical PreferenceActivity class is extended without overriding the isValidFragment method. This could expose the app to fragment injection when it is used on devices running a version of Android < 4.4 158
v9 AndroidManifest ContentProvider Exported Checking Critical The app uses exported ContentProvider, allowing any other app on the device to access it. 156
v10 <SSL_Security> SSL Implementation Checking (Verifying Host Name in Custom Classes) Critical The app allows Self-defined HOSTNAME VERIFIER to accept all Common Names(CN). This allows attackers to do MITM attacks. 148
v11 <SSL_Security> SSL Implementation Checking (Verifying Host Name in Fields) Critical The app does not check the validation of the CN(Common Name) of the SSL certificate, allowing attackers to perform MITM attacks 114
v12 <Hacker> Base64 String Encryption Critical The app uses Base64 encoding String(s). The presence of Base64-encoded data may indicate security-sensitive information or functionality that is worthy of further investigation. The data should be reviewed to determine whether it contains any interesting information, or provides any additional entry points for malicious input. 93
v13 <SSL_Security> SSL Implementation Checking (WebViewClient for WebView) Critical SSL errors are not properly handled in WebViewClient. This allows the connection even if the SSL Certificate is invalid (MITM Vulnerability). 82
v14 AndroidManifest "intent-filter" Settings Checking Critical The app uses intent-filter without any specific action. 31
v15 AndroidManifest Critical Use Permission Checking Critical The app has very high privileges. 21
v16 <Command> Runtime Critical Command Checking Critical The app requests for root privileges: Runtime.getRuntime().exec("su") found. 13
v17 AndroidManifest Dangerous ProtectionLevel of Permission Checking Critical The protection level of some classes is dangerous, allowing any other apps to access to the same permission. 8
v18 Unnecessary Permission Checking Critical The app requires permissions that only work in emulator environment. 8
v19 <SSL_Security> SSL Implementation Checking (Insecure component) Critical The app creates sockets using the insecure method getInsecure. Such sockets are vulnerable to man-in-the-middle attacks. 8
v20 AndroidManifest System Use Permission Checking Critical The app requires system-only permissions 6
v21 <SSL_Security><Hacker> Base64 String Encryption Critical The app uses Base64 for encoding HTTP URLs without SSL 6
v22 <Debug> Android Debug Mode Checking Critical DEBUG mode is ON. This is very dangerous, as the attackers would be able to sniffer the debug messages. 2
v23 Accessing the Internet Checking Critical The app has some internet accessing codes but does not require internet connection permission in AndroidManifest. 2
v24 <Database> SQLiteDatabase Transaction Deprecated Checking Critical The app uses the beginTransactionNonExclusive method even if it declares a minSdk < 11. 1
v25 <WebView> WebView Local File Access Attacks Checking Warning The app uses setAllowFileAccess(true) or not set(enabled by default) in WebView. The attackers could inject malicious script into WebView and exploit the opportunity to access local resources. 910
v26 <WebView> WebView Potential XSS Attacks Checking Warning The app uses setJavaScriptEnabled(true) in WebView, which could expose the app to potential XSS attacks. 895
v27 <Sensitive_Information> Getting ANDROID_ID Warning The app has code getting the 64-bit number Settings.Secure.ANDROID_ID. 892
v28 External Storage Accessing Warning The app accesses to external storage 848
v29 AndroidManifest Exported Components Checking Warning The app uses exported components(except for Launcher) for receiving outside applications' actions 573
v30 Dynamic Code Loading Warning The app loads code dynamically 515
v31 <Sensitive_Information> Getting IMEI and Device ID Warning The app has code for getting the device id(IMEI). 328
v32 <SSL_Security> SSL Certificate Verification Checking Warning The app uses weak conditions to check the validation of SSL Certificate. If it's not properly checked, it may allow self-signed, expired or mismatch CN certificates for SSL connection. 259
v33 AndroidManifest Normal ProtectionLevel of Permission Checking Warning The protection level of some classes is normal or default. This could allow malicious apps to register and receive messages for this app. 33
v34 Codes for Sending SMS Warning The app has code for sending SMS messages (sendDataMessage, sendMultipartTextMessage or sendTextMessage) 21
v35 AndroidManifest "intent-filter" Settings Checking Warning The app presents misconfigurations in intent-filter 2
v36 File Unsafe Delete Checking Notice The app uses the method file.delete(). Deleted files may be recovered by any user or attacker. 958
v37 <Database><#CVE-2011-3901#> Android SQLite Databases Vulnerability Checking Notice The app uses Android SQLite databases and can be installed on devices having Android version <= 4.0. Prior to Android 4.0.1 the journal file of SQLite databases can be read by all applications. Malicious applications can access to database information without the need for declaring adequate privileges. 875
v38 <Signature><Hacker> Getting Signature Code Checking Notice The app has code checking the package signature in the code. It might be used by the attackers to check for whether the app is hacked. 860
v39 AndroidManifest Adb Backup Checking Notice ADB Backup is ENABLED for the app (default: ENABLED). A malicious BackupAgent is able to inject additional applications (APKs) into the backup archive without the user's consent. Upon restoration of the backup archive, the system installs the injected, additional application 769
v40 <Hacker> APK Installing Source Checking Notice The app has code checking APK installer sources (e.g. from Google Play, from Amazon, etc.). It might be used by attackers to check for whether the app is hacked. 742
v41 AndroidManifest Exported Components Checking 2 Notice The app presents exported components for receiving Google's Android actions 702
v42 <Debug><Hacker> Codes for Checking Android Debug Mode Notice The app has code for checking ApplicationInfo.FLAG_DEBUGGABLE. Debug mode can be exploited by attackers to help better understand how the app works. 538
v43 <Command> Executing "root" or System Privilege Checking Notice The app may have code for checking for root permission, mounting filesystem operations or monitoring system. 339
v44 Native Library Loading Checking Notice The app uses code for loading native libraries System.loadLibrary(…). This could be exploited by attackers through a crafted version of the library. 332
v45 <KeyStore><Hacker> KeyStore Protection Information Notice The app uses Keystores protected by password and seems using SSL-pinning 244
v46 HttpURLConnection Android Bug Checking Notice The app uses HttpURLConnection. Prior to Android 2.2 (Froyo), HttpURLConnection had some frustrating bugs. In particular, calling close() on a readable InputStream could poison the connection pool. 74
v47 <KeyStore><Hacker> Possible KeyStore File Location Notice The app is likely to use a BKS keystore. If a BKS keystore is in use, keys are stored within a file that can be accessed by a privileged user. 70
v48 <KeyStore><Hacker> KeyStore File Location Notice The app uses BKS keystore files. This could expose the app to security flaws. 60
v49 <Hacker> Code Setting Preventing Screenshot Capturing Notice The app uses code for preventing from screenshot capturing. This indicates that the app is likely to manage highly sensitive information, and attackers can use this information to identify source code portions aimed at managing this information. 44
v50 Google Cloud Messaging Suggestion Notice The app uses GCM with a minSdk <= 8. This could expose the app to security flaws. 43
v51 <Database> Android SQLite Databases Encryption (SQLCipher) Notice The app uses SQLCipher to encrypt or decrpyt databases. This could expose the app to security flaws. 12
v52 <Database> Android SQLite Databases Encryption (SQLite Encryption Extension (SEE)) Notice The app uses SQLite Encryption Extension (SEE) on Android to encrypt or decrpyt databases. This could expose the app to security flaws. 3
v53 <Database><Hacker> Key for Android SQLite Databases Encryption Notice The app uses the symmetric key(PRAGMA key) to encrypt the SQLite databases and this could expose the app to security flaws 1