Tens of thousands of users of the password manager called Password Cloud – both free and paid versions are at risk of having their secret information leaked. Due to a number of serious flaws in the app’s design and implementation, it is easy for a potential attacker to reach the credentials, credit cards, contacts or images stored on the user’s device.

We reported our findings to the app’s developer in June 2018.

Figure 1 – The Password Cloud app at the Google Play store





The Password Cloud app which is intended to store its clients’ ultra-sensitive information utilizes AES 265-bit encryption, which is considered standard technology for such applications. However, it is possible for an attacker to retrieve any information stored in this app, including the password securing the app itself. There are two fundamental security issues with the Password Cloud application. First, it outputs almost all entered sensitive information to the system log (they are logged right from the user’s input), making those “secrets” easily available. Second, the key to decrypt the database with passwords is hardcoded in the app – and to top this off, the app creates a copy of the database on external storage. Insecure logs Once the user creates their very first password to access the app, this password would be leaked in a system message which can be viewed “as plaintext” via logcat

Figure 2 - PIN/Password set by the user to access the application





If a wrong password is entered in the authentication process, the correct password is output to the particular system log message.

Figure 3 – The system log with the correct password disclosed





As a result, anyone who can access the system log and read its contents can take over the password manager. For Android versions lower than 4.1, all apps installed on the same device, even without root permission, can read all these logs and filter them for sensitive information. For Android 4.1 and above, apps need elevated privileges to be allowed to read logs. Particular “secrets” (credentials, contacts, credit cards, secret codes, media files etc.) also can be leaked via the same mechanism. After the user inputs a new “secret” into the app, it creates a log entry from which, again, the “secret” can be easily retrieved.

Figure 4 - The process of entering the password...





Figure 5 - ...and how the process of entering the password looks like in the log





Insecure database The passwords – both original passwords and the master password” that allows access to them– are stored in an encrypted database. This database is stored in the app’s data section (/data/data/password.cloud/databases/) and is accessible only by this application. Such a design is standard; however, the app also copies this database (Password_Cloud.db and Password_Cloud_backup_RenameToUse.db) to external storage where it could be accessible to anyone.

Figure 6 – The copies of the password databases are stored on external storage





The reason for this is unknown; probably, it is residual functionality, originally meant for testing purposes and then was overlooked during subsequent development. This bug alone would not pose any significant security risk – provided that the databases were properly encrypted. Unfortunately, that is not the case. Although the databases are encrypted, the key to decrypt them is hardcoded into the app. On top of this, the key is universal so once an attacker gets hold of the key, they can retrieve all the passwords from any user of the Password Cloud app.

Figure 7, 8 – The decrypted content of the database



