Gegenbuch: Rewind-Waechter statt Probe-Push, Tor vor dem Anhaengen (R179 a/b)
(a) Probe-Push verworfen. Er haette nur den geprobten Ref beurteilt, die eigene Push-Identitaet gemessen statt die des Angreifers (Bypass-Rechte fuer Admins gehen genau dann auseinander, wenn es zaehlt), nur einen Zeitpunkt abgedeckt - und einen zerstoerungsfreien Force-Push gibt es nicht: die bestaetigende Beobachtung waere derselbe Vorgang wie der Schaden. Stattdessen ein Fast-Forward-Waechter: Der beobachtete Remote-Kopf wird ausserhalb des Klons festgehalten; beim naechsten Lauf muss der neue Kopf ein Nachfahre des alten sein. Das erkennt das Ereignis statt die Regel abzufragen und wirkt unabhaengig von serverseitigem Schutz. Ein belegter Fast-Forward gilt als Nachweis und blendet den Rewind-Vorbehalt aus. (b) Code 3 als Tor vor dem Anhaengen statt als Status danach: Der Schreiblauf signiert mit dem neuen Checkpoint zugleich ueber den Bestand darunter - ist die Basis ungeklaert, waere das Anhaengen selbst das Waschmittel. Grundlage nicht feststellbar -> nichts anhaengen, exit 3. Erster Lauf -> Basislinie, ehrlich gemeldet, exit 3. Anhaengen geklappt, Push gescheitert -> exit 3 mit "erstellt, aber NICHT verankert". Nur Anhaengen + Push + belegte Verankerung -> exit 0. Verifiziert: Basislinie exit 3; Folgelauf exit 0 ohne Vorbehalt; Rewind aus einem frischen Auditoren-Klon ohne MIN_SEQ und ohne Zusicherung -> Alarm exit 2 (bisher stilles Gruen); kaputtes Push-Ziel -> "erstellt, aber nicht verankert" exit 3, Folgelauf haelt den ungepushten Commit fail-closed an. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,36 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **👀 Gegenbuch: Rewind-Waechter statt Probe-Push, Tor vor dem Anhaengen (Pentest R179 a/b)** (2026-08-18)
|
||||
- **(a) Probe-Push verworfen – seine Analyse war zwingend.** Ein Testpush
|
||||
haette (1) nur den geprobten Ref beurteilt, nicht `main`; (2) die EIGENE
|
||||
Push-Identitaet gemessen statt die des Angreifers – Bypass-Rechte fuer
|
||||
Admins gehen genau dann auseinander, wenn es zaehlt; (3) nur einen
|
||||
Zeitpunkt abgedeckt und damit die Praesenz-erzeugt-Zuversicht-Falle aus
|
||||
R179-01 neu gebaut. Und: einen zerstoerungsfreien Force-Push gibt es nicht –
|
||||
die bestaetigende Beobachtung waere derselbe Vorgang wie der Schaden.
|
||||
- Stattdessen **Fast-Forward-Waechter**: Bei jedem Lauf wird der beobachtete
|
||||
Remote-Kopf **ausserhalb des Klons** festgehalten
|
||||
(`~/.opencrm-notary/beobachtungen.jsonl`, per `NOTARY_STATE_FILE`
|
||||
aenderbar). Beim naechsten Lauf muss der neue Kopf ein Nachfahre des alten
|
||||
sein – sonst Alarm. Das erkennt das **Ereignis** statt die Regel
|
||||
abzufragen und wirkt unabhaengig davon, ob serverseitiger Schutz existiert.
|
||||
Ein belegter Fast-Forward gilt als Nachweis und blendet den Rewind-Vorbehalt
|
||||
aus (im Gegensatz zur blossen Praesenz eines MIN_SEQ-Werts).
|
||||
- **(b) Code 3 als Tor VOR dem Anhaengen, nicht als Status danach.** Sein
|
||||
Argument: Der Schreiblauf signiert mit dem neuen Checkpoint zugleich ueber
|
||||
den Bestand darunter – ist die Basis ungeklaert, waere das Anhaengen selbst
|
||||
das Waschmittel. Jetzt: Grundlage nicht feststellbar → **nichts anhaengen,
|
||||
exit 3**. Erster Lauf ueberhaupt → Basislinie setzen, aber ehrlich als
|
||||
solche melden (exit 3, kein gruenes Licht). Anhaengen geklappt, Push
|
||||
gescheitert → **exit 3 mit „erstellt, aber NICHT verankert“** statt 0 oder
|
||||
1. Nur Anhaengen + Push + belegte Verankerung → exit 0.
|
||||
- Verifiziert: Basislinie → exit 3; Folgelauf → exit 0 ohne Vorbehalt;
|
||||
**Rewind aus einem FRISCHEN Auditoren-Klon ohne MIN_SEQ und ohne
|
||||
Zusicherung → Alarm exit 2** (das war bisher stilles Gruen); Push-Ziel
|
||||
kaputt → „erstellt, aber NICHT verankert“ exit 3, Folgelauf haelt den
|
||||
ungepushten Commit fail-closed an (exit 2). Labor und Port geraeumt.
|
||||
|
||||
- [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:
|
||||
|
||||
Reference in New Issue
Block a user