
reasongate v0.4.0
Erklärbares Sicherheitsgate für LLM-Apps — blockiert Prompt Injection mit einem nachvollziehbaren Grund für jede Entscheidung.
ReasonGate
Ein selbst hostbares Gate, das den Text inspiziert, der in ein LLM hinein- und aus ihm herausgeht, und eine
erklärbare allow / flag / block-Entscheidung mit einem maschinenlesbaren Audit-Datensatz für
jeden Aufruf zurückgibt.
Was das ist
Der Open-Source-Kern ist regelbasiert. Er tut vier Dinge:
- erkennt bekannte Prompt-Injection- und Jailbreak-Formulierungen,
- de-obfuskiert gängige Verschleierungen (Zero-Width-Zeichen, Homoglyphen, Leetspeak, Buchstabenabstände, Base64), damit diese bekannten Formulierungen auch nach ihrer Verschleierung noch übereinstimmen,
- durchsucht abgerufenen Kontext und Tool-Ausgaben nach denselben Mustern, bevor sie das Modell erreichen (indirekte Injection),
- prüft die Modellausgabe auf geleakte Geheimnisse und ein eingepflanztes Canary-Token.
Diese sind als Pipeline verdrahtet, nicht als flache Blockliste: Die Normalisierung entfernt zuerst die Verschleierung, danach greifen die Muster- und die Indirekte-Injection-Schicht, und eine kalibrierte Noisy-OR-Policy fusioniert mehrere schwache Signale zu einer Entscheidung. Der messbare Effekt ist, dass rohe Regex 21 % der obfuskierten bekannten Angriffe erkennt, während die Normalisierungs- + Fusions-Pipeline dies auf 78 % zurückgewinnt (100 % bei Payloads, die mit Zero-Width-Zeichen versteckt wurden). Sie erkennt weiterhin keine umformulierten, semantisch neuartigen Formulierungen; diese Aufgabe gehört zu einer separaten Embedding- Schicht (unten), nicht zum Regelkern.
Es ist reines Python, hat null Abhängigkeiten und macht keine Netzwerkaufrufe. Jede Entscheidung serialisiert zu einem strukturierten Datensatz mit einer Decision-ID, einem Zeitstempel, der Aktion, dem Score und den Beweisen pro Detektor.
Was das nicht ist
Es ist keine Lösung für Prompt Injection, und kein Eingabefilter ist das. Ein Sprachmodell liest Anweisungen und Daten über denselben Kanal, also kann alles, was in Sprache ausdrückbar ist, so formuliert werden, dass es durchkommt. Signaturabgleich erkennt Angriffe, für die es ein Muster hat; er erkennt keine umformulierten oder semantisch neuartigen.
Konkret blockiert der Regelkern auf deepset/prompt-injections 13,3 % der Angriffe im
zurückgehaltenen Test-Split und 19,8 % über den gesamten Korpus, bei einer Falsch-Positiv-Rate von 0,5 %.
Beide Zahlen lagen nahe null, bevor die Musterfamilien erweitert und die deutsche Abdeckung
hinzugefügt wurde; was weiterhin übersehen wird, ist nach Form und nach Sprache inventarisiert in
docs/coverage-gaps.md, einschließlich der 59 % der Fehlschläge, die überhaupt keinen
Angriffsmarker tragen und die kein Eingabefilter abfangen kann. Er erkennt bekannte Formulierungen und
ihre obfuskierten Varianten und im Wesentlichen nichts anderes. Semantischer Recall kommt von einem embedding-basierten Detektor, der als
separates, separat lizenziertes Add-on ausgeliefert wird, und selbst dieser erreicht nur ~88 % auf
Out-of-Distribution-Daten.
Betreibe ReasonGate als eine Schicht in Defense-in-Depth: ein erster Durchlauf mit niedriger Falsch-Positiv-Rate und ein Audit-Trail, mit dem eigenen Safety-Training des Modells und anderen Kontrollen dahinter. Betreibe es nicht als Grenze.
Installation```bash
pip install reasongate
| **CVE** | **Beschreibung** | **Schweregrad** | **Betroffene Versionen** | **Behoben in** |
|---------|------------------|-----------------|--------------------------|----------------|
| CVE-2025-55182 | RCE in React Server Components (React2Shell) | Kritisch (10.0) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| CVE-2025-66478 | RCE in Next.js App Router | Kritisch (10.0) | 15.x, 16.x (bestimmte Canary-Versionen) | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
| CVE-2025-55184 | DoS in React Server Components | Hoch (7.5) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| CVE-2025-55183 | Quellcode-Offenlegung in React Server Components | Mittel (5.3) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
## Installation
```bash
git clone https://github.com/cybertechajju/react2shell-scanner.git
cd react2shell-scanner
chmod +x react2shell-scanner.sh
Verwendung
# Grundlegender Scan einer einzelnen URL
./react2shell-scanner.sh https://example.com
# Scan mit einer URL-Liste
./react2shell-scanner.sh -f urls.txt
# Scan mit benutzerdefiniertem Timeout und Threads
./react2shell-scanner.sh -f urls.txt -t 15 -T 20
# Scan mit Proxy
./react2shell-scanner.sh https://example.com -p http://127.0.0.1:8080
# Scan mit benutzerdefiniertem User-Agent
./react2shell-scanner.sh https://example.com -A "Mozilla/5.0 (Custom)"
# Ausgabe in JSON-Format
./react2shell-scanner.sh -f urls.txt -o json
# Ausgabe in CSV-Format
./react2shell-scanner.sh -f urls.txt -o csv
# Ausführlicher Modus
./react2shell-scanner.sh https://example.com -v
# Alle Optionen anzeigen
./react2shell-scanner.sh -h
Befehlszeilenoptionen
| Option | Beschreibung | Standard |
|---|---|---|
-f, --file | Datei mit URLs (eine pro Zeile) | - |
-t, --timeout | Anfrage-Timeout in Sekunden | 10 |
-T, --threads | Anzahl gleichzeitiger Threads | 10 |
-p, --proxy | Proxy-URL (z. B. http://127.0.0.1:8080) | - |
-A, --user-agent | Benutzerdefinierter User-Agent-String | Zufälliger UA |
-o, --output | Ausgabeformat (text, json, csv) | text |
-v, --verbose | Ausführliche Ausgabe aktivieren | false |
-h, --help | Hilfemeldung anzeigen | - |
Funktionsweise
Der Scanner führt eine mehrstufige Erkennung durch:
- React-Erkennung: Identifiziert, ob die Zielanwendung React verwendet, indem nach spezifischen Markierungen in der Antwort gesucht wird.
- Versionserkennung: Extrahiert die React- und Next.js-Versionen aus Antwort-Headern, JavaScript-Dateien und HTML-Metadaten.
- Schwachstellenprüfung: Sendet speziell gestaltete Anfragen, um auf bekannte Schwachstellen zu testen:
- CVE-2025-55182: Testet auf RCE in React Server Components durch Ausnutzung unsicherer Deserialisierung.
- CVE-2025-66478: Testet auf RCE im Next.js App Router durch manipulierte Server-Action-Anfragen.
- CVE-2025-55184: Testet auf DoS durch ressourcenintensive Anfragen.
- CVE-2025-55183: Testet auf Quellcode-Offenlegung durch manipulierte Server-Component-Anfragen.
- Ergebnisanalyse: Analysiert Antworten auf Anzeichen erfolgreicher Ausnutzung oder Fehlermeldungen, die auf Schwachstellen hinweisen.
Ausgabebeispiele
Textausgabe (Standard)
[+] Ziel: https://example.com
[+] React erkannt: Ja
[+] React-Version: 19.1.0
[+] Next.js-Version: 15.3.0
[!] Anfällig für CVE-2025-55182 (React2Shell RCE)
[!] Anfällig für CVE-2025-66478 (Next.js App Router RCE)
[-] Nicht anfällig für CVE-2025-55184
[-] Nicht anfällig für CVE-2025-55183
JSON-Ausgabe
{
"target": "https://example.com",
"react_detected": true,
"react_version": "19.1.0",
"nextjs_version": "15.3.0",
"vulnerabilities": [
{
"cve": "CVE-2025-55182",
"name": "React2Shell RCE",
"severity": "critical",
"vulnerable": true
},
{
"cve": "CVE-2025-66478",
"name": "Next.js App Router RCE",
"severity": "critical",
"vulnerable": true
}
]
}
CSV-Ausgabe