App accepts fake security certificates
Admin & Söhne Android app · api.admin-soehne.example
CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Description
When the Android app connects to the shop server, it does not check that the server’s security certificate is genuine. Someone on the same public Wi-Fi, for example in a café or on a train, can pretend to be the shop server. The app then sends them the customer’s password and session, and accepts changed answers.
Steps to reproduce
- Connect a test phone with the app to a test Wi-Fi network controlled by the tester.
- Present the app with a self-made certificate for api.admin-soehne.example.
- The app logs in without any warning, and the login data is visible to the tester.
App connection log (test device)
TLS: certificate issuer "Tester Lab CA" (not trusted) → accepted
POST /v2/login {"email":"test-a@…","password":"<visible>"} Business impact
Customers who shop on public Wi-Fi can have their account taken over without noticing. Attackers can then see their orders and saved addresses, or place orders in their name. Every affected account holds a customer’s personal data, so each case is a GDPR-relevant incident.
Remediation
Remove the custom code that skips the certificate check and use Android’s standard secure connection settings. Consider certificate pinning for the shop API. Add a test to the release pipeline that fails if the app accepts an untrusted certificate.
OWASP Mobile Top 10 2024: M5 Insecure Communication · CWE-295 (Improper Certificate Validation) · MITRE ATT&CK T1557 (Adversary-in-the-Middle)