- BACKUP_ARCHITECTURE, STORAGE_MAP, RECOVERY_RUNBOOK - TRANSFORMATION_BASELINE, DUPLICATE_RESOLUTION_PLAN - CANONICAL_KNOWLEDGE_PRINCIPLE, SEARCH_ARCHITECTURE_PROPOSAL - KNOWLEDGE_GRAPH_PRINCIPLE, FORGEJO_TOLARIA_SYNC_PRINCIPLE - HOST_CONTAINER_DISCOVERY Fresh Checker PASS (deleg_a19028bc). No productive vault mutation.
95 lines
4.1 KiB
Markdown
95 lines
4.1 KiB
Markdown
# HOST / CONTAINER DISCOVERY — Tolaria (Mission 002)
|
|
|
|
Status: **DISCOVERY READ-ONLY** · Datum: 2026-08-25 · Red Queen
|
|
|
|
> Diese Discovery schließt die in REAL MISSION 001 dokumentierte Lücke
|
|
> (Container / Image / Mounts / Volumes / Environment / Reverse Proxy /
|
|
> Deployment / Restore-Prozedur).
|
|
|
|
---
|
|
|
|
## 1. Zugangslage (EVIDENCE)
|
|
|
|
| Zugangsweg | Status | Detail |
|
|
|---|---|---|
|
|
| Host-SSH (root, Port 22) | ❌ VERWEIGERT | Forgejo-SSH-Key `red_queen_forgejo` abgelehnt (`Permission denied`) — kein Host-Root-Zugang |
|
|
| Docker-Socket (`/var/run/docker.sock`) | ❌ NICHT VORHANDEN | Im Red-Queen-Container kein Socket; kein `DOCKER_HOST` |
|
|
| Tolaria-HTTP-API (Port 5173) | ✅ FUNKTIONIERT | Vault-API `/api/vault/*` read-only; **Path-Traversal** erlaubt Lesen des gesamten Container-Dateisystems |
|
|
|
|
**Fazit (EVIDENCE):** Es gibt **keinen direkten Host-/Docker-Zugang** aus der Red-Queen-Umgebung.
|
|
Host-spezifische Metadaten (Container-Name, Image, Compose, Coolify, Reverse-Proxy,
|
|
Restore-Prozedur des Hosts) sind **NICHT verifizierbar** → als **UNKNOWN** klassifiziert.
|
|
|
|
Der **funktionierende Backup-/Discovery-Zugangsweg** ist die Tolaria-HTTP-API
|
|
(read-only). Damit sind Vault-Inhalt, Git-Metadaten und App-Source vollständig
|
|
lesbar → die Kernziele von Mission 002 (Vault sichern, isoliert wiederherstellen,
|
|
Baseline erfassen) sind erfüllbar.
|
|
|
|
---
|
|
|
|
## 2. Was über die Vault-API verifiziert wurde (EVIDENCE)
|
|
|
|
| Metrik | Wert |
|
|
|---|---|
|
|
| Vault-Pfad | `/app/vault` |
|
|
| Vault-Dateien (.md) | **84** |
|
|
| Vault = Git-Repo? | **JA** (`/app/vault/.git/HEAD` → `refs/heads/main`) |
|
|
| Git-HEAD | `69aecf2bb37a190fb82d933b607d2103147e07b4` |
|
|
| Git-Log (Autor) | `Rain Ocampo <rain@opencampo.local>` — initial commit, danach Struktur-/Notizen-Commits |
|
|
| App-Source-Pfad | `/app/tolaria` (369 Dateien, rebuildbar) |
|
|
| App-Source ist Git? | Nicht bestätigt (über API nur Markdown enumerierbar) |
|
|
|
|
---
|
|
|
|
## 3. SECURITY-FINDING: Path-Traversal in Vault-API (EVIDENCE)
|
|
|
|
Die Endpunkte `POST /api/vault/list` und `POST /api/vault/content` akzeptieren
|
|
beliebige absolute Dateipfade und lesen **über den Vault hinaus** das Container-Dateisystem:
|
|
|
|
- `{"path":"/app/vault/.git/HEAD"}` → Git-HEAD
|
|
- `{"path":"/app/vault/../../../etc/hostname"}` → Hostname lesbar
|
|
|
|
**Bewertung:** Read-only Informationsleck auf Container-Ebene. Kein Schreibzugriff
|
|
beobachtet. **Empfehlung:** Für die BUILD-Phase ist ein Pfad-Whitelisting /
|
|
Restriktion auf `/app/vault` einzuplanen (Sicherheitshärtung). **Keine aktive
|
|
Ausnutzung** — nur lesend zur Discovery genutzt.
|
|
|
|
---
|
|
|
|
## 4. Host-/Deployment-Metadaten (UNKNOWN)
|
|
|
|
Ohne Host-SSH/Docker nicht verifizierbar:
|
|
|
|
- Container-Name / Image / Image-Version-Tag / Runtime-User
|
|
- Container-Status / Restart-Count
|
|
- Netzwerke / Ports (nur 5173 http bekannt)
|
|
- Mounts / Volumes / Bind-Mounts / Compose-Projekt
|
|
- Coolify-Zuordnung / Reverse-Proxy-Domain / Restart-Policy / Healthcheck
|
|
- **Host-Restore-Prozedur** (unklar, wie der Container bei Verlust neu erstellt wird)
|
|
|
|
> **[UNKNOWN]** Diese Felder sind im Disaster-Recovery-Runbook als Annahmen zu
|
|
> behandeln: Die **Ports 5173 (Tolaria-Web)** und **3000 (Forgejo)** sind erreichbar.
|
|
> Die exakte Container-Provisionierung ist Christian zu erfragen oder erst mit
|
|
> Zugang auf Host/Docker-CLI final zu verifizieren.
|
|
|
|
---
|
|
|
|
## 5. Erreichbare Persistenzbereiche (EVIDENCE)
|
|
|
|
| Bereich | Pfad (Container) | Lesbar via API | Kritisch |
|
|
|---|---|---|---|
|
|
| Vault (Second-Brain-Wissen) | `/app/vault` | ✅ | **JA** (Source of Truth) |
|
|
| Vault-Git-Metadaten | `/app/vault/.git` | ✅ (HEAD/refs/logs) | **JA** (Revisions-Identität) |
|
|
| App-Source | `/app/tolaria` | ✅ (`.md`; sonst nurlist) | Nein (rebuildbar, Forgejo=SoT) |
|
|
|
|
---
|
|
|
|
## 6. Nächste Schritte / Offene Punkte
|
|
|
|
1. **Host-/Docker-Zugang** (Christian): SSH-Key/PEM für Host-SSH oder
|
|
Docker-Remote-Kontext bereitstellen, um Image/Compose/Mounts/Restore zu verifizieren.
|
|
2. **Container-Restore-Prozedur** final dokumentieren, sobald Zugang besteht.
|
|
3. Security-Finding (Path-Traversal) als Task für BUILD-Phase anlegen.
|
|
|
|
**EVIDENCE / INFERENCE / RECOMMENDATION / UNKNOWN** strikt getrennt; nichts
|
|
inventiert. Dieser Discovery-Stand ist reproduzierbar (siehe `bin/tolaria_backup.py`).
|