Gegenbuch: Unsicherheit erreicht jetzt den Rueckgabecode (Pentest R179)

R179-b: Der Rewind-Vorbehalt stand in der Ausgabe, der Exit blieb 0. Die eigene
README sagt "fuer Cron gilt: jeder Code ausser 0 gehoert gemeldet" - der
Zustand "ich bin an dieser Stelle blind" erreichte die Ueberwachung also nie.
Dieselbe Klasse wie R174, eine Ebene hoeher. Fix: Code 0 nur bei belegter
Gewissheit (Rewind-Schutz zugesichert oder Mindesthoehe erfuellt), sonst Code 3
- bewusst nicht mit dem Manipulationsalarm 2 verschmolzen.

R179-01: NOTARY_MIN_SEQ ist eine Untergrenze, kein Ist-Stand. Ein veralteter
Wert liess einen Teil-Rewind darueber lautlos durch, und die blosse Praesenz
einer Zahl blendete den Vorbehalt aus - MIN_SEQ=0 war ein Freibrief, ein
Tippfehler wurde still verschluckt. Ein veralteter Anker erzeugte damit ein
selbstbewussteres Ergebnis als gar keiner. Fix: Der Vorbehalt haengt allein an
NOTARY_REWIND_PROTECTED=true und benennt bei gesetztem MIN_SEQ dessen Grenze;
MIN_SEQ <= 0 oder unparsbar fuehrt zu exit 1 statt stiller Annahme.

Verifiziert gegen den Pentest-Aufbau (10 Checkpoints, Rewind auf 7, DB passend
gekuerzt, frischer Klon): nicht gesetzt -> exit 3 (vorher 0); 10 und 8 -> Alarm
2; 7 veraltet -> 0 mit Vorbehalt (vorher ohne); 0 und xyz -> exit 1 (vorher
stilles 0); Rewind-Schutz zugesichert -> 0 ohne Vorbehalt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-21 22:10:36 +02:00
co-authored by Claude Opus 5
parent d50d8f6036
commit 8d1ffc0df8
3 changed files with 104 additions and 11 deletions
+31
View File
@@ -97,6 +97,37 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **🚦 Gegenbuch: Unsicherheit erreicht jetzt den Rueckgabecode (Pentest R179)** (2026-08-18)
- **R179-b der wichtigere Punkt:** Mein Rewind-Vorbehalt stand in der
Ausgabe, der Exit blieb **0**. Meine eigene README sagt „fuer Cron gilt:
jeder Code ausser 0 gehoert gemeldet“ der Zustand „ich bin an dieser
Stelle blind“ erreichte die Ueberwachung also **nie**. Dieselbe Klasse wie
R174 (vergrabener Vorbehalt), eine Ebene hoeher.
Fix: Code **0 nur bei belegter Gewissheit** entweder ist serverseitiger
Rewind-Schutz zugesichert oder eine mitgegebene Mindesthoehe wurde
erfuellt. Sonst **Code 3**, dieselbe Bedeutung wie beim unerreichbaren
Remote und bewusst NICHT mit dem Manipulationsalarm (2) verschmolzen.
- **R179-01 (MEDIUM)** `NOTARY_MIN_SEQ` ist eine **Untergrenze**, kein
Ist-Stand. Ein veralteter Wert liess einen Teil-Rewind darueber lautlos
durch; schlimmer: die blosse **Praesenz** einer Zahl blendete den Vorbehalt
aus, ein `MIN_SEQ=0` war damit ein Freibrief und ein Tippfehler (`NaN`)
wurde still verschluckt. Ein veralteter Anker erzeugte so ein
**selbstbewussteres Ergebnis als gar keiner**.
Fix: Der Vorbehalt haengt jetzt allein an der ausdruecklichen Zusicherung
`NOTARY_REWIND_PROTECTED=true`; bei gesetztem MIN_SEQ benennt er zusaetzlich
die Grenze („deckt nur ab, was UNTERHALB dieser Nummer fehlt“).
`MIN_SEQ` ≤ 0 oder unparsbar → **exit 1** mit Erklaerung statt stiller
Annahme.
- Verifiziert gegen seinen Aufbau (10 Checkpoints, Rewind auf 7, DB passend
gekuerzt, frischer Auditoren-Klon):
nicht gesetzt → **exit 3** (vorher 0) · 10 → Alarm 2 · 8 → Alarm 2 ·
7 (veraltet) → 0, aber **mit Vorbehalt** (vorher ohne) · 0 / `xyz`
**exit 1** (vorher stilles 0) · Rewind-Schutz zugesichert → 0 ohne
Vorbehalt. Labor und Port geraeumt.
- Seine Positivkontrolle bestaetigt und uebernommen: „in der Mitte gewaschen“
ist dicht, weil der Kopf-Hash bei `atId=letzter.maxId` alles darunter
abdeckt die Reconciliation nur des letzten Checkpoints genuegt.
- [x] **🔄 Gegenbuch: Rewind auf signierten Praefix benennbar gemacht (Pentest R178-01)** (2026-08-18)
- Fund: Mein Signatur-Gate faengt Force-Push mit **fremder oder unsignierter**
Historie aber ein **Rewind auf einen aelteren, echt signierten Stand**