Ein Sammler und Ableitungs-Engine. Es kartiert Ihre Umgebung, bewertet effektive Berechtigungen und Vertrauen und schreibt einen vollständigen Angriffsgraphen als einzelne .rage.ndjson-Datei. Die Eingabe für alles andere.
Sie haben nicht 4.000 Findings. Sie haben sechs Pfade zu Ihren Kronjuwelen.

Ein CSPM liefert Ihnen eine flache, deduplizierte, nach Schweregrad sortierte Liste von Fehlkonfigurationen und überlässt es Ihnen zu raten, welche davon relevant sind. Thunderstorm argumentiert über Erreichbarkeit: Es sammelt Ihre Cloud read-only, modelliert sie als Graph von Sicherheitsfähigkeiten und sagt Ihnen, dass ein GitHub-Actions-OIDC-Trust in vier Hops zu Ihrem Produktions-Data-Lake führt.
Keiner der obigen Hops ist für sich genommen ein Finding. Ein öffentlicher Bucket, ein Schlüssel in einer State-Datei, eine annehmbare Rolle, eine zu weit gefasste IAM-Aktion. Der Pfad ist das Finding, und der Pfad ist das, was fast nichts anderes berechnet.
Tiefgehend auf der Plattform, auf die Sie es richten. Führen Sie es gegen ein AWS-Konto, ein Azure-Abonnement oder ein GCP-Projekt aus, und es kartiert diese eine Umgebung in den eigenen Begriffen des Providers: STS Assume-Role und IAM-Privilegien- eskalation in AWS, RBAC- und Managed-Identity-Ketten in Azure, Service-Account- Impersonation in GCP. Eine Umgebung, ein Graph, modelliert so, wie diese Cloud tatsächlich funktioniert.
Viele Tools zählen mehr auf. Die Behauptung hier ist, dass Thunderstorm über das, was es aufzählt, mit echter Tiefe argumentiert: 219 Ressourcentypen, 80 Edge-Typen, 2.400+ Ableitungsregeln und 1.049 kartierte Credential-Leak-Stellen, alle bezogen aus RAGE.
RAGE ist das Format, Thunderstorm erzeugt es, Blaze erkundet es.
Sie sind das, was Thunderstorm aus einem einzigen scan erzeugt.
Ein fehlkonfigurierter S3-Bucket. Thunderstorm verfolgt ihn über sechs Hops zur Produktions-Kundendatenbank und einen zweiten Weg direkt zum Master-Secret der Datenbank.
Internet ──public s3:GetObject──▶ acme-terraform-state (public bucket)
──ExposesCredential────▶ AKIA… (access key leaked in tfstate)
──CredentialsFor───────▶ ec2-app-role
──CanAssume────────────▶ terraform-exec (sts:AssumeRole)
──CanEscalateTo────────▶ OrganizationAdmin (iam:AttachRolePolicy)
──CanReadData──────────▶ acme-prod-customers (PII)
Jeder Hop trägt die Berechtigung, die ihn gewährt, den Nachweis, der ihn belegt, und eine Erzählung in klarer Sprache. Die geleakten Werte kommen mit heraus:

Ein öffentlich lesbares Blob leakt ein Service-Principal-Secret. Ein Contributor mit einer zusätzlichen Berechtigung befördert sich selbst zum Subscription-Owner. Kein App-Exploit; nur Cloud-Fehlkonfiguration und IAM.

Internet ──anonymous blob read──▶ acmedeploy (public Storage account)
──ExposesCredential────▶ automation-sp secret (in a deploy config blob)
──CredentialsFor───────▶ automation-sp (Contributor)
──CanEscalateTo────────▶ Owner (Microsoft.Authorization/roleAssignments/write)
──CanReadData──────────▶ acmedatalake
Service-Account-Impersonation ist für die meisten Tools unsichtbar. Thunderstorm behandelt
iam.serviceAccounts.getAccessToken als das Lateral-Movement-Edge, das es ist.

