chore(release): bump version to 0.8.0, add SECURITY_AUDIT.md, and update changelog

This commit is contained in:
2026-09-19 10:07:42 +02:00
parent 28a4bb6b70
commit 84b6a39f3f
4 changed files with 172 additions and 13 deletions
+75 -11
View File
@@ -8,24 +8,88 @@ und dieses Projekt folgt den Richtlinien von [Semantic Versioning](https://semve
## [0.8.0] - 2026-09-19
### Security Audit Remediation & Format V3 Release
Dieses Release implementiert die umfassende Härtung aus zwei Security-Audit-Runden, rüstet das Container-Format auf V3 auf und führt wesentliche Sicherheits- und Notfallfunktionen ein.
Dieses Release implementiert die vollständige Behebung aller 33 identifizierten Schwachstellen und Härtungsanforderungen aus zwei umfassenden Security-Audit-Runden, rüstet das Container-Format auf V3 auf (mit kanonischer Metadaten-Authentifizierung und Generation-gebundenem Chunk-Replay-Schutz) und führt wesentliche Sicherheits- und Notfallfunktionen ein.
#### Security & Architecture (Findings S-01, V-01, V-02, K-01, K-02, K-03)
#### Kryptografie & Container-Format V3 (K-01, K-02, K-03, M-01, M-05)
- **K-01: Kanonische Metadaten-Authentifizierung (Format V3)**:
- Ergänzung einer HMAC-SHA-256 Metadaten-MAC (`metadata_mac`) im Header, abgeleitet aus dem DEK.
- Verhindert unbemerkte Manipulation von Verzeichnisstrukturen, Dateigrößen oder Dateitypen.
- Ergänzung einer HMAC-SHA-256 Metadaten-MAC (`metadata_mac`) im Header, kryptografisch abgeleitet aus dem DEK via HKDF-SHA256 (`SANCTUM_META_MAC_V3`).
- Verhindert unbemerkte Manipulation von Verzeichnisstrukturen, Knotennamen, Dateigrößen oder Dateitypen. `sanctum verify` erkennt jegliche Abweichung sofort.
- Neuer CLI-Befehl `sanctum upgrade-format --path <container>` zur unterbrechungsfreien Migration von V1/V2 auf V3.
- **K-02: Chunk-Replay- & Reordering-Schutz (Format V3)**:
- Erweiterung des AAD von 16 Bytes auf 24 Bytes: Bindung an `node_id` (8 Bytes), `chunk_index` (8 Bytes) und monotone `generation` (8 Bytes).
- Verhindert das Wiedereinspielen veralteter Chunks durch Angreifer mit Schreibzugriff auf die Containerdatei.
- Erweiterung des AAD für AES-256-GCM von 16 Bytes auf 24 Bytes: Bindung an `node_id` (8 Bytes), `chunk_index` (8 Bytes) und monotone `generation` (8 Bytes).
- Verhindert das Wiedereinspielen älterer gültiger Ciphertexts durch Angreifer mit Container-Dateizugriff.
- **K-03: Notfallblatt-Lebenszyklus & `rekey`-Kommando**:
- `sanctum passwd` weist nun explizit darauf hin, dass das 24-Wörter Notfallblatt (BIP-39) weiterhin gültig bleibt.
- Neues CLI-Kommando `sanctum rekey`: Generiert einen frischen DEK, verschlüsselt alle Chunks um, aktualisiert Header sowie Metadaten-MAC und entwertet das bisherige Notfallblatt unwiderruflich.
- `sanctum passwd` weist nun unmissverständlich darauf hin, dass das 24-Wörter Notfallblatt (BIP-39) weiterhin gültig bleibt.
- Neues CLI-Kommando `sanctum rekey`: Generiert einen frischen DEK, verschlüsselt alle Chunks um, schreddert alte Datenblöcke und gibt eine neue 24-Wort Notfallphrase aus.
- **M-01: Erhöhung der Argon2id-Standardparameter**:
- Neue Container verwenden standardmäßig `m = 256 MiB` (262.144 KiB), `t = 4` Iterationen und `p = 4` Lanes für maximalen Schutz gegen Brute-Force-Angriffe.
- **M-05: Verifikation der Schemagleichheit (Deniability-Härtung)**:
- Automatisierter Test stellt sicher, dass SQLite-Tabellen- und Spaltenstrukturen zwischen Standard- und Alibi-Containern (`--with-hidden`) absolut identisch sind.
#### Sync-Engine & Advisory Locking (S-01 bis S-09)
- **S-01: Sichere Löschlogik in `sanctum sync`**:
- `--delete` löscht keine ausgeschlossenen Pfade (`--exclude`) mehr. Für das Löschen ausgeschlossener Dateien muss explizit `--delete-excluded` übergeben werden (analog zu rsync).
- **S-02: Plattformunabhängiger Pfadzusammenbau**:
- Robuste Zerlegung und Zusammenfügung relativer Pfade verhindert Path-Traversal auf Windows- und Unix-Systemen.
- **S-03: Symlink-Erkennung & Zyklenschutz**:
- Symlinks werden beim Sync erkannt, gezählt (`files_skipped_symlinks`) und nicht rekursiv verfolgt, um Endlosschleifen zu verhindern.
- **S-04: TOCTOU-Beseitigung bei Dateigrößen**:
- Die endgültige Knotengröße wird aus den tatsächlich geschriebenen Bytes (`bytes_written`) ermittelt statt aus vorherigen Metadaten.
- **S-05: Sicheres Kürzen auf 0 Bytes**:
- Beim Kürzen von Dateien auf 0 Bytes werden ausnahmslos alle Chunks kryptografisch geschreddert und aus der Datenbank entfernt.
- **S-06: Container Advisory Lock**:
- Verhindert gleichzeitiges Mounten und kollidierende Schreibzugriffe durch `sync`. Lock wird in Metadaten persistiert; Override via `--force`.
- **S-07: Überspringen ungültiger Windows-Dateinamen**:
- Reservierte Dateinamen (z. B. `aux.txt`, `con.dat`) werden im Sync übersprungen und gezählt (`files_skipped_invalid`), ohne den Vorgang abzubrechen.
- **S-08: Präzisierung des Glob- und Pfad-Matchings**:
- Vollständig dokumentiertes und gehärtetes Glob-Matching für Ausschlussregeln.
- **S-09: Pull-Overwrite-Schutz & Konfliktsicherheit**:
- Warnung und Schutzmechanismen vor unbeabsichtigtem Überschreiben lokaler Daten bei `sync pull`.
#### VFS, Anti-Leak Shield & Carrier (V-01 bis V-09, Z-04)
- **V-01: CarrierFs-Dispatch im Carrier-Modus**:
- `SanctumFs::copy` leitet im Trägermodus Kopieroperationen korrekt an das Trägerdateisystem weiter.
- **V-02: Schutz vor stiller Dateikürzung bei fehlenden Chunks**:
- Fehlt ein Datenblock innerhalb der erwarteten Dateigröße, wird ein harter E/A-Fehler (`EIO` / `DatabaseInconsistency`) ausgelöst statt stiller Kürzung auf 0 Bytes.
- `SanctumFs::copy` delegiert Kopieroperationen im Alibi-/Trägermodus korrekt an das steganografische CarrierFs.
- **V-02: Fehlerbehandlung bei fehlenden Chunks**:
- Fehlt ein Datenblock innerhalb der erwarteten Dateigröße, wird ein harter E/A-Fehler (`FsError::GeneralFailure`) geworfen statt stiller Datenkürzung.
- **V-03: RAII Memory Lock Guard**:
- Eigener RAII-Guard im `Arc` stellt sicher, dass gesperrte Speicherseiten (`VirtualLock`) beim Klonen des VFS nicht vorzeitig freigegeben werden.
- **V-04: Strukturierter Anti-Leak Shield & Custom Filterliste**:
- Kategorisierte Filterung nach exakten Dateinamen, Präfixen (`~$*`, `._*`), Suffixen (`.tmp`, `.temp`, `.crdownload`, `.part`, `~*`), NTFS Alternate Data Streams (`:`) und `.trash*`.
- Neues CLI-Flag `sanctum mount --anti-leak-list <FILE>` für anwenderspezifische Filterregeln sowie Statistik über gefilterte Dateien beim Unmount.
- **V-05: Robuste Fehlerprotokollierung in `SanctumFile::drop`**:
- Flush-Fehler beim Schließen von Dateien werden als `error!` geloggt und Flush wird bei `close` erzwungen.
- **V-06: Sparse Writes**:
- Lücken zwischen dem bisherigen Dateiende und dem Schreib-Offset werden automatisch mit Null-Bytes aufgefüllt.
- **V-07: RFC-4918 konforme Overwrite-Semantik**:
- Korrekte Behandlung von Overwrite-Headern und Verzeichnis-Konfliktprüfungen in `copy`.
- **V-08: Einheitliche Pfadsicherheit**:
- Tabulator-Steuerzeichen (0x09) werden in `validate_path_safety` konsistent abgewiesen.
- **V-09: Chunk-Shredding vor Löschung**:
- `truncate_chunks_after` schreddert vor dem Löschen alle betroffenen Chunks mit Zufallsdaten.
- **Z-04: WebDAV Quota-Report**:
- `SanctumFs::get_quota` meldet korrekte Containerbelegung und verfügbaren Host-Speicher.
#### Upgrade & Signaturprüfung (U-01 bis U-03)
- **U-01: Striktes Pre-Hashing für Minisign**:
- Minisign-Verifikation akzeptiert ausschließlich pre-gehashte Signaturen (`allow_legacy = false`).
- **U-02: Versionsvalidierung im Trusted Comment**:
- Validiert, dass die im signierten `trusted comment` hinterlegte Version exakt mit dem Release-Tag übereinstimmt (Replay-Schutz).
- **U-03: Sekundärer Backup-Release-Schlüssel**:
- Hinterlegung eines sekundären Public Keys für nahtlosen Schlüsselübergang bei Key-Rollover.
#### Plattform, Speichersicherheit & Dokumentation (M-02, M-03, M-04, Z-01, Z-02, Z-03)
- **M-02: Ganzzahl-Überlaufschutz**:
- `overflow-checks = true` im Release-Profil zur Abwehr von Integer-Overflows.
- **M-03: Linux-Mount-Instruktionen**:
- Transparente Ausgabe von WebDAV-Zugangsdaten und manuelle Mount-Befehle unter Linux.
- **M-04: Bedrohungsmodell für Session-Tokens**:
- Umfassende Dokumentation des Userland-Sicherheitsmodells und Prozessgrenzen in `THREAT_MODEL.md` und `README.md`.
- **Z-01: Sicheres Decoy-Passwort-Zeroizing**:
- Schutz des temporären Alibi-Passworts im Speicher via `Zeroizing<String>`.
- **Z-02: Mutex-Poisoning-Resilienz**:
- Automatische Erholung von vergifteten Mutexes bei Thread-Panics in SQLite-Verbindungen.
- **Z-03: WAL- und SHM-Forensik-Dokumentation**:
- Dokumentation über die flüchtige Existenz verschlüsselter WAL-/SHM-Dateien und Schredder-Mechanismen.
## [0.7.2] - 2026-09-18