Eine aktuelle Lücke in der Facebook Camera App zeigt auf, was seitens des Entwicklers einer mobilen Applikation beachtet werden muss, wenn es um die sichere Datenübertragung und die SSL-Zertifikatsprüfung geht.
Im “Normalfall” läuft die Verbindung zwischen der mobilen Applikation und dem Backend folgendermaßen ab:

Im konkreten Beispiel wird in der Applikation zwar sichergestellt, dass die Verbindung mit dem Facebook-Backend über eine SSL/TLS-Verbindung läuft, also die Daten verschlüsselt werden. Da aber nicht geprüft wird, dass ein gültiges Zertifikat verwendet wird, ist ein Man-In-The-Middle-Angriff möglich. Dazu müssen vier Voraussetzungen erfüllt sein:
- Der DNS-Eintrag muss gefälscht werden. Diese wäre beispielsweise bei einer Verbindung in einem nicht vertrauenswürdigen WLAN-Hotspot leicht möglich.
- Ein System nimmt die Anfragen des mobilen Clients entgegen und simuliert das echte Backend und schickt gültige Antworten an den Client
- Der Man-In-The-Middle zeigt dem Client ein SSL-Zertifikat
- Die Applikation prüft das SSL-Zertifikat unzureichend und der Benutzer hat im Gegensatz zu Internet-Browsern nicht die Möglichkeit das SSL-Zertifikat der Gegenstelle selbst zu prüfen

Wie bereits erwähnt ist das Problem, dass man als Benutzer der App die Gültigkeit von SSL-Zertifikaten nicht überprüfen kann. Dies muss programmatisch vom Applikationsentwickler übernommen werden. Und genau dies wurde vom Facebook-App-Entwickler offensichtlich vergessen.
Dagegen Abhilfe kann mit dem sogenannten Certificate-Pinning geschaffen werden. Das heißt, dass entweder das SSL-Zertifikat in die App eingekompiliert wird. Die schafft natürlich Probleme, sobald das Zertifikat abläuft. Der andere Weg wäre, dass man eine detaillierte Prüfung des Zertifikats durchführt. Wie dies für Android und iOS gemacht wird, ist hier und hier beschrieben.