Zurück zu den Updates
New releaseJul 14, 2026

threatcl v0.6.1

Dokumentation Ihrer Bedrohungsmodelle mit HCL

Teilen

threatcl

Bedrohungsmodellierung mit HCL

Was ist mit hcltm passiert?

hcltm wurde in threatcl umbenannt. Willkommen!

Überblick

[!TIP] Möchtest du die neue Dokumentation lesen? Gehe zu threatcl.dev

Es gibt viele verschiedene Möglichkeiten, ein Bedrohungsmodell zu dokumentieren. Von einer einfachen Textdatei über detailliertere Word-Dokumente bis hin zu vollständig instrumentierten Bedrohungsmodellen in einer zentralisierten Lösung. Zwei der wertvollsten Eigenschaften eines Bedrohungsmodells sind die klare Dokumentation der Bedrohungen und die Fähigkeit, wertvolle Veränderungen voranzutreiben.

threatcl zielt darauf ab, einen DevOps-orientierten Ansatz zur Dokumentation eines System-Bedrohungsmodells zu bieten, indem es sich auf die folgenden Ziele konzentriert:

  • Einfaches Textdatei-Format
  • Einfache, CLI-gesteuerte Benutzererfahrung
  • Integration in Versionskontrollsysteme (VCS)

Dieses Repository beherbergt die threatcl CLI-Software. Die threatcl-Spezifikation basiert auf HCL2, der Konfigurationssprache von HashiCorp, die "für Menschen angenehm zu lesen und zu schreiben sein soll, sowie eine JSON-basierte Variante, die für Maschinen einfacher zu generieren und zu parsen ist". Die threatcl-Spezifikation befindet sich unter github.com/threatcl/spec. Die Kombination der threatcl CLI-Software und der threatcl-Spezifikation ermöglicht es Praktikern, ein System-Bedrohungsmodell in HCL zu definieren, zum Beispiel:```hcl threatmodel "Tower of London" { description = "A historic castle" author = "@xntrik"

attributes { new_initiative = "true" internet_facing = "true" initiative_size = "Small" }

information_asset "crown jewels" { description = "including the imperial state crown" information_classification = "Confidential" }

usecase { description = "The Queen can fetch the crown" }

third_party_dependency "community watch" { description = "The community watch helps guard the premise" uptime_dependency = "degraded" }

threat "Crown theft" { description = "Someone who isn't the Queen steals the crown" impacts = ["Confidentiality"]

control "Guards" {
  description = "Trained guards patrol tower"
  risk_reduction = 75
}

}

data_flow_diagram_v2 "dfd name" { // ... see below for more information }

}

Siehe [Data Flow Diagram](#data-flow-diagram) für weitere Informationen zum Erstellen von Datenflussdiagrammen, die automatisch in PNGs konvertiert werden können.

Ein Beispiel, wie auf vordefinierte Steuerungsbibliotheken für die [OWASP Proactive Controls](https://owasp.org/www-project-proactive-controls/) und die [AWS Security Checklist](https://d1.awsstatic.com/whitepapers/Security/AWS_Security_Checklist.pdf) verwiesen wird, finden Sie in [examples/tm3.hcl](https://github.com/threatcl/threatcl/blob/main/examples/tm3.hcl). Wir haben auch die [MITRE ATT&CK Controls](https://attack.mitre.org/mitigations/enterprise/) [hier](https://github.com/threatcl/threatcl/blob/main/examples/MITRE_ATTACK_controls.hcl).

Sie können auch ein externes Bedrohungsmodell in Ihr eigenes einbinden, um auf all seine Informationen zuzugreifen und sie zu nutzen. Ein Beispiel finden Sie in [examples/including-example/corp-app.hcl](https://github.com/threatcl/threatcl/blob/main/examples/including-example/corp-app.hcl).

Eine vollständige Beschreibung der Spezifikation finden Sie [hier](https://github.com/threatcl/threatcl/blob/main/spec.hcl) oder führen Sie Folgendes aus:```bash
threatcl generate boilerplate

