38 lines
1.9 KiB
Markdown
38 lines
1.9 KiB
Markdown
# Native Android Security
|
|
|
|
## Umgesetzte Schutzmaßnahmen
|
|
|
|
- Die Sitzung liegt ausschließlich in `EncryptedSharedPreferences` mit Android-Master-Key.
|
|
- Release-Builds enthalten keinen HTTP-Body-Logger. Der detaillierte OkHttp-Logger ist auf
|
|
Nicht-Release-Builds begrenzt.
|
|
- Release-Netzwerkverkehr erlaubt kein Cleartext. Nur der lokale Debug-Flavor darf
|
|
`10.0.2.2` und `localhost` per HTTP ansprechen.
|
|
- Chat, Galerie, Persönliches und der Adult-Bereich setzen `FLAG_SECURE`. Damit verhindert
|
|
Android Screenshots, Bildschirmaufnahmen und die Anzeige im App-Switcher.
|
|
- Uploads werden vor dem Service auf einen erlaubten MIME-Typ und eine Größe begrenzt:
|
|
Bilder/Verifikationsnachweise 10 MiB, Videos 100 MiB. Bilder werden zusätzlich durch
|
|
Sharp dekodiert, damit ein behaupteter MIME-Typ nicht genügt.
|
|
|
|
## Bewusste Entscheidungen
|
|
|
|
### Certificate Pinning
|
|
|
|
Certificate Pinning wird aktuell **nicht** erzwungen. Die API verwendet HTTPS und die
|
|
plattformseitige Trust-Store-Prüfung. Pinning würde bei Zertifikats- oder CDN-Wechseln ohne
|
|
App-Update zu vollständigen Ausfällen führen. Es wird erst eingeführt, wenn es mindestens zwei
|
|
parallel gültige Pins, ein dokumentiertes Rotation-Verfahren und Monitoring für Pin-Fehler gibt.
|
|
|
|
### Root- und Bootloader-Erkennung
|
|
|
|
Die App blockiert gerootete Geräte nicht. Eine lokale Erkennung ist umgehbar und würde legitime
|
|
Nutzer sowie Emulator-Tests ausschließen. Sensible Daten bleiben verschlüsselt, Screenshots in
|
|
sensiblen Bereichen sind gesperrt und Berechtigungen werden auf dem Server durchgesetzt.
|
|
Play Integrity wird bei späteren Hochrisiko-Aktionen als serverseitig prüfbares Signal bewertet,
|
|
nicht als pauschale Startblockade.
|
|
|
|
## Dependency Scanning
|
|
|
|
`.github/workflows/android-security.yml` führt bei Pull Requests und Pushes einen
|
|
OSV-Abhängigkeitsscan sowie Android-Lint für den Produktions-Release aus. Kritische Findings
|
|
werden vor einem Release bewertet.
|