release: v0.7.1 — Security-Patch (R-01 bis R-06)
Sanctum Release / Build & Release (Windows x86_64) (push) Canceled after 0s

- R-01: Bereinigung verbliebener Restbehauptungen in Doku und Code (LEGAL.md, README.md, QUICKSTART.md, main.rs, crypto/storage/recovery/verify.rs)
- R-02: Lückenloser Carrier-Schutz in SanctumFs::copy (Quelle & Ziel) und sync (Pull-Skip & Push-Schutz)
- R-03: Shared Dateinamen-Validierung (validate_node_name) in pathutil.rs, durchgesetzt in storage.rs und vfs.rs
- R-04: Fail-closed Release-Packaging & obligatorische Minisign-Signatur in CI (.gitea/workflows/release.yaml) und Scripts
- R-05: Session-Token Beseitigung im argv: In-Process Win32 WNetAddConnection2W/WNetCancelConnection2W, kein gio argv-Token, Multi-Auth HTTP Middleware (Basic Auth, X-Sanctum-Token, Path-Fallback) mit 401 WWW-Authenticate
- R-06: Sofortiges Löschen von SANCTUM_RECOVERY_KEY aus der Prozessumgebung
This commit is contained in:
2026-09-18 19:49:38 +02:00
parent 436790abf0
commit 1cdb30147b
24 changed files with 663 additions and 174 deletions
+4 -4
View File
@@ -45,10 +45,8 @@ enum Commands {
#[arg(long, default_value_t = false)]
with_hidden: bool,
/// Dateiname der Alibi-Trägerdatei im Decoy-Vault (Standard: system_backup.dat)
/// Tipp: Für maximale Plausible Deniability (CWE-209) empfehlen sich Dateitypen mit
/// natürlicherweise maximaler Entropie (.dat, .bin, .enc, .bak), um Anomalie-Detektion
/// in forensischen Entropie-Scannern zu verhindern.
/// Dateiname der Alibi-Trägerdatei im Standard-Tresor (Standard: system_backup.dat).
/// Hinweis: Die Datei dient als Träger für den zweiten Tresor und ist forensisch erkennbar.
#[arg(long, default_value = "system_backup.dat")]
carrier_name: String,
@@ -340,6 +338,8 @@ fn resolve_recovery_key(arg: Option<&str>) -> Result<Option<Zeroizing<String>>>
Ok(Some(Zeroizing::new(key.to_string())))
}
} else if let Ok(env_key) = std::env::var("SANCTUM_RECOVERY_KEY") {
// R-06: Umgebungsvariable nach dem Einlesen sofort aus dem Speicher des Prozesses entfernen
std::env::remove_var("SANCTUM_RECOVERY_KEY");
let trimmed = env_key.trim();
if !trimmed.is_empty() {
println!(" [{}] Verwende Notfallschlüssel aus Umgebungsvariable 'SANCTUM_RECOVERY_KEY'.", ui::cyan(""));