
Inhaltsblinder Reverse-Proxy für exponierungsgeschützte Sicherheitsscans
Ein lokaler Reverse-Proxy für inhaltsblinde Sicherheitsscans.
Go · Lokales HTTPS · HTTP & WebSocket · Tor / SOCKS5
Die Begründung / Wie es funktioniert / Schnellstart / Zertifikate / Tor / CAPTCHA / Nachweise / Entwicklung
Sicherheitstests sind eine Verhaltensdisziplin. Was eine Anwendung tut -- wie sie Eingaben verarbeitet, welche Kontrollen sie durchsetzt, was sie zurückspiegelt, wie sie fehlschlägt -- ist das, was zählt. Identität sollte für diese Analyse irrelevant sein.
KI-gestützte Sicherheitstools funktionieren nicht so. Sie sehen das Ziel -- seine Domain, seine Marke, seine Organisation -- und bilden sich Meinungen. Sie mildern Befunde für bekannte Dienste ab. Sie verweigern die Prüfung aufgrund der Frage, wer das Ziel ist. Sie lehnen es ab, Pfade zu testen, die sie mit einem bestimmten Anbieter assoziieren. Die KI trifft Entscheidungen, die dem Operator zustehen, und sie trifft sie auf Basis von Kontext statt Verhalten.
Das ist die falsche Achse. Der Operator autorisiert den Umfang. Das Tool bewertet Verhalten. Das sind unterschiedliche Verantwortlichkeiten und sie sollten nicht zu einer verschmelzen. Doch heute ist bei jedem KI-gestützten Tool die vollständige Identität des Ziels in jede Entscheidung eingebaut, die es trifft -- was getestet wird, wie stark gepusht wird, ob berichtet wird.
Blinder ist ein Ausgangspunkt: ein praktisches Werkzeug, aber auch eine Position, dass Testen vom Kontext getrennt werden sollte. Dies ist ein früher Versuch, die Idee zu verbreiten. Wenn der Ansatz Anklang findet, würden wir uns über bessere Implementierungen, Beiträge oder einfach das Gespräch darüber freuen, wo die Grenze liegen sollte.
Identität zu entfernen bedeutet nicht, Inhalt zu entfernen. Genau hier scheitern die meisten naiven Ansätze. Schwachstellen sind als Veränderungen im Antwortinhalt beobachtbar -- Fehlermeldungen, reflektierte Eingaben, Daten, die die Sitzung nicht erreichen sollte, berechnete Ergebnisse, die serverseitige Auswertung offenlegen. Wenn ein Proxy diesen Inhalt entfernen würde, würde er die Beweise verbergen, nach denen der Tester sucht.
Die Anforderung ist chirurgisch: Identität entfernen, während Verhaltenssignale erhalten bleiben. Eine Seite, die niemandem gehört, sich aber genau wie das Original verhält -- auch wenn sie sich schlecht verhält.
Blinder ist ein lokaler HTTPS-Reverse-Proxy, der zwischen dem KI-Scanner (oder Browser) und dem Ziel sitzt. Er schreibt Identität um -- Domains, Marken, Organisationsnamen, E-Mails, IP-Adressen -- während er das funktionale Verhalten der Anwendung bewahrt: ihre Fehler, ihre Reflexionen, ihre Sicherheitskontrollen, ihre Statuscodes, ihre Inhaltsstruktur.
Für die nachgelagerte KI ist das Ziel eine anonyme, lokal gehostete Anwendung unter https://127.0.0.1:8099. Keine Marke zu erkennen. Keine Domain, über die man sich eine Meinung bilden könnte. Die KI testet, was die Anwendung tut, nicht wer sie ist.
Dies ist inhaltsblindes Scannen: Der Operator kontrolliert, wer das Ziel ist; die KI konzentriert sich darauf, was es tut.
Ersetzungsinhalte sind Teil der Korrektheit: neutraler Fülltext für die Anzeige, reversible Werte für Anwendungsdaten und erhaltene Diagnosen und Kontrollverhalten. Generierte Entfernungshinweise gehören nicht in Seiten.
| Inhaltsbereinigung | Anzeigetext durch neutralen Prosa-Fülltext ersetzt; interaktive Elemente (Schaltflächen, Beschriftungen, Formularsteuerelemente) und diagnostische Inhalte (Fehlermeldungen, Stack-Traces, reflektiertes Markup) bleiben erhalten. Identitäts-Token, Domain-Referenzen und Cookie-Werte werden über HTTP-Bodies, Header und WebSocket-Text hinweg umgeschrieben. --preserve-content behält den ursprünglichen Anzeigetext für reine Identitätsbereinigung bei. |
| Ressourcenintegrität | Ursprüngliche SRI pro Referenz verifiziert und für umgeschriebene Ressourcen neu berechnet, mit entsprechend übersetzten CSP-Hashes. Versionierte Referenzen binden die ausgelieferten Bytes; die Integrität externer Ressourcen bleibt erhalten. |
| Antwort-Cache | Getrennte Upstream-/Downstream-Cache-Validatoren. 304-Revalidierung führt Sicherheitsrichtlinien-Header zusammen. Vary-bewusste Eviction. |
| Sitzungsverwaltung | Reversible Cookie-Namen mit Bereinigung pro Wert. Multi-Origin-Routing über --extra-origin mit deterministischen Alias-Hostnamen, Host-Header-Routing und CORS-Origin-Übersetzung. |
| CAPTCHA-Relay | Operator-seitige Challenge-Warteschlange und getrennte Provider-Origins. Tor-geroutete Ressourcen halten Provider-Cookies, CSP und CORS getrennt vom Ziel und Operator. |
| Privates Routing | Upstream-HTTP und WebSocket über Tor SOCKS5 mit Remote-Hostnamen-Auflösung. Tor-Fehler sind harte Fehler, niemals stille Fallbacks. |
| Lokales HTTPS | Lokale CA mit 90-tägiger Lebensdauer und automatischer Erneuerung; Sitzungs-Leaf-Zertifikate werden im laufenden Betrieb signiert. Der CA einmal vertrauen -- das Hinzufügen von Origins oder das Ändern von Aliasen erfordert nie ein erneutes Vertrauen. Ephemerer Modus verfügbar. |
| Nachweise | Pre-Scrub-HAR mit journalbasierter Persistenz, Request-Manifest mit Scrub-/Leak-Zählungen pro Anfrage, Domain-Zuordnungen und Scrub-Bericht. Gepaarte Antwortvergleiche prüfen die Byte-Größentreue und ob Inhalts-/Statusänderungen die Maskierung überstehen. Signal-Erhaltungsprüfungen zeichnen verifiziertes Verhalten und verbleibende Defekte auf. |
Siehe unterstütztes Verhalten und Liefer-Gates für den Implementierungsstatus und bekannte Einschränkungen.
Mit Go 1.26+ bauen. Die Binärdatei hat keine externe Laufzeitabhängigkeit.
git clone https://github.com/Splinters-io/blinder.git
cd blinder
make build
./blinder --preflight
Folgen Sie dem betriebssystemspezifischen Zertifikatshinweis und starten Sie dann eine Sitzung:
capture_dir=$(mktemp -d)
./blinder --target https://your-authorized-target.example \
--identity YourOrganisation \
--har "$capture_dir/session.har" \
--output "$capture_dir/output"
Richten Sie Ihren Browser oder Scanner auf https://127.0.0.1:8099. Fügen Sie mehrere Identitäts-Token mit wiederholten --identity-Flags hinzu. Stoppen Sie mit Ctrl-C, um die Sitzungsnachweise zu speichern.
Verwenden Sie --config (-c), um Standardwerte aus einer YAML-Datei zu laden. CLI-Flags überschreiben die Datei.
# blinder.yaml
listen: "127.0.0.1:9443"
target: "https://example.com"
alias: "target-001.local"
identity:
- "ExampleCorp"
- "example.com"
output: "/tmp/blinder-output"
captcha_config: "captcha.yaml"
no_verify_tls: true
tor:
enabled: false
addr: "127.0.0.1:9050"
har:
path: "/tmp/session.har"
max_body: 10485760
./blinder -c blinder.yaml
# override the listen port from the file:
./blinder -c blinder.yaml --listen 127.0.0.1:7777