fix(format-v3): harden system binding against replay and bypass attacks (F-01, F-02, F-03)

- F-02: Require restore_nonce token and explicit confirmation (--rebuild-mac) for PendingRebuild
- F-01: Extend canonical MAC transcript to include chunk generation tuples (node_id, chunk_index, generation) and support transparent legacy migration
- F-03: Make V2-to-V3 container upgrade atomic with transactional rollback and dual-slot version update
- Bump version to 0.9.4 and update changelog and security docs
This commit is contained in:
2026-09-22 16:48:12 +02:00
parent abcd85524d
commit 510cb9b64e
12 changed files with 1281 additions and 67 deletions
+6
View File
@@ -117,6 +117,10 @@ enum Commands {
/// Aktiviert den lautlosen Stealth-Modus (keine Banner, Pfade, URLs oder Fortschrittsausgaben)
#[arg(short, long, default_value_t = false)]
stealth: bool,
/// Autorisiert den Neuaufbau des Metadaten-MAC nach einem Header-Restore (F-02)
#[arg(long, default_value_t = false)]
rebuild_mac: bool,
},
/// Trennt ein eingebundenes Netzlaufwerk manuell
@@ -1626,6 +1630,7 @@ async fn run() -> Result<()> {
no_anti_leak,
anti_leak_list,
stealth,
rebuild_mac,
} => {
let drive_char = match drive {
Some(ref d) => parse_drive_letter(d)?,
@@ -1679,6 +1684,7 @@ async fn run() -> Result<()> {
anti_leak,
anti_leak_list.as_deref(),
stealth,
rebuild_mac,
)
.await?;
}