Internet ──public allUsers───▶ acme-public-exports (GCS)
──ExposesCredential─▶ sa-deploy-key
──CredentialsFor────▶ sa-deploy
──CanImpersonate────▶ sa-data-pipeline
──CanImpersonate────▶ sa-org-admin
──CanReadData───────▶ acme_customers_pii (BigQuery)
view öffnet ihn in Ihrem Browser; nichts wird hochgeladen.collectors/, engine/).Thunderstorm führt keine eigene Taxonomie, Mappings oder Regeln mit sich. Es konsumiert den RAGE-Standard Ende-zu-Ende:
| Belang | Lebt in RAGE |
|---|---|
| Node-/Edge-Taxonomie, Bedingungen | vocab/{node-types,edge-types,conditions}.json |
| Native→generische Mappings + Collection-Rezepte | providers/{aws,gcp,azure}.json |
| Ableitungsregel-Korpus | rules/ |
| Credential-Exposure-Katalog | exposure-db/{aws,gcp,azure}.json + vocabulary.json |
Versionsbindung: RAGEs spec_version ist die einzelne Zahl, die Thunderstorm an ein
RAGE-Release bindet. Der Collector liest sie live aus dem RAGE, gegen das er gebaut wurde
(thunderstorm version gibt RAGE <v> aus) und stempelt sie in jeden Graphen, den er
ausgibt; Blaze Lite liest diesen Stempel und warnt, wenn ein Graph gegen eine Version
gebaut wurde, die es nicht unterstützt.
Wie RAGE aufgelöst wird (erster Treffer gewinnt):
$RAGE_ROOT: ein Live-RAGE-Checkout, falls Sie es setzen (Dev-Override; Änderungen gelten ohne Rebuild).collectors/rage/, eingebettet in die Binary.Aktualisieren Sie den Snapshot mit make RAGE_ROOT=/path/to/rage (oder go generate ./... in
collectors/). RAGE lebt unter github.com/trustedsec/rage.
Thunderstorm scannt read-only mit Ihren vorhandenen Cloud-Credentials; es verwaltet
niemals Secrets und schreibt niemals auf das Ziel. Melden Sie sich mit dem normalen Tooling
des Providers an und richten Sie dann scan auf das Konto / Projekt / Abonnement.
AWS verwendet die Standard-AWS-SDK-Credential-Kette (ein benanntes Profil, Env-Variablen, SSO oder eine Instance-Rolle):
aws configure --profile myprofile # or: aws sso login --profile myprofile
./bin/thunderstorm scan --profile myprofile [--region us-east-1]
GCP verwendet Application Default Credentials (ADC). Melden Sie sich an und übergeben Sie dann das Projekt:
gcloud auth application-default login
./bin/thunderstorm scan --provider gcp --project my-project-id
Ein Service-Account-Schlüssel funktioniert ebenfalls über GOOGLE_APPLICATION_CREDENTIALS=/path/key.json.
Azure verwendet die Azure CLI / DefaultAzureCredential-Kette. Melden Sie sich an und beschränken Sie dann optional auf ein Abonnement:
az login
./bin/thunderstorm scan --provider azure [--subscription <sub-id>]
Ein Service Principal funktioniert ebenfalls über AZURE_CLIENT_ID / AZURE_CLIENT_SECRET / AZURE_TENANT_ID.
Das Scannen vieler Konten auf einmal verwendet --aws-profiles, --gcp-projects,
--azure-subscriptions oder eine --scopes-Datei (provider:scope pro Zeile).
Bauen (erzeugt ./bin/thunderstorm):
make # build with the embedded RAGE snapshot
make RAGE_ROOT=/path/to/RAGE # re-vendor from a live RAGE checkout, then build
Scannen, dann erkunden:
./bin/thunderstorm scan --profile <aws-profile> # → a single .rage.ndjson attack graph
./bin/thunderstorm view --in engagement.zip # open it offline in Blaze Lite
./bin/thunderstorm redact --in engagement.zip --out redacted.zip # de-identify for sharing
Ohne --out landen Engagements in ./output/ (git-ignored). Das ist das ganze Tool:
scan, redact, view, version.
STRUCTURAL und von Pfaden ausgeschlossen.Thunderstorm ist unter der GNU General Public License v3 lizenziert (siehe LICENSE).
Es ist ein Offensive-Security-Tool, das ausschließlich für autorisiertes Sicherheitstesten,
Bildung und Forschung bereitgestellt wird; holen Sie eine ausdrückliche Autorisierung ein, bevor
Sie es gegen eine Umgebung ausführen, die Ihnen nicht gehört. Siehe den Authorized-Use-Hinweis
oben in LICENSE.