Torna agli aggiornamenti
New releaseJul 14, 2026

threatcl v0.6.1

Documentare i tuoi modelli di minaccia con HCL

Condividi

threatcl

Modellazione delle minacce con HCL

Cosa è successo a hcltm?

hcltm è stato rinominato in threatcl. Benvenuti!

Panoramica

[!TIP] Vuoi leggere la nuova documentazione? Vai su threatcl.dev

Ci sono molti modi diversi in cui un modello di minaccia può essere documentato. Da un semplice file di testo, a documenti Word più dettagliati, fino a modelli di minaccia completamente strumentati in una soluzione centralizzata. Due degli attributi più preziosi di un modello di minaccia sono la capacità di documentare chiaramente le minacce e di poter guidare cambiamenti significativi.

threatcl mira a fornire un approccio DevOps-first alla documentazione di un modello di minaccia di sistema concentrandosi sui seguenti obiettivi:

  • Formato semplice basato su file di testo
  • Esperienza utente semplice basata su CLI
  • Integrazione nei sistemi di controllo versione (VCS)

Questo repository è la sede del software CLI threatcl. La specifica di threatcl è basata su HCL2, il linguaggio di configurazione di HashiCorp, che mira ad essere "piacevole da leggere e scrivere per gli umani, e una variante JSON più facile da generare e analizzare per le macchine". La specifica di threatcl si trova su github.com/threatcl/spec. Combinando il software CLI threatcl e la specifica threatcl, i professionisti possono definire un modello di minaccia di sistema in HCL, ad esempio:```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 }

}

Vedi [Diagramma del Flusso di Dati](#data-flow-diagram) per maggiori informazioni su come costruire diagrammi del flusso di dati che possono essere convertiti automaticamente in PNG.

Per vedere un esempio di come fare riferimento a librerie di controlli predefinite per [OWASP Proactive Controls](https://owasp.org/www-project-proactive-controls/) e [AWS Security Checklist](https://d1.awsstatic.com/whitepapers/Security/AWS_Security_Checklist.pdf) consulta [examples/tm3.hcl](https://github.com/threatcl/threatcl/blob/main/examples/tm3.hcl). Abbiamo anche i [MITRE ATT&CK Controls](https://attack.mitre.org/mitigations/enterprise/) [qui](https://github.com/threatcl/threatcl/blob/main/examples/MITRE_ATTACK_controls.hcl).

Puoi anche includere un threatmodel esterno nel tuo, per fare riferimento e utilizzare tutte le sue informazioni. Puoi vedere [examples/including-example/corp-app.hcl](https://github.com/threatcl/threatcl/blob/main/examples/including-example/corp-app.hcl) come esempio.

Per vedere una descrizione completa delle specifiche, vedi [qui](https://github.com/threatcl/threatcl/blob/main/spec.hcl) o esegui:```bash
threatcl generate boilerplate

threatcl elaborerà anche file JSON, ma l'unica avvertenza è che i moduli di importazione e le variabili non funzioneranno. Puoi vedere examples/tm1.json come esempio.

Perché HCL?

HCL è il linguaggio di configurazione principale utilizzato nei prodotti di HashiCorp, in particolare Terraform - il loro software Infrastructure-as-Code open-source. Ho lavorato per un po' in HashiCorp e il linguaggio mi è davvero piaciuto, inoltre, se DevOps e ingegneri del software usano il linguaggio, semplificare il modo in cui documentano i modelli di minaccia è in linea con gli obiettivi di threatcl.

Puoi usare threatcl con JSON, ma perdi alcune funzionalità. Per maggiori informazioni, consulta la cartella examples/.

Perché non documentarli semplicemente in MD?

Mi piaceva l'idea di usare un formato con cui si potesse interagire a livello programmatico.

Ringraziamenti e Riferimenti

Una delle funzionalità di threatcl è la generazione automatica di diagrammi di flusso dei dati dai file HCL. Questo sfrutta il pacchetto go-dfd di Marqeta e Blake Hitchcock. Dai un'occhiata al loro post sul blog su Threat models at the speed of DevOps.

Inoltre, vorrei ringraziare Jamie Finnigan e Talha Tariq di HashiCorp per avermi permesso di continuare a lavorare su questo strumento open-source anche dopo aver concluso il mio rapporto con HashiCorp.

Grazie anche ai ragazzi di IriusRisk per la specifica OpenThreatModel.

threatcl cli

Installazione

Scarica l'ultima versione da releases e sposta il binario threatcl nel tuo PATH.

Installazione con Homebrew

Installa threatcl con Homebrew — la formula si trova in homebrew-core:```bash brew install threatcl

## Eseguire con Docker```bash
docker run --rm -it ghcr.io/threatcl/threatcl:latest

Verifica dei rilasci (provenienza della build)

Ogni release con tag include SLSA la provenienza della build — attestazioni senza chiavi firmate con Sigstore, generate dalla pipeline di release di GitHub Actions (GitHub OIDC → Fulcio, nessuna chiave di firma). Puoi verificare che un binario o l'immagine del contenitore sia stata realmente costruita dal workflow di release di questo repository utilizzando il GitHub CLI (gh attestation verify — nessun ulteriore strumento o chiavi fidate da gestire).

Verifica un archivio scaricato (o il file SHA256SUMS):```bash gh attestation verify threatcl_.tar.gz --repo threatcl/threatcl

Verifica l'immagine del container (il tag viene risolto automaticamente nel suo digest):```bash
gh attestation verify oci://ghcr.io/threatcl/threatcl:<version> --repo threatcl/threatcl

Per fissare l'immagine esatta che esegui, risolvi il digest da solo e verifica (e tira) tramite digest:```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

Vedi [docs/SLSA.md](https://github.com/threatcl/threatcl/blob/main/docs/SLSA.md) per la postura completa della catena di fornitura.

## Esecuzione con GitHub Actions

`threatcl` può essere integrato direttamente nei tuoi repository GitHub con https://github.com/threatcl/threatcl-action. Questo è uno dei metodi ideali per gestire i tuoi modelli di minaccia e aiuta a raggiungere l'obiettivo di integrazione nei tuoi sistemi di controllo versione.

## Compilazione dal sorgente

1. Clona questo repository.
2. Spostati nella directory `threatcl`
3. `make bootstrap`
4. `make build`

Per ulteriore aiuto su come contribuire a `threatcl` consulta il [CHANGELOG.md](https://github.com/threatcl/threatcl/blob/main/CHANGELOG.md).

## Utilizzo

Categorie