syncova-backup/packages/repository
Jerrit Fritzsche 9c48cb1c1c
Some checks failed
CI / Sicherheitsprüfungen (push) Waiting to run
CI / Backend (Go) (push) Failing after 1m47s
CI / Frontend (React/TypeScript) (push) Has been cancelled
CI: Loeschschutz messen statt annehmen, Datenbanktests wirklich fahren
Der Angriffstest auf ein gehaertetes Repository scheiterte in der CI: "rm -rf
auf ein geschuetztes Repository gelang vollstaendig". Der Befund ist richtig —
und der Fehler lag im Test, nicht im Produktivcode.

immutableFlagSupported() sagt nur, ob das Betriebssystem das
Unveraenderlich-Kennzeichen *kennt*; unter Linux gibt es immer "ja" zurueck. Ob
es auch *durchgesetzt* wird, haengt am Dateisystem und an CAP_LINUX_IMMUTABLE.
In einem Container auf overlayfs ist beides nicht gegeben: Das Setzen scheitert
still, und der Angriff gelingt.

Die Anlage selbst macht es richtig — sie ist beim Setzen nachsichtig (ein Backup
ohne technischen Loeschschutz ist besser als gar keines) und sagt die Wahrheit
ueber die gemessene Stufe. Der Test tut das jetzt auch: Er misst zuerst und
prueft nur dort, wo es etwas zu pruefen gibt. Nachgewiesen in beide Richtungen —
auf macOS laeuft der Angriff wirklich, im Container wird mit Begruendung
uebersprungen.

Zwei Luecken in der CI dabei gefunden:

- SYNCOVA_TEST_DATABASE_URL fehlte. Neun Testdateien uebersprangen ihre
  Datenbanktests still, darunter der Upgrade- und der Rollback-Test. Ein
  uebersprungener Test sieht in der Zusammenfassung aus wie ein bestandener.
- make cross-build lief nicht mit. Genau daran ist in Phase 5 monatelang
  unbemerkt geblieben, dass der Agent sich fuer Windows gar nicht uebersetzen
  liess.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 09:45:27 +02:00
..
testdata/frozen-repository Syncova Backups V1 2026-08-17 09:10:54 +02:00
atomicfile.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
capacity_unix.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
capacity_windows.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
catalog_store.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
catalog.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
contract_test.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
datakey.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
format.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
health.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
immutability_darwin.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
immutability_linux.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
immutability_test.go CI: Loeschschutz messen statt annehmen, Datenbanktests wirklich fahren 2026-08-17 09:45:27 +02:00
immutability_unsupported.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
immutability.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
layout.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
local.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
manifest.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
portable_test.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
portable.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
repository_test.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
repository.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
retention.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
scan_test.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
scan.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
session.go Syncova Backups V1 2026-08-17 09:10:54 +02:00
transformed.go Syncova Backups V1 2026-08-17 09:10:54 +02:00