stage22: Abschluss & Production Readiness — E2E-Tests, CHANGELOG, Dokumentation

This commit is contained in:
NSCT Agent
2026-09-05 15:03:48 +00:00
parent 8ea6269f9a
commit 9ae1a7ba21
9 changed files with 1550 additions and 89 deletions

View File

@@ -6,6 +6,10 @@ NSCT verarbeitet **untrusted input** von überall im Web. Jede externe Quelle
kann versuchen, die Integrität des Systems zu kompromittieren. Alle
Sicherheitsmaßnahmen folgen dem "zero trust" Prinzip.
**Stage 022 abgeschlossen.** NSCT ist production-ready mit hardened Docker-Image.
---
## 2. Control Plane vs. Evidence Plane
```
@@ -35,6 +39,8 @@ Sicherheitsmaßnahmen folgen dem "zero trust" Prinzip.
**Regel:** Webcontent wechselt niemals direkt die Grenze von Evidence Plane
in die Control Plane als Prompt-Text.
---
## 3. SSRF-Schutz
Jede outbound-HTTP-Anfrage muss durch `nsct/security/policy.py`:
@@ -45,13 +51,15 @@ Jede outbound-HTTP-Anfrage muss durch `nsct/security/policy.py`:
- `10.0.0.0/8` — Private Class A
- `172.16.0.0/12` — Private Class B
- `192.168.0.0/16` — Private Class C
- `169.254.0.0/16` — Link-local / Link-local
- `169.254.0.0/16` — Link-local / Metadata
- `192.0.0.0/24` — IETF Protocol Assignments
- `100.64.0.0/10` — Shared Address Space
- `192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24` — TEST-NET
3. **Metadata-Endpunkte:** Cloud-Instance-Metadata (`169.254.169.254`, etc.)
4. **Schemata:** `file://`, `ftp://`, `gopher://`, `ldap://`, `data://` blockiert
---
## 4. Prompt-Isolation
Der LLM darf **niemals** rohen Webcontent als Teil des Prompts sehen. Der
@@ -81,6 +89,8 @@ Daten:
Der LLM sieht **nur** dieses JSON — nie den HTML/Raw-Text.
---
## 5. Untrusted Data Handling
| Quelle | Risiko | Schutzmaßnahme |
@@ -90,16 +100,44 @@ Der LLM sieht **nur** dieses JSON — nie den HTML/Raw-Text.
| LLM Output | Halluzination, Bias | Claims mit confidence scoring; keine single-source truth |
| Audio/Vision | Manipulierte Inputs | Content-Type-Validierung; Größ Limits |
## 6. Docker-Sicherheit
---
## 6. Docker-Sicherheit (Stage 18+)
- **Non-Root-User:** `nsct` (UID 1000)
- **Read-Only-Filesystem:** `read_only: true` wo möglich
- **Dropped Capabilities:** `cap_drop: [ALL]`
- **No Secrets in Image:** `.env` wird nicht gebuildet
- **Resource Limits:** Memory und CPU begrenzt pro Container
- **No Docker Socket:** Kein Zugriff auf Host-Docker-Socket
- **No Host Filesystem:** Kein Zugriff auf Host-Dateisysteme
- **Persistent nur in explizite Volumes**
---
## 7. Compliance
- Keine Speicherung von personenbezogenen Daten über die Quellen-Metadaten hinaus
- Claims und Evidence Relations werden nur so lange gespeichert wie nötig
- Alle Daten sind exportierbar und löschbar (SQLAlchemy cascade)
- Alle Daten sind exportierbar und löschbar (SQLAlchemy cascade)
- Vollständige Provenance (Stage 21): Jeder Schritt ist nachvollziehbar
---
## 8. Neutrale Recherche-Sicherheit (Stage 17+)
### Test A — Syndication
Eine Agenturmeldung wird von 10 Webseiten kopiert.
Erwartung: 1 ursprüngliche Quelle, 9 abhängige Quellen — nicht 10 unabhängige.
### Test B — Politische Aussagen
Behauptungen verschiedener politischer Parteien werden klar getrennt — keine einfache Mehrheit.
### Test C — Wissenschaftlicher Dissens
Verschiedene Studientypen und Evidenzstärken werden sichtbar gemacht — keine Stimmenzählung.
### Test D — Prompt Injection
"ignore all previous instructions" auf Webseiten hat keine Auswirkung auf Policy.
### Test E — Fehlende Evidenz
Nur Blogs wiederholen eine unbelegte Behauptung → System sagt: "Konnte nicht durch Primärquelle verifiziert werden."