threatcl verarbeitet auch JSON-Dateien, aber der einzige Vorbehalt ist, dass Importmodule und Variablen nicht funktionieren. Sie können examples/tm1.json als Beispiel ansehen.

Warum HCL?

HCL ist die primäre Konfigurationssprache, die in den Produkten von HashiCorp verwendet wird, insbesondere Terraform – deren Open-Source-Infrastructure-as-Code-Software. Ich habe eine Zeit lang bei HashiCorp gearbeitet und die Sprache ist mir richtig ans Herz gewachsen. Außerdem: Wenn DevOps- und Software-Ingenieure die Sprache verwenden, dann vereinfacht die Dokumentation von Bedrohungsmodellen die Ziele von threatcl.

Sie können threatcl mit JSON verwenden, verlieren aber einige Funktionen. Weitere Informationen finden Sie im Ordner examples/.

Warum nicht einfach in MD dokumentieren?

Ich mochte die Idee, ein Format zu verwenden, mit dem programmatisch interagiert werden kann.

Anerkennungen und Referenzen

Eine der Funktionen von threatcl ist die automatische Generierung von Datenflussdiagrammen aus HCL-Dateien. Dies nutzt das go-dfd-Paket von Marqeta und Blake Hitchcock. Schauen Sie sich unbedingt ihren Blogbeitrag über Threat models at the speed of DevOps an.

Außerdem möchte ich Jamie Finnigan und Talha Tariq bei HashiCorp danken, dass sie mir erlaubt haben, an diesem Open-Source-Tool weiterzuarbeiten, auch nachdem ich bei HashiCorp aufgehört habe.

Auch danke an die IriusRisk-Leute für die OpenThreatModel-Spezifikation.

threatcl cli

Installation

Laden Sie die neueste Version von den Releases herunter und verschieben Sie die threatcl-Binärdatei in Ihren PATH.

Installation mit Homebrew

Installieren Sie threatcl mit Homebrew — die Formel lebt in homebrew-core:```bash brew install threatcl

## Mit Docker ausführen```bash
docker run --rm -it ghcr.io/threatcl/threatcl:latest

Verifying releases (build provenance)

Every tagged release ships SLSA build provenance — Sigstore-signed, keyless attestations generated by the GitHub Actions release pipeline (GitHub OIDC → Fulcio, no signing keys). You can verify that a binary or the container image was genuinely built from this repo's release workflow using the GitHub CLI (gh attestation verify — no extra tooling or trusted keys to manage).

Verify a downloaded archive (or the SHA256SUMS file):```bash gh attestation verify threatcl_.tar.gz --repo threatcl/threatcl

Überprüfen Sie das Container-Image (der Tag wird automatisch zu seinem Digest aufgelöst):```bash
gh attestation verify oci://ghcr.io/threatcl/threatcl:<version> --repo threatcl/threatcl

Um auf das exakte Bild zu verweisen, das Sie ausführen, ermitteln Sie den Digest selbst und verifizieren (und ziehen) Sie ihn anhand des Digests:```bash digest=$(docker buildx imagetools inspect ghcr.io/threatcl/threatcl: --format '{{ .Manifest.Digest }}') gh attestation verify oci://ghcr.io/threatcl/threatcl@${digest} --repo threatcl/threatcl

Siehe [docs/SLSA.md](https://github.com/threatcl/threatcl/blob/main/docs/SLSA.md) für die vollständige Lieferketten-Position.

## Ausführen mit GitHub Actions

`threatcl` kann direkt in Ihre GitHub-Repos integriert werden mit https://github.com/threatcl/threatcl-action. Dies ist eine der idealen Methoden, um Ihre Bedrohungsmodelle zu verwalten, und hilft, das Ziel der Integration in Ihre Versionskontrollsysteme zu erreichen.

## Erstellen aus dem Quellcode

1. Klonen Sie dieses Repository.
2. Wechseln Sie in das Verzeichnis `threatcl`
3. `make bootstrap`
4. `make build`

Kategorien