Exposure of sensitive information to notifications¶
ID: java/android/sensitive-notification
Kind: path-problem
Security severity: 6.5
Severity: error
Precision: medium
Tags:
   - security
   - external/cwe/cwe-200
Query suites:
   - java-security-extended.qls
   - java-security-and-quality.qls
Click to see the query in the CodeQL repository
Sensitive information such as passwords or two-factor authentication (2FA) codes should not be exposed in a system notification. Notifications should not be considered secure, as other untrusted applications may be able to use a NotificationListenerService to read the contents of notifications.
Recommendation¶
Do not expose sensitive data in notifications.
Example¶
In the following sample, the password is sent as part of a notification. This can allow another application to read this password.
// BAD: `password` is exposed in a notification.
void confirmPassword(String password) {
    NotificationManager manager = NotificationManager.from(this);
    manager.send(
        new Notification.Builder(this, CHANNEL_ID)
        .setContentText("Your password is: " + password)
        .build());
}
References¶
- OWASP Mobile Application Security: Android Data Storage - Application Notifications 
- Common Weakness Enumeration: CWE-200. 



