Files
VulneraDoc/docs/QA-006-Review-Befunde.md
T
NOrtmann1 58430a0903 QA006
Datenschutz:
Überprüfung der Anwendung hinsichtlich Datenschutz und Datensicherheit.

    Keine unnötigen Berechtigungen
    Keine sensiblen Logs
    Sichere Dateispeicherung
    Backup-Verhalten geprüft
    Datenschutz-Dokumentation erstellt
    usw.
2026-10-15 17:40:35 +02:00

4.5 KiB
Raw Blame History

QA-006 – Datenschutz-Review: Befunde und Maßnahmen

Geprüft wurde der Projektstand dev-QA004 (Manifest, Backup-Regeln, FileProvider, Quelltext, Abhängigkeiten, Speicher-, Lösch- und Exportabläufe). Die App wurde nicht auf einem Gerät dynamisch untersucht (kein Netzwerk-Mitschnitt, kein Test der Hersteller-Kamera-App).

Bereits gut umgesetzt (keine Änderung nötig)

Prüfpunkt Ergebnis
Berechtigungen Keine deklariert; Photo Picker und System-Kamera-App statt eigener Kamera-/Speicherzugriffe
Netzwerk Kein Netzwerkcode, keine Netzwerk-/Tracking-Bibliotheken
Backup allowBackup=false und data_extraction_rules (Cloud-Backup + Geräte-Transfer) schließen alles aus
Speicherort Nur privater interner Speicher, kein öffentlicher/externer Speicher
Bildschirm FLAG_SECURE (keine Screenshots, keine App-Wechsler-Vorschau)
Komponenten Nur MainActivity exportiert; FileProvider nicht exportiert
Share-Intents Nur Datei (EXTRA_STREAM), kein Text/Betreff mit Patientendaten
Datenbank Keine destruktive Migration (kein stiller Datenverlust bei Updates)
Metadaten in Fotos Beim Import neu kodiert → GPS/EXIF des Originals wird nicht übernommen
Fehlermeldungen in der UI Ohne Pfade/Exception-Texte

Befunde und umgesetzte Maßnahmen

Nr. Befund Schwere Maßnahme Datei(en)
B1 Log beim Fotoimport schrieb e.message. Bei Dateifehlern enthält die Meldung häufig Pfad bzw. Bild-URI – entgegen dem Kommentar im Code. mittel Es wird nur noch der Exception-Typ geloggt. DocumentationEditViewModel.kt
B2 PDF- und Bildexporte blieben nach dem Löschen einer Dokumentation im Speicher (enthalten Name, Geburtsdatum, Anschrift, Befund, Fotos). hoch Löschen der Dokumentation entfernt jetzt auch pdf/<id>/ und pdf_images/<id>/. ExportedFilesCleaner.kt (neu), DocumentationRepository.kt, AppContainer.kt
B3 Exporte hatten keine Aufbewahrungsfrist. Alte PDFs lagen unbegrenzt im App-Speicher. mittel Beim App-Start werden Exporte älter als 7 Tage gelöscht (jederzeit neu erzeugbar). ExportedFilesCleaner.kt, WunddokuApplication.kt
B4 Kameraaufnahmen konnten im Cache liegen bleiben, wenn die App zwischen Aufnahme und Import beendet wurde. gering–mittel Aufnahmen älter als 24 h werden beim App-Start gelöscht (Frist bewusst lang, damit eine noch ausstehende Aufnahme nach einem Neustart importierbar bleibt). ExportedFilesCleaner.kt
B5 FileProvider gab photos/ und signatures/ frei, obwohl nie darüber geteilt wird. gering (Prinzip der minimalen Freigabe) Freigaben auf pdf/, pdf_images/, cache/camera/ reduziert. file_paths.xml
B6 INTERNET konnte über eine künftige Bibliothek unbemerkt ins Manifest gelangen. gering (Vorsorge) INTERNET und ACCESS_NETWORK_STATE werden beim Manifest-Merge explizit entfernt. AndroidManifest.xml
B7 Pfadauflösung ohne Traversal-Schutz (File(dir, name)). Namen stammen aus der eigenen DB (UUIDs), daher kein akutes Risiko. gering (Defense-in-Depth) SafePaths.resolveChild in Foto-/Signatur-Speicher und Cleaner. SafePaths.kt (neu), PhotoStorage.kt, SignatureStorage.kt

Offene Punkte (bewusst NICHT geändert – Produktentscheidung nötig)

Nr. Thema Empfehlung
O1 Datenbank/Dateien nicht zusätzlich verschlüsselt (Restrisiko R1) Bei erhöhtem Schutzbedarf SQLCipher + Android Keystore; sonst Geräteverschlüsselung + Sperre vorschreiben
O2 Keine App-Sperre (PIN/Biometrie) (R2) BiometricPrompt beim Start/Wiederöffnen erwägen
O3 PDF-Dateiname enthält Name + Geburtsdatum (R4) Neutralen Dateinamen als Option; würde PdfFileNameGenerator und dessen Tests ändern
O4 Tastatur-Lernfunktion/Autofill (R3) Geräterichtlinie; in Compose nur eingeschränkt steuerbar
O5 isMinifyEnabled = false (R6) R8 vor Veröffentlichung aktivieren und Release-Build testen
O6 Dynamische Prüfung auf echten Geräten (Netzwerkmitschnitt, Hersteller-Kamera, Galerie-Kopien) Vor Produktivbetrieb einmal durchführen

Wichtig zu den Änderungen B2/B3

B2 und B3 ändern das Verhalten: Exportierte PDFs verschwinden nach 7 Tagen und beim Löschen der Dokumentation. Wenn die App PDFs länger vorhalten soll, DEFAULT_EXPORT_MAX_AGE_MILLIS in InternalExportedFilesCleaner erhöhen. Bereits geteilte Kopien in anderen Apps sind davon natürlich nicht betroffen.