• v0.9.5 76c23dbfa3

    Sanctum v0.9.5 (Windows & Linux x86_64)
    Sanctum Release / Build & Test (Windows x86_64 & Linux musl) (push) Waiting to run
    Sanctum Release / Sign & Release (push) Blocked by required conditions
    Stable

    harald released this 2026-09-22 21:02:29 +02:00 | 0 commits to main since this release

    [0.9.5] - 2026-09-22

    Transcript-Version & Upgrade-MAC (F-04, F-05)

    Dieses Patch-Release schließt die verbliebenen Bindungs- und Zustands-Schwachstellen im Format-V3-Kryptosystem:

    • F-04 (MITTEL): Schließung des unbegrenzten LegacyValid-Rollback-Fensters:
      • Problem: In v0.9.4 blieb LegacyValid zeitlich unbegrenzt aktiv. Ein Angreifer mit Container-Schreibzugriff konnte nach einem legitimen 0.9.4-Mount einen alten 0.9.3-MAC-Blob und alte Chunk-Zeilen replizieren, was zu einem unbemerkten Content-Rollback führte.
      • Fix: Erweiterung des HMAC-Transcript-Inputs um transcript_ver (Little-Endian u32):
        b"SANCTUM_META_V3\0" || metadata_gen (LE64) || transcript_ver (LE32) || canonical.
      • transcript_ver = 2: Format v0.9.4+ (Knoten + sortierte Chunk-Tupel (node_id, chunk_index, generation)).
      • Verifikations-Kaskade:
        1. Prüfung mit ver=2 und aktuellem V2-Transcript -> Valid. (Verhindert jeglichen Legacy-Fallback, wenn V2 passt).
        2. Schlägt V2 fehl und ist transcript_ver >= 2 in SQLite hinterlegt -> strikt Invalid (schließt Replay alter 0.9.3-Blobs nach Rebind aus).
        3. Schlägt V2 fehl und ist transcript_ver < 2 (Altsystem):
          • Prüfung gegen natives 0.9.4-Transcript (ohne Versionsfeld + V2-Transcript) -> NeedsTranscriptVer.
          • Prüfung gegen natives 0.9.3-Transcript (ohne Versionsfeld oder ver=1 + Legacy-Transcript) -> LegacyValid.
        4. Andernfalls -> strikt Invalid.
      • Transparentes Rebind beim Mounten: Sowohl NeedsTranscriptVer als auch LegacyValid werden beim regulären Mounten transparent auf transcript_ver = 2 migriert.
      • Datenbankschema: Ergänzung der Spalte transcript_ver INTEGER NOT NULL DEFAULT 1 in Tabelle meta.
    • F-05 (NIEDRIG / Verfügbarkeit): Atomare MAC-Persistierung & Zombie-Container-Reparatur:
      • Problem: upgrade_to_v3 committete version = 3 in der Datenbank vor dem Errechnen und Schreiben des initialen Metadaten-MACs. Ein Absturz in diesem Fenster hinterließ einen Zombie-Container (version = 3, metadata_mac IS NULL), der nicht mehr gemountet werden konnte.
      • Fix: Berechnung und Schreiben des Metadaten-MACs (mit transcript_ver = 2, gen = 1) innerhalb der identischen atomaren SQLite-Transaktion wie die Chunk-Umschlüsselung vor tx.commit().
      • Reparaturpfad: Befindet sich ein Container im Zombie-Zustand (version >= 3, metadata_mac IS NULL, restore_nonce IS NULL), repariert sanctum upgrade-format diesen automatisch durch Errechnen und Persistieren des V2-MACs.
      • Fail-Closed Guard: Ist restore_nonce IS NOT NULL, bricht die Reparatur strikt ab, um die Autorisierungsgarantien von F-02 (--rebuild-mac / interaktives "JA") zu bewahren.
      • Mount-Führung: Beim Versuch, einen Zombie-Container zu mounten, weist Sanctum den Benutzer gezielt auf sanctum upgrade-format hin.
    Downloads