sec-threat-model
Erstellt oder aktualisiert das Bedrohungsmodell eines eigenen Repos (Assets, Vertrauensgrenzen, Einstiegspunkte, Datenflüsse, Angreiferziele, priorisierte Untersuchungsfragen) als threatmodel.md aus d
SKILL.mdskills/dev/sec-threat-model/SKILL.md
GitHub<img src="banner.png" width="100%" alt="sec-threat-model banner">
Ausgabe:
sec-threat-model
Phase 1 der ellmos-Security-Familie (sec-threat-model, sec-scan, sec-diff-scan, sec-validate, sec-triage, sec-report). Gemeinsamer Vertrag: sec-scan/references/contract.md (Abschnitt 1 Scan-Verzeichnis, 6 Regeln). Hier nicht wiederholt.
Regeln
- Nur eigener oder ausdrücklich autorisierter Code (Vertrag 6.1). Kein Netzzugriff auf fremde Systeme, keine Port-Scans.
- Das Modell entsteht aus gelesenem Quelltext, nicht aus README-Behauptungen. Was nur dort steht oder nicht belegbar ist, kommt als
offenins Modell, nie als Tatsache. - Schreiben nur in das Scan-Verzeichnis (
<tmp>/ellmos-security/<repo>/sec-scan-<scanId>/), nicht in den Quelltext. Vor dem Schreiben Lock prüfen wie insec-scan> Preflight.
Vorgehen
- Scope klären: Repo, Ref (Commit-SHA oder
working-tree), ausgeschlossene Pfade. Vorhandenesthreatmodel.mdlesen; dann Update-Modus: nur Änderungen nachziehen, Stand und Ref vermerken. - Struktur lesen: Manifeste, Build-/Deploy-Dateien, Konfiguration, Verzeichnisbaum. Sprachen und Frameworks aus dem Code ableiten.
- Einstiegspunkte finden: HTTP-Routen, CLI-Argumente, Queue-/Webhook-Consumer, Datei- und Format-Parser, IPC/Sockets, geplante Jobs, Umgebungsvariablen, Plugin-/Skript-Ladepunkte. Je Eintrag Datei:Zeile und Aufruferkreis (anonym, authentifiziert, intern).
- Assets benennen: Geheimnisse und Tokens, personenbezogene Daten, Nutzerdateien, Datenbanken, Rechenzeit, Ausführungsrechte, Reputation/Lieferkette. Ort im Code, nie den Wert.
- Vertrauensgrenzen ziehen: wo Daten von weniger vertrauenswürdig nach vertrauenswürdig wechseln (Netz -> Prozess, Nutzer -> Admin, Mandant -> Mandant, Prozess -> Betriebssystem/Shell/DB, Drittpaket -> eigener Code). Wo die Durchsetzung (Authn/Authz, Validierung, Sandbox) im Code sitzt, oder dass sie fehlt.
- Datenflüsse skizzieren: Source -> Transformation -> Sink für die kritischsten Assets und Einstiegspunkte (Text oder Mermaid, kurz). Sinks: Shell, SQL, Dateisystem, Deserialisierung, Template, HTTP-Client, Logs.
- Angreiferziele ableiten: pro Grenze, was ein Angreifer erreichen will (Codeausführung, Datenabfluss, Rechteausweitung, Manipulation, Ausfall). STRIDE nur als Denkhilfe, nicht als Pflichtraster.
- Untersuchungsfragen priorisieren: konkrete, prüfbare Fragen ("Erreicht
user_idaus Route X ungeprüft die Query indb.py?"), sortiert nach Auswirkung mal Erreichbarkeit. Sie werden insec-scanzu Untersuchungspaketen.
Ausgabe: threatmodel.md
Abschnitte in dieser Reihenfolge: Stand (Repo, Ref, Datum, gelesene Pfade) · Assets · Vertrauensgrenzen · Einstiegspunkte (Tabelle: Pfad, Typ, Aufrufer, Auth) · Datenflüsse · Angreiferziele · Untersuchungsfragen (nummeriert, priorisiert) · Offen (Annahmen, nicht gelesene Bereiche, Widersprüche zwischen Doku und Code). Kein Geheimniswert, keine Exploit-Anleitung.
Abgrenzung
Findet keine Schwachstellen und vergibt keine Severity. Ein Modell mit vielen offen-Einträgen ist ehrlicher als ein glattes.
Changelog
0.1.0 (2026-10-31)
- Erstfassung als Phase 1 der Security-Familie.