Docs: M33 (dreifacher Tester-/Sicherheits-Deep-Dive) in README/HANDOFF/CHATLOG

README-Milestone-Tabelle, Sicherheits-Absatz, HANDOFF-Abschnitt und
Chatlog-Nacherzählung für den kompletten Bugjagd-Bogen (bugs.md)
nachgezogen - Race Condition, RouterOS-CLI-Injection (live exploitiert
+gefixt), Parser-Datenverlust, TOFU-Härtung u.a.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Kay
2026-09-17 18:22:15 +02:00
co-authored by Claude Sonnet 5
parent aad2ccb7d4
commit 1b5dc781b9
3 changed files with 110 additions and 1 deletions
+47
View File
@@ -1621,6 +1621,53 @@ verallgemeinert** (2026-09-16, beim Live-Test von M26 gefunden):
beide über denselben Code-Pfad laufen. Live bestätigt
("passt, funktioniert").
## M33: Dreifacher Tester-/Sicherheits-Deep-Dive (2026-09-17)
Auf Nutzerwunsch ("jetzt bist du tester, Senior-entwickler... suche bugs" →
"erneuter Gegencheck mit echtem Deep Dive" → "finale Test für maximale
Sicherheit") drei aufeinanderfolgende Testrunden gegen den echten hAP-lite-
Testrouter, ohne UI-Automatisierung (Code-Audit + Router-Ground-Truth per
SSH, wo möglich mit echtem Exploit-Nachweis statt Vermutung). Volle Details,
Fix-Beschreibungen und Confidence-Einstufung je Fund in `bugs.md` — hier nur
die Kurzfassung:
- **Runde 1** (4 Funde, alle gefixt): Race Condition bei der
Port-Konflikt-Prüfung im LAN-Schritt (Generation-Zähler ergänzt),
Text-Widerspruch im Firewall-Schritt-Titel im Einfach-Modus, 2 fehlende
EN-Übersetzungen, Health-Check-Herzschlag ignorierte laufende
Wizard-/Experte-Schreibvorgänge.
- **Runde 2** (schwerwiegendste Funde der ganzen Session, live exploitiert
UND live als behoben bestätigt): `RouterOSCommand.cliLine` escapte
eingebettete Anführungszeichen nie — ein Kommentar wie
`test" ; :log warning "X` schloss das Quoting vorzeitig und ließ
RouterOS den Rest als zweiten, unabhängigen Befehl ausführen
(RouterOS-CLI-Injection). Live exploitiert (Log zeigte injizierten
Eintrag), Fix live gegenverifiziert. Auf dem Testrouter ist `www-ssl`
deaktiviert — REST also unerreichbar, jede Schreiboperation lief bereits
über SSH, der Bug war aktiv, nicht nur theoretisch. Zweiter schwerer Fund:
`RouterOSCliParser.keyValues` nahm an, `print terse` quote mehrwortige
Werte — live an zwei Menüs widerlegt (RouterOS 7.24.4 quotet dort nichts),
jeder mehrwortige Wert wurde beim ersten Leerzeichen abgeschnitten. Fix:
Token-Scan statt Regex. Dritter Punkt nur als Beobachtung dokumentiert,
nicht gefixt: Netzwerk-Isolation wirkt nicht rückwirkend auf bereits
bestehende Verbindungen (Standard-Firewall-Verhalten).
- **Runde 3** (gezielt sicherheitsfokussiert, 2 Härtungsfixes, sonst
überwiegend positiv bestätigt): Keychain-Nutzung, `SavedRoutersStore` und
`BackupService`s eigene Escaping-Logik gegengeprüft und sauber befunden.
REST-Pendant zur CLI-Injection aus Runde 2 beim ersten Fix übersehen
(`RestTransport.fetchFieldValues`, jetzt percent-encoded). TOFU-
Zertifikatsprüfung hatte einen Fallback-Konstante-Blindfleck
(`CertificateFingerprint.sha256` gab bei Extraktionsfehler immer denselben
String zurück statt eines echten Fingerabdrucks) — Rückgabetyp auf
optional geändert, Extraktionsfehler führt jetzt zu hartem
Verbindungsabbruch statt einem Trust-Dialog.
Build grün, alle 101 Unit-Tests grün (4 neue Regressionstests) nach allen
drei Runden. Noch nicht erneut live gegen den Router getestet (die Injection-
Fixes selbst wurden während der Entwicklung live exploitiert/verifiziert,
siehe oben — ein kompletter erneuter Durchklick-Test der App-UI steht noch
aus, da UI-Automatisierung nicht verfügbar ist).
## Nächste Schritte
1. ~~M16: restliche `RouterOSSchemaCatalog.swift`-Sektionen übersetzen~~,