Android debuggable attribute enabled¶
ID: java/android/debuggable-attribute-enabled
Kind: problem
Security severity: 7.2
Severity: warning
Precision: very-high
Tags:
- security
- external/cwe/cwe-489
Query suites:
- java-code-scanning.qls
- java-security-extended.qls
- java-security-and-quality.qls
Click to see the query in the CodeQL repository
The Android manifest file defines configuration settings for Android applications. In this file, the android:debuggable
attribute of the application
element can be used to define whether or not the application can be debugged. When set to true
, this attribute will allow the application to be debugged even when running on a device in user mode.
When a debugger is enabled, it could allow for entry points in the application or reveal sensitive information. As a result, android:debuggable
should only be enabled during development and should be disabled in production builds.
Recommendation¶
In Android applications, either set the android:debuggable
attribute to false
, or do not include it in the manifest. The default value, when not included, is false
.
Example¶
In the example below, the android:debuggable
attribute is set to true
.
<manifest ... >
<!-- BAD: 'android:debuggable' set to 'true' -->
<application
android:debuggable="true">
<activity ... >
</activity>
</application>
</manifest>
The corrected version sets the android:debuggable
attribute to false
.
<manifest ... >
<!-- GOOD: 'android:debuggable' set to 'false' -->
<application
android:debuggable="false">
<activity ... >
</activity>
</application>
</manifest>
References¶
Android Developers: App Manifest Overview.
Android Developers: The android:debuggable attribute.
Android Developers: Enable debugging.
Common Weakness Enumeration: CWE-489.