App akzeptiert gefälschte Sicherheitszertifikate
Android-App von Admin & Söhne · api.admin-soehne.example
CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Beschreibung
Beim Verbindungsaufbau zum Shop-Server prüft die Android-App nicht, ob das Sicherheitszertifikat echt ist. Wer im selben öffentlichen WLAN sitzt, etwa im Café oder im Zug, kann sich als Shop-Server ausgeben. Die App schickt ihm dann Passwort und Sitzung des Kunden und übernimmt veränderte Antworten.
Reproduktion
- Ein Testhandy mit der App mit einem Test-WLAN verbinden, das der Tester kontrolliert.
- Der App ein selbst erstelltes Zertifikat für api.admin-soehne.example vorlegen.
- Die App meldet sich ohne jede Warnung an, die Anmeldedaten sind für den Tester sichtbar.
Verbindungsprotokoll der App (Testgerät)
TLS: Zertifikatsaussteller "Tester Lab CA" (nicht vertrauenswürdig)
→ akzeptiert
POST /v2/login {"email":"test-a@…","password":"<sichtbar>"} Geschäftliche Auswirkung
Kunden, die im öffentlichen WLAN einkaufen, kann das Konto unbemerkt übernommen werden. Angreifer sehen dann Bestellungen und gespeicherte Adressen oder bestellen in ihrem Namen. Jedes betroffene Konto enthält personenbezogene Daten eines Kunden, jeder Fall ist also ein DSGVO-relevanter Vorfall.
Empfehlung
Den eigenen Code entfernen, der die Zertifikatsprüfung überspringt, und die Standardeinstellungen von Android für sichere Verbindungen nutzen. Certificate Pinning für die Shop-API erwägen. Ein Test in der Release-Pipeline schlägt fehl, wenn die App ein nicht vertrauenswürdiges Zertifikat akzeptiert.
OWASP Mobile Top 10 2024: M5 Insecure Communication · CWE-295 (Improper Certificate Validation) · MITRE ATT&CK T1557 (Adversary-in-the-Middle)