Der hundertäugige Wächter deines Codes. Ein fix-orientierter Security- Analyzer (SAST) mit eingebautem Scope-Gate: findet Schwachstellen in deinem eigenen Code – samt konkreter Behebungs-Anleitung.
panoptes ist ein defensives Werkzeug zum Härten von Code, den du besitzt oder ausdrücklich prüfen darfst. Es liest ausschließlich Dateien, führt keinen Zielcode aus, greift keine Systeme an und erzeugt keine Exploits. Jede Analyse ist durch eine Scope-Datei autorisiert; alles außerhalb wird verweigert.
Autonome Angriffs-Tools erzeugen viel Lärm und laden zu Missbrauch ein. panoptes dreht den Spieß um:
- 🛡️ Scope-Gate als Rückgrat – analysiert nur ausdrücklich freigegebene Pfade.
- 🔬 Taint-Analyse (Datenfluss Eingabe → Senke) statt reinem grep → hohe Präzision, wenige Falsch-Positive.
- 🩹 Fix-orientiert – jedes Finding kommt mit CWE/OWASP-Einordnung und konkreter Behebung.
- 🧩 Modular & abhängigkeitsfrei – neue Regeln in wenigen Zeilen.
pip install git+https://github.com/5aman22345/panoptes.gitOder lokal (keine Laufzeit-Abhängigkeiten):
git clone https://github.com/5aman22345/panoptes.git
cd panoptes && pip install -e ".[dev]"panoptes init-scope --authorized-by "dein-name (eigener Code)" # Autorisierung
# roots/hosts in .panoptes-scope.json auf EIGENE Ziele setzen
panoptes scan . # analysieren
panoptes scan . --format markdown > security-report.md
panoptes scan . --fail-on high # Exit-Code 1 ab HIGH (für CI)Beispiel-Ausgabe:
🟥 [CRITICAL] Command-Injection über unvertraute Eingabe (high)
app.py:8 CWE-78 · A03:2021 Injection
Variable 'name' → Senke: os.system("echo " + name)
↳ Fix: Argumentliste statt Shell-String; Eingaben validieren.
| Regel | Beispiele | Einordnung |
|---|---|---|
| taint | Eingabe → os.system/execute/eval/open |
CWE-78/89/95/22/79 |
| secrets | AWS/Google/GitHub/Slack-Keys, Private Keys, hartcodierte Passwörter (Entropie) | CWE-798 |
| dangerous-sink | eval, exec, pickle, yaml.load, child_process.exec, innerHTML, SQL-Verkettung |
CWE-95/78/502/79/89 |
| insecure-config | DEBUG=True, verify=False, offene CORS, 0.0.0.0, hartcodierter SECRET_KEY |
CWE-489/295/942 |
| weak-crypto | MD5/SHA-1, DES/ECB, unsicherer Zufall für Tokens | CWE-327/330 |
Sprachen: Python, JavaScript/TypeScript (weitere via Endung leicht ergänzbar).
scope.py Scope-Gate: autorisiert Pfade/Hosts, verweigert alles andere
findings.py Finding-/Severity-Modell (CWE, OWASP, Remediation)
languages.py Sprach-Erkennung + Ausschlüsse (node_modules, .git, …)
rules/ secrets · taint · dangerous_sinks · insecure_config · weak_crypto
engine.py läuft rein lesend über autorisierte Dateien
report.py Terminal / Markdown / JSON
cli.py Kommandozeile
Rule ableiten (id, languages, check(ctx) → Findings) und in
rules/__init__.py:ALL_RULES eintragen.
pip install -e ".[dev]"
pytest -q # 18 TestsMIT © J. (5aman22345)