Version 2.5 Β· CC BY 4.0 Β· Β· tlctc.net Β· Core Paper (citable) Β· White Paper
A cause-oriented, axiomatic cyber threat taxonomy. We are aware of no prior framework that classifies threats by the generic vulnerability exploited rather than by outcome or actor.
TLCTC provides the missing semantic foundation for cybersecurity: a stable, non-overlapping classification of cyber threats based on why compromise happens β the generic vulnerability exploited β rather than what happens afterwards (outcomes like "data breach," "ransomware," or "denial of service").
A cyber threat is defined by the generic vulnerability it exploits, not by who performs it and not by what consequence follows.
TLCTC v2.5 is the current citable baseline: the v2.3 consolidation freeze of the finalized v2.1 framework, plus the v2.4 interaction-model clarification and the v2.5 disambiguation rules R-CHANNEL and R-SUBSTRATE (see tlctc-traceability.md). The documents form a deliberate hierarchy:
| Document | Role |
|---|---|
| Core Paper (PDF) | The canonical, citable definition of the framework: derivation, 10 clusters, 10 axioms, 18 classification rules, attack-path notation, glossary, references. Cite this. |
| Application Paper (PDF) | Companion for putting the taxonomy to work: classification procedure, worked examples, NIST CSF mapping, controls, KRI/KCI/KPI. Takes the core as given. |
| White Paper (web) | The extended practitioner handbook: full notation grammar (Β§11), boundary catalogs, decision procedures, anti-patterns, and worked detail beyond the core. Conforms to the core; filename kept for link stability. |
| Operational Enumeration (JSON) | The evolving TLCTC-XX.YY sub-cluster catalogue. The strategic layer (10 clusters) is frozen; the operational layer grows by contribution. |
Machine-readable twin of the core: json-schemas/layer-1/tlctc-framework.v2.5.json. The v2.3 and v2.4 dictionaries are retained unchanged as frozen records for classifications made under those versions.
Cybersecurity suffers from a persistent language problem. "Threat" is used interchangeably for actors, vulnerabilities, control failures, incidents, and outcomes. Even authoritative sources maintain conflicting definitions β NIST alone carries over 20 different definitions of "cyber threat" across its publications. This semantic blur makes it impossible to compare incidents, aggregate intelligence, design targeted controls, or communicate risk consistently between leadership, risk functions, and technical teams.
TLCTC solves this by anchoring analysis in causality and enforcing strict separation through formal axioms.
TLCTC is structurally anchored in the Bow-Tie risk model, which enforces the separation between causes and effects:
CAUSE SIDE RISK EVENT CONSEQUENCE SIDE
ββββββββββββββββββββ βββββββββββββββββββββββ ββββββββββββββββββββββββ
β Threat Clusters β β Loss of Control / β β Data Risk Events β
β (#1 β #10) ββββββΆβ System Compromise ββββββΆβ (C, I, A) β
β Generic Vulns β β [DETECT] β β Business Impact β
β β β β β β
β IDENTIFY/PROTECT β βββββββββββββββββββββββ β RESPOND/RECOVER β
ββββββββββββββββββββ ββββββββββββββββββββββββ
Threat clusters live exclusively on the cause side. Outcomes such as Loss of Confidentiality, Loss of Integrity, or Loss of Availability/Accessibility are recorded separately as Data Risk Events (DREs) β never as threat categories.
TLCTC strictly separates two layers that must align without collapsing into each other:
| Layer | Focus | Stability | Audience |
|---|---|---|---|
| Strategic Management | 10 clusters, generic vulnerabilities, risk governance, control mapping | Stable | CISO, Risk, Board |
| Operational Security | Specific CVEs, CWEs, MITRE ATT&CK TTPs, detection rules | Dynamic | SOC, Engineering, DevSec |
This separation ensures that strategic risk discussions remain comparable across technologies, environments, and organizations β while operational teams retain full granularity.
Each cluster is defined by exactly one generic vulnerability (Axiom VI). Each attack step maps to exactly one cluster. No overlaps, no gaps.
| # | Cluster | Generic Vulnerability | Topology |
|---|---|---|---|
| #1 | Abuse of Functions | The inherent trust, scope, and complexity designed into software functionality and configuration | Internal |
| #2 | Exploiting Server | Server-side implementation flaws enable unintended behavior | Internal |
| #3 | Exploiting Client | Client-side implementation flaws enable unintended behavior | Internal |
| #4 | Identity Theft | Insufficient binding, at the point of authentication, between a presented credential and the authentic holder of the identity it claims | Internal |
| #5 | Man in the Middle | The lack of sufficient control over the communication path | Internal |
| #6 | Flooding Attack | Finite capacity limitations inherent in any system component | Internal |
| #7 | Malware | The software environment's designed capability to execute potentially untrusted foreign code | Internal |
| #8 | Physical Attack | Physical accessibility of infrastructure and the exploitability of physical-layer properties | Bridge |
| #9 | Social Engineering | Humans can be influenced into unsafe actions or decisions | Bridge |
| #10 | Supply Chain Attack | Trust in third-party components and update channels can be subverted | Bridge |
The generic-vulnerability strings above are reproduced verbatim from the canonical framework dictionary (json-schemas/layer-1/tlctc-framework.v2.5.json), which also carries the canonical one-line Definition and Attacker's View per cluster. The scope descriptions below are the operational elaborations from the white paper Β§4.1.
-
#1 Abuse of Functions β Manipulation of legitimate software capabilities β features, APIs, configurations, administrative settings, workflows β through standard interfaces using built-in input types and valid sequences of actions. The step achieves an attacker advantage without requiring an implementation flaw.
-
#2 Exploiting Server β Triggering an implementation flaw in server-role software using exploit code, exploiting coding mistakes in how the server processes requests, handles data, enforces logic, or manages resources. This forces an unintended dataβcode transition.
-
#3 Exploiting Client β Triggering an implementation flaw in client-role software through crafted content, responses, or state, exploiting coding mistakes in parsing, rendering, state management, or response handling.
-
#4 Identity Theft β Presentation or use of credentials, tokens, keys, session artifacts, or other identity representations to authenticate and act as an identity different from the presenter's own. This cluster focuses on the use of credentials β acquisition maps to the enabling cluster (see Credential Dual Nature below).
-
#5 Man in the Middle (MitM) β Exploitation of a controlled position on a communication path through interception, observation, modification, injection, replay, or protocol downgrade/stripping.
-
#6 Flooding Attack β Exhaustion of finite system resources (bandwidth, CPU, memory, storage, quotas, pools) through volume or intensity that exceeds capacity limits, causing disruption, degradation, or denial of service.
-
#7 Malware β Execution of Foreign Executable Content (FEC) through the environment's designed execution capabilities (binaries, scripts, macros, modules, or attacker-controlled commands fed into interpreters), including dual-use tooling when it executes attacker-controlled FEC.
-
#8 Physical Attack β Unauthorized physical interaction with or interference to hardware, facilities, media, interfaces (including removable media), or signals β via direct contact or exploitation of physical phenomena/emanations.
-
#9 Social Engineering β Psychological manipulation that causes a human to perform an action counter to security interests β disclosing information, granting access, executing content, modifying configuration, or bypassing procedures.
-
#10 Supply Chain Attack β Exploitation of an organization's third-party trust link such that the organization accepts third-party-originating artifacts or decisions as authoritative within its domain, enabling unauthorized action or compromise. Placed at the Trust Acceptance Event (TAE).
The execution distinction is the sharpest analytical tool in the framework. Four data paths exist:
| Path | Mechanism | Cluster |
|---|---|---|
| Data β Data | Pure data manipulation, no code execution | #1 only |
| Data β Function β Foreign Code | Function abuse enables code execution | #1 β #7 |
| Data β Code via Implementation Flaw | Unintended transition (exploit code triggers bug) | #2 or #3 |
| Data β Code via Designed Capability | Intended execution (malware code uses execution engine) | #7 |
R-EXEC Rule (Normative): Whenever Foreign Executable Content (FEC) is executed, a #7 step MUST be recorded at the moment of execution, independent of how execution was enabled. Analysts must not "absorb" execution into the enabling cluster.
Common execution patterns: #1 β #7 Β· #2 β #7 Β· #3 β #7 Β· #8 β #7 Β· #9 β #7 Β· #10 β #7
Credentials have two distinct operational phases, and they must be classified separately:
| Phase | Classification | Example |
|---|---|---|
| Acquisition | Maps to the enabling cluster (the generic vulnerability that exposed the credential) | #2 (SQLi dumps passwords), #5 (MitM intercepts token), #9 (phishing captures password) |
| Application | #4 β regardless of how the credential was obtained, provided the identity claimed is not the presenter's own (a system-issued self-enrolled identity used as self is not #4; out-of-scope enrolment is #1, per R-CRED) | Attacker logs in using stolen credentials β #4 |
Attack Velocity is the time interval between two adjacent attack steps. It is the most accurate predictor of which control types are structurally viable β a detection that alerts in hours is structurally insufficient if Ξt between steps is minutes.
| Class | Time Range | Defender's Feasible Response Mode |
|---|---|---|
| VC-1 | Days β Months | Strategic: Log retention, threat hunting, strategic monitoring |
| VC-2 | Hours | Tactical: SIEM alerting, analyst triage, guided response |
| VC-3 | Minutes | Operational: Automation (SOAR/EDR), rapid containment, prebuilt playbooks |
| VC-4 | Seconds β Milliseconds | Real-Time: Architecture & circuit breakers, rate-limits, hardening, automatic isolation |
Complex attacks are not single events β they are sequences. TLCTC provides a standardized notation to map multi-step attack paths with full temporal and topological context.
| Element | Syntax | Purpose |
|---|---|---|
| Sequential step | β |
Links cause-side steps in order |
| Parallel steps | (#X + #Y) |
Concurrent exploitation of distinct generic vulnerabilities |
| Velocity annotation | β[Ξt=value]β |
Time interval between steps (e.g., β[Ξt=15m]β, β[Ξt=~2h]β) |
| Domain boundary | ||[context][@Sourceβ@Target]|| |
Marks where attack crosses responsibility spheres |
| Transit boundary | ||[context][@Sourceβ@Carrierβ@Target]|| |
Marks intermediate carrier/relay spheres (β = transit) |
| Intra-system boundary | |[type][@fromβ@to]| |
Within-host boundary crossing (sandbox, privilege, process, hypervisor) |
| Unresolved step | ? / β¦ |
Forensic uncertainty β step exists but cluster cannot yet be determined |
| Data Risk Event | + [DRE: C, I, A] |
Annotates consequences (never a step itself) |
TLCTC provides three boundary operators β all are observability annotations that increase analytical precision without changing cluster classification.
Marks where an attack crosses between responsibility spheres (inter-organizational boundaries):
||[context][@Sourceβ@Target]||
Identifies intermediate responsibility spheres that relay an attack without being its source or target:
||[context][@Sourceβ@Carrierβ@Target]|| # single transit party
||[context][@Sourceβ@CarrierBβ@CarrierAβ@Target]|| # chained transit (right-to-left relay)
Example: SMS-based phishing where the SMS gateway relays the malicious link:
#9 ||[messaging][@Attackerβ@SMSProviderβ@Victim]||
Transit β Supply Chain (#10). Transit marks a relay/carrier that passes the attack through. #10 marks a Trust Acceptance Event β the moment a trust artifact becomes authoritative inside the target domain. An SMS provider relaying a phishing link is transit; a compromised npm package installed by the target is #10.
Annotates boundary crossings within a single host or system β as opposed to domain boundaries (||...||) which cross between responsibility spheres.
| Type | Description | Example |
|---|---|---|
sandbox |
Escape from application sandbox to host OS or less-restricted context | Browser renderer sandbox escape, container breakout |
privilege |
Elevation from lower to higher privilege level | User-to-root, unprivileged to kernel mode |
process |
Crossing from one process's security context to another | Process injection, DLL hijacking |
hypervisor |
Escape from VM to hypervisor or another VM | VM escape, hyperjacking |
#3 |[sandbox][@rendererβ@os]| # browser exploit escaping renderer sandbox
#2 |[privilege][@userβ@root]| # local privilege escalation via server-side flaw
| Rule | Statement |
|---|---|
| R-TRANSIT-3 | Vendor code running on the target device is NOT transit. Safari on the victim's phone is the attack surface (classify by R-ROLE as #3), not a transit party. |
| R-INTRA-7 | Intra-system boundaries never change cluster classification. They are observability annotations, not classification inputs. |
| R-INTRA-9 | The memory boundary type is explicitly deferred and MUST NOT be used. |
The context vocabulary is extensible. The baseline profile defines 16 context types:
messaging Β· email Β· cdn Β· cloud Β· network Β· signaling Β· auth Β· media Β· browser Β· exploit Β· dev Β· update Β· physical Β· human Β· legal Β· admin
Incident analysis is iterative β evidence arrives over time and CTI must flow before classification is complete. Paths support two operators for forensic uncertainty:
| Operator | Name | Meaning |
|---|---|---|
? |
Single Unresolved Step | Exactly one step occurred at this position, but its cluster cannot yet be determined |
β¦ |
Unresolved Gap | At least one step occurred in this region; both count and clusters are unknown |
Example: #3 β[Ξt=0s] #7 β[Ξt=4h] ? β[Ξt=<10m] #4 β #1
Key rules:
?andβ¦are epistemic annotations, not clusters β they have no generic vulnerability (R-UNRES-2)- DRE tags MUST NOT be appended to
?/β¦(R-UNRES-5) - Boundary operators MAY appear adjacent to
?/β¦β boundaries are independently observable (R-UNRES-6) - Every
?/β¦MUST carry a prosenotesannotation explaining what is unresolved and why (R-UNRES-8)
The notation carries four distinct epistemic states for a step:
| State | Syntax | Use when |
|---|---|---|
| Classified | #X |
Cluster assigned, evidence supports it |
| Low-confidence | #X [conf=low] |
Best-supported cluster with explicit caveat |
| Inferred | #X [inferred] |
Not directly observed but logically required |
| Unresolved | ? or β¦ |
No cluster can be defended on available evidence |
If any cluster can be defended β even weakly β use #X [conf=low], not ?. Reserve unresolved operators for genuine "we know something happened, we don't know what" situations.
"Ransomware" is not a threat β it's an outcome label that obscures the actual attack sequence. Here is what a typical ransomware campaign looks like in TLCTC:
Scenario: Phishing email delivers a malicious macro. The malware steals credentials. The attacker uses the credentials to abuse Active Directory while simultaneously deploying an encryption payload.
TLCTC Attack Path:
#9 ||[human][@Externalβ@Org]|| β[Ξt=24h] #7 β[Ξt=5m] #4 β[Ξt=15m] #1 β #7 + [DRE: Ac]
Reading this notation:
- #9 β Social engineering (phishing email) crosses from external to organization domain
- β[Ξt=24h] β 24 hours until victim opens attachment
- #7 β Malware executes (malicious macro runs via designed execution capability)
- β[Ξt=5m] β 5 minutes later, credentials are exfiltrated
- #4 β Stolen credentials are used (identity theft β credential application)
- β[Ξt=15m] β 15 minutes of lateral movement
- #1 β #7 β AD function abuse deploys/pushes the encryption payload (#1), then the payload executes (#7); per R-EXEC, #7 is recorded at the execution moment β after its enabler. The order is known, so this is sequential, not parallel (see White Paper Β§11.2.2)
- + [DRE: Ac] β Consequence: Loss of Accessibility (data exists but is unusable)
Note: The consequence is Loss of Accessibility (data present but encrypted/unusable), not Loss of Availability (data gone or infrastructure unreachable). This distinction matters for incident response.
Supply chain trusted update (SolarWinds-style):
#10 ||[update][@Vendorβ@Org]|| β[Ξt=0s] #7 β[Ξt=hours] #4 β[Ξt=days] #1 + [DRE: C]
Physical access to interception:
#8 ||[physical][@Facilitiesβ@IT]|| β #5 β #4
Federated access abuse:
#4 β #10 ||[auth][@Vendor(IdP)β@Org(SP)]|| β #1
SMS phishing with transit carrier:
#9 ||[messaging][@Attackerβ@SMSProviderβ@Victim]|| β[Ξt=1h] #7 β[Ξt=5m] #4 + [DRE: C]
Browser exploit with sandbox escape:
#3 |[sandbox][@rendererβ@os]| β[Ξt=0s] #7 |[privilege][@userβ@system]| β[Ξt=2m] #4 + [DRE: C, I]
Watering hole via compromised CDN with chained transit:
#9 ||[browser][@Attackerβ@CDNβ@AdNetworkβ@Victim]|| β[Ξt=0s] #3 |[sandbox][@rendererβ@os]| β[Ξt=0s] #7 + [DRE: C]
TLCTC acts as the strategic translation layer β a shared semantic backbone that connects operational frameworks without replacing them.
Every specific CVE is an instance of a generic vulnerability and maps to a primary TLCTC cluster. The hierarchy flows: Weakness (CWE) β Specific Vulnerability (CVE) β Generic Vulnerability β Threat Cluster (#1β#10).
Example: An RCE vulnerability in Apache Struts (CVE-2017-5638) is a server-side implementation flaw β #2 Exploiting Server. If the exploit leads to code execution β #2 β #7.
The mappings/mitre-cwe/ directory contains the mapping of 985 CWE weaknesses to TLCTC clusters, including rationale, confidence verdicts, CVE references, and a decision tree methodology. Because CWE defines the flaw while TLCTC defines the exploit vector, the same CWE can map to different clusters depending on context (e.g., server-side vs. client-side). See the CWE mapping README for notation and the decision tree for classification methodology.
Note: The CWE mapping was generated with AI assistance and is marked experimental.
Operational techniques map to strategic clusters based on the generic vulnerability exploited. The mappings/mitre-attack-enterprise/ directory contains the complete mapping of 698 ATT&CK Enterprise techniques to TLCTC clusters, including detailed rationale for each classification and a decision tree methodology.
Quick examples:
- T1566.001 "Spearphishing Attachment" β #9 Social Engineering (the phishing step; the payload execution is a separate #7 step)
- T1059 "Command and Scripting Interpreter" β #7 Malware (or #1 β #7 when legitimate tools execute attacker-controlled content)
- T1078 "Valid Accounts" β #4 Identity Theft (credential application)
See the mapping README for notation conventions, the decision tree for classification methodology, and the SOC-to-risk walkthrough for a worked example.
Detection rules carry the strategic cluster their logic defends. The mappings/sigma/ directory contains a per-rule TLCTC derivation of 3,132 SigmaHQ detection rules, generated mechanically from each rule's attack.t* tags joined against the ATT&CKβTLCTC mapping. This lets a SOC cross-walk its detection coverage against the ten clusters β which causes are well-instrumented, and which are blind spots.
Each rule resolves to one of three states: ok (a single concrete cluster), ambiguous (the rule spans multiple clusters or an alternation), or unmapped (no usable ATT&CK technique tag). No rule detection bodies are reproduced β only titles, GUIDs, log sources, and the derived clusters (license-safe). The committed snapshot is rebuilt by a deterministic, dependency-free generator (primaryCluster is the lowest-numbered cluster in the resolved set).
See the mapping README for the record schema and regeneration recipe, and the decision tree for the resolution algorithm.
Note: Like the ATT&CK and CWE mappings, the Sigma derivation inherits the experimental, AI-generated ATT&CKβTLCTC mapping.
Any scanner that emits SARIF 2.1.0 (Semgrep, CodeQL, Trivy, Grype, Bandit, gosec) can be cluster-classified without a per-tool adapter. The integrations/sarif/ pack is a standalone, stdlib-only Python CLI that mines CWE/CVE identifiers from any SARIF file, classifies CWE-first against the canonical CWEβTLCTC mapping with a CVEβKEV fallback, resolves ambiguous #2 | #3 findings by file-path role (R-ROLE), and emits JSON, Markdown, or TLCTC-enriched SARIF. A --fail-on-cluster gate turns it into a CI check. See the pack README and deploy guide.
Controls are organized in a cluster Γ function matrix. NIST CSF 2.0 defines 6 functions: GOVERN, IDENTIFY, PROTECT, DETECT, RESPOND, RECOVER. GOVERN operates as the overarching strategic governance layer providing assurance controls, while the remaining 5 map directly to Bow-Tie positions:
| Bow-Tie Position | NIST CSF 2.0 Functions | Purpose |
|---|---|---|
| Strategic Oversight | GOVERN | Risk appetite, policies, roles β assurance controls |
| Cause Side (Prevention) | IDENTIFY, PROTECT | Reduce likelihood of cluster steps reaching the central event |
| Central Event | DETECT | Recognize when loss of control occurs |
| Consequence Side (Mitigation) | RESPOND, RECOVER | Contain impact, restore operations after compromise |
The TLCTC JSON architecture enables machine-readable threat intelligence sharing through a three-layer design that separates stable definitions from dynamic incident data.
| Layer | Purpose | Artifact | Scope | Update Frequency |
|---|---|---|---|---|
| Layer 1 β Framework Definition | Immutable "dictionary": clusters, axioms, rule IDs, topology types | tlctc-framework.schema.json / tlctc-framework.v2.5.json |
Universal | Rarely (framework evolution) |
| Layer 2 β Reference Registry | Reusable reference objects: responsibility spheres, boundary contexts, intra-system boundary types | tlctc-reference.schema.json / @Org-registry.vX.Y.Z.json |
Organization-specific | Occasionally (org changes) |
| Layer 3 β Attack Path Instances | Specific incidents: sequences, parallel groups, Ξt, boundary annotations, DREs | tlctc-attack-path.schema.json / incident-<id>.json |
Per-incident | Constantly (new incidents) |
Layer 4 β Risk Quantification (optional extension, proposed): a FAIR bridge that quantifies financial risk over a Layer 3 attack path (Sequence Complexity Factor, Compound Threat Multipliers, Velocity-Weighted Control Effectiveness, Path Variance Analysis). It sits on top of the three core layers and is not required to use them. Schema:
json-schemas/layer-4/tlctc-fair-risk.schema.json; rationale:documentation/tlctc-fair-integration-proposal.md.
- Separation of meaning from measurement β Layer 1 defines what a cluster is; Layer 3 records what happened. Incident records must not redefine clusters.
- Strict validation β Schemas use
additionalProperties: false. Non-standard fields go inextensionsobjects. - Linear + parallel modeling β Attack paths are ordered sequences of
attack_stepandparallel_groupentries. - R-EXEC enforcement β Steps carry
fec_executedandfec_recorded_in_step_idfields to ensure FEC execution is always recorded.
The okf/ directory packages the entire taxonomy as an Open Knowledge Format bundle (OKF v0.1) β a tree of markdown files with YAML frontmatter, built so LLM agents and RAG pipelines can consume TLCTC directly. It is a rendered view generated from the canonical JSON schemas, whitepaper, and tools; those remain the single source of truth.
- 412 concept documents: clusters (the six-field whitepaper definitions), axioms, rules, Layer-2 spheres/contexts, 247 glossary terms, 51 attack paths (notation + step tables), and ATT&CK/CWE/Sigma mappings grouped by cluster.
- Governance controls section: pairs the NIST CSF control objectives with the full 60-cell ISO 27001:2022 Annex A control matrix (every cluster Γ function, local + umbrella), the CDE β COE β ECR effectiveness model with the Detection Coverage Score, and the KRI/KCI/KPI indicator hierarchy.
- Regenerate & validate:
npm run validatechainsvalidate-frameworkβbuild-okfβvalidate-okf(SPEC conformance). The rebuild is deterministic. Seeokf/README.md.
Note: The ISO 27001 Annex A control placements and the CWE mapping carry starter / AI-assisted provenance notes β guidance, not certified control sets.
TLCTC relies on 10 non-negotiable axioms organized into four groups. These prevent the category errors that plague cybersecurity language.
| # | Axiom | Group | Core Statement |
|---|---|---|---|
| I | No System-Type Differentiation | Scope | Generic IT assets; sector labels (SCADA, IoT, cloud) don't create new threat classes |
| II | ClientβServer Model | Scope | All networked interaction can be modeled as clientβserver at one or more layers |
| III | Causes, Not Outcomes | Separation | Threats β data risk events. "Data breach" is never a threat category |
| IV | Not Threat Actors | Separation | Threats β actor identity. "APT" is not a cluster |
| V | Not Control Failure | Separation | Control-risk β threat category. A missing patch is not a threat |
| VI | Single-Cluster Rule | Classification | One step = one generic vulnerability = one cluster (non-overlap) |
| VII | Initial-Vulnerability Rule | Classification | Each attack vector is defined by the generic vulnerability it initially targets |
| VIII | StrategicβOperational Layering | Classification | Clusters have sub-threats (strategic β operational decomposition) |
| IX | Sequence + Velocity | Sequences | Clusters chain into attack paths; Ξt measures velocity between steps |
| X | Credential Duality | Sequences | Credential acquisition and application are distinct steps with distinct classifications |
tlctc/
βββ mappings/
β βββ mitre-attack-enterprise/ # MITRE ATT&CK Enterprise β TLCTC
β β βββ README.md # Mapping documentation & notation
β β βββ tlctc-enterprise-attack.json # 698 technique mappings with rationale
β β βββ decision-tree.md # Classification methodology
β β βββ examples/
β β βββ soc-to-risk-walkthrough.md # Worked example: SOC β risk register
β βββ mitre-cwe/ # MITRE CWE β TLCTC (experimental)
β β βββ README.md # Mapping documentation & verdict system
β β βββ tlctc-cwe.json # 985 CWE mappings with rationale & CVE refs
β β βββ decision-tree.md # Classification methodology
β β βββ examples/
β β βββ cwe-to-control-walkthrough.md # Worked example: vuln findings β controls
β βββ npm-supply-chain/ # npm supply chain patterns β TLCTC
β β βββ README.md # Pattern documentation & methodology
β β βββ tlctc-npm-patterns.json # Supply chain attack patterns mapping
β β βββ examples/
β β βββ incident-to-control-walkthrough.md # Worked example: incident β controls
β βββ cloudflare-2026-patterns/ # Cloudflare 2026 attack patterns β TLCTC
β β βββ README.md # Pattern documentation & methodology
β β βββ tlctc-cloudflare-2026-patterns.json # Cloudflare 2026 threat report pattern mapping
β βββ cisa-kev/ # CISA Known Exploited Vulnerabilities β TLCTC
β β βββ README.md # Mapping documentation & caveats
β β βββ generate-kev-mapping.py # Deterministic ETL generator
β β βββ tlctc-kev.json # 1,568 per-CVE derivations
β β βββ tlctc-kev-stats.json # Cluster counts, ransomware, vendor & monthly stats
β β βββ product-role-heuristic.json # R-ROLE (#2 | #3) disambiguation rules
β β βββ decision-tree.md # Derivation algorithm
β β βββ input/ # Pinned KEV snapshot (reproducibility)
β β βββ examples/
β β βββ cluster-exposure-walkthrough.md # Worked example: vendor stack β exposure
β βββ mandiant-2026/ # Mandiant M-Trends 2026 ATT&CK β TLCTC
β β βββ tlctc-mandiant-2026-attck-mapping.json # Mandiant 2026 technique mapping
β βββ splunk-cisco/ # Splunk/Cisco Top-50 comparison
β β βββ splunk-top50-tlctc-comparison.html # Interactive Splunk Top-50 vs TLCTC view
β βββ sigma/ # SigmaHQ detection rules β TLCTC
β βββ README.md # Mapping documentation & caveats
β βββ generate-sigma-mapping.py # Deterministic ETL generator (PyYAML)
β βββ tlctc-sigma.json # 3,132 per-rule derivations
β βββ tlctc-sigma-stats.json # Cluster distribution & status counts
β βββ decision-tree.md # Derivation algorithm
β βββ tests/ # Generator unit tests
βββ json-schemas/
β βββ layer-1/ # Framework Definition (Static)
β β βββ tlctc-framework.schema.json # Schema for framework packages
β β βββ tlctc-framework.v2.3.json # V2.3 frozen record (retained for 2.3.x classifications)
β β βββ tlctc-framework.v2.5.json # V2.5 citable baseline: clusters, axioms, 18 rules
β βββ layer-2/ # Reference Registry (Context)
β β βββ tlctc-reference.schema.json # Schema for reference registries
β β βββ example-registry.json # Example org-specific registry
β βββ layer-3/ # Attack Path Instances (Dynamic)
β β βββ tlctc-attack-path.schema.json # Schema for attack path instances
β β βββ examples/
β β βββ solarwinds-2020.json # SolarWinds supply chain incident
β β βββ chalk-debug-2025.json # npm phishing campaign incident
β β βββ midnight-blizzard-microsoft-2024.json # Midnight Blizzard β Microsoft OAuth pivot
β β βββ unresolved-step-example-2026.json # Unresolved-step operators (?/β¦) reference
β βββ layer-4/ # FAIR Risk Quantification (Risk)
β β βββ tlctc-fair-risk.schema.json # Schema for FAIR risk assessment instances
β β βββ examples/
β β βββ scattered-spider-2024-fair.json # SCATTERED SPIDER FAIR risk assessment
β βββ operational/ # Operational sub-cluster enumeration (evolving)
β βββ tlctc-operational-enumeration.schema.json # Schema for the enumeration
β βββ tlctc-operational-enumeration.json # TLCTC-XX.YY catalogue (JSON twin of the md)
βββ grammar/ # Standalone ABNF grammar for path notation
β βββ README.md # Grammar documentation & tooling notes
β βββ tlctc-attack-path.abnf # ABNF grammar for TLCTC attack-path syntax
βββ scripts/ # Build & validation tooling (Node.js)
β βββ build-pdf.js # markdown β text PDF (marked + puppeteer)
β βββ validate-framework.js # ajv JSON Schema validator
β βββ build-okf.js # canonical sources β OKF bundle (okf/)
β βββ validate-okf.js # OKF SPEC conformance checker
βββ okf/ # Open Knowledge Format bundle (agent-consumable; generated by scripts/build-okf.js)
β βββ README.md # Bundle provenance & regeneration recipe
β βββ index.md / log.md # OKF reserved navigation & changelog
β βββ clusters/ axioms/ rules/ # Framework dictionary (one markdown doc per concept)
β βββ spheres/ contexts/ # Layer-2 registry (responsibility spheres, boundary contexts)
β βββ glossary/ # 247 term docs
β βββ attack-paths/ # 59 incident path docs (notation + step tables)
β βββ controls/ # NIST CSF Γ ISO 27001 matrix, effectiveness model, indicators
β βββ mappings/ # ATT&CK / CWE / Sigma grouped by cluster
βββ documentation/
β βββ tlctc-v2.5-core.md # β Citable core paper (v2.5) β canonical definition
β βββ tlctc-v2.5-core.pdf # PDF of the core paper (citation target)
β βββ tlctc-v2.5-application.md # Application & governance companion (v2.5)
β βββ tlctc-v2.5-application.pdf # PDF of the application paper
β βββ tlctc-traceability.md # consolidation & version traceability (v2.1 β v2.5)
β βββ tlctc-operational-enumeration.md # Evolving TLCTC-XX.YY sub-cluster catalogue
β βββ tlctc-v2.0-whitepaper.md # Extended practitioner handbook (v2.1 content; filename kept for link stability)
β βββ tlctc-v2.0-whitepaper.pdf # PDF export of the white paper
β βββ tlctc-glossary.md # Comprehensive definitions
β βββ tlctc-glossary.pdf # PDF export of the glossary
β βββ tlctc-ti-sharing-profile.md # TI Sharing β Extension Profile (companion)
β βββ tlctc-fair-integration-proposal.md # FAIR integration proposal (Layer 4 spec)
β βββ tlctc-cve-extension-proposal.md # CVE extension proposal
β βββ tlctc-replication-notation-proposal.md # Replication notation (ΓN fan-out / Γ* self-propagation) β conceptual proposal (v0.1)
β βββ tlctc-plus-ncsc-proposal.md # TLCTC+ national reporting extension β policy proposal (v0.1)
β βββ tlctc-plus-specification.md # TLCTC+ implementation specification (v0.3) β grammar, conformance, catalogues
β βββ propagated-controls.md # Managing controls over event chains β generalizes Propagated PR to BCM, contractual, and policy sources
β βββ npm-supply-chain-blog-final.md # npm supply chain threat analysis
β βββ Why Exactly Ten_ β TLCTC Framework Architecture.pdf # Framework architecture rationale
β βββ images/ # Diagrams and visual assets
β βββ tlctc-bowtie-anchor-diagram.svg
β βββ tlctc-consequence-chain.svg
β βββ tlctc-cyber-bow-tie.svg
β βββ tlctc-dual-layer-bowtie-overview.svg
β βββ tlctc-dual-layer-naming.svg
βββ tools/
β βββ README.md # Tool index & JSON format reference
β βββ threat-modeling.html # SDLC threat modeling & architecture analysis
β βββ attack-path-architect.html # Incident attack path documentation & CTI exchange
β βββ actor-profile-designer.html # Threat actor capability profiling & comparison (573 actors: 59 expert-scored + 514 ETDA heuristic-scored)
β βββ actor-story-designer.html # Threat intelligence story/narrative builder
β βββ radar-tlctc-app.html # Interactive threat radar visualization & assessment
β βββ tech-enablers-radar.html # Technology enabler radar for emerging threat vectors
β βββ control-matrix.html # NIST CSF 2.0 Γ TLCTC control matrix with maturity scoring
β βββ attck-explorer.html # MITRE ATT&CK technique explorer with TLCTC mapping
β βββ attck-phase-heatmap.html # ATT&CK phase heatmap visualization
β βββ cwe-explorer.html # CWE weakness explorer with TLCTC mapping
β βββ cbp-app.html # Cluster-based prioritization application
β βββ cbp-starter.json # Cluster-based prioritization starter dataset
β βββ control-matrix-starter.json # NIST CSF control-matrix starter
β βββ control-matrix-starter-iso27001.json # ISO 27001 control-matrix starter
β βββ control-matrix-starter-cloudflare-2026.json # Cloudflare-2026 control-matrix starter
β βββ score_etda.py # ETDAβTLCTC scoring engine: tool arsenal + description mining, calibrated against expert data
β βββ generate-cs2026-report.js # CrowdStrike-2026 report generator
β βββ generate-iso27001-starter.py # ISO 27001 control-matrix starter generator
β βββ replace-cdn.sh # CDN link rewrite helper
β βββ examples/ # Starter templates & real-world example datasets
β βββ template-threat-model.json # Blank threat model starter
β βββ template-attack-path.json # Blank attack path starter
β βββ template-actor-profile.json # Blank actor profile starter
β βββ CTA-CrowdStrike2025.json # CrowdStrike 2025 Global Threat Report actors
β βββ CTA-CrowdStrike2026.json # CrowdStrike 2026 Global Threat Report actors
β βββ CTA-Cloudflare-2026.json # Cloudflare 2026 threat actors
β βββ CTA-Mandiant-2026.json # Mandiant M-Trends 2026 threat actors
β βββ CTA-Google-APT-Groups.json # Google APT group profiles
β βββ CTA-NCSC-SituationRadar-2024-2025.json # NCSC Situation Radar threat data
β βββ CTA-NCSC-TAC-Profiles.json # NCSC threat actor capability profiles
β βββ radar-cloudflare-2026.json # Cloudflare 2026 radar dataset
β βββ radar-crowdstrike-2026.json # CrowdStrike 2026 radar dataset
β βββ radar-mandiant-2026.json # Mandiant 2026 radar dataset
β βββ radar-mandiant-2026-industries.json # Mandiant 2026 industry-specific radar
β βββ stories-cloudflare-2026.json # Cloudflare 2026 threat narratives
β βββ stories-crowdstrike-2026.json # CrowdStrike 2026 threat narratives
β βββ stories-mandiant-2026.json # Mandiant 2026 threat narratives
β βββ control-matrix-cloudflare-2026.json # Cloudflare 2026 control matrix
β βββ control-matrix-crowdstrike-2026.json # CrowdStrike 2026 control matrix
β βββ control-matrix-mandiant-2026.json # Mandiant 2026 control matrix
β βββ tech-enablers-horizon-2026.json # Technology enablers horizon scan 2026
β βββ tech-enablers-agentic-focus-2026.json # Agentic AI technology enablers 2026
β βββ ncsc-google-2024-JB-bericht*.json # NCSC/Google 2024 annual report datasets (5 files)
β βββ npm-*.json # npm supply chain incident examples (3 files)
βββ integrations/ # External-tool deployments (operational)
β βββ README.md # Index of available integration packs
β βββ cortex-xsoar/ # Cortex XSOAR 6.2.x per-object YAML/JSON pack
β βββ cortex-xsoar-8/ # Cortex XSOAR 8.x / XSIAM Marketplace Content Pack
β βββ sonarqube/ # SonarQube & SonarCloud sidecar (Python CLI + declarative starter)
β βββ sarif/ # Generic SARIF 2.1.0 classifier (Python CLI, stdlib only)
βββ glossary/
β βββ tlctc-glossary.schema.json # Schema for universal cyber security glossary
β βββ tlctc-glossary.json # 72 terms: clusters, axioms, rules, notation, architecture, boundary operators
βββ agentic-ai/ # Analysis of AI semantics in Cyber Threats
β βββ README.md # Overview and methodology
β βββ agentic-consequence-chains.json # Consequence chain examples
β βββ agentic-tool-profiles.json # 5 tool category risk profiles
β βββ agentic-irreversibility-matrix.json # Irreversibility windows per consequence type
β βββ attack-paths/ # 10 individual agentic AI attack paths (AβJ)
β βββ path-A-direct-prompt-injection.json
β βββ path-B-indirect-prompt-injection.json
β βββ path-C-social-engineering-operator.json
β βββ path-D-credential-access.json
β βββ path-E-agent-as-lolbin.json
β βββ path-F-runtime-exploit.json
β βββ path-G-rogue-agent-install.json
β βββ path-H-supply-chain-marketplace.json
β βββ path-I-apt-in-a-box.json
β βββ path-J-llm-weaponization-supply-chain.json
βββ attack-paths/ # Community-contributed incident analyses (51 incidents, 58 path files)
β βββ CONTRIBUTING.md
β βββ # Canonical pattern reference
β βββ ad-domain-admin-cascade-2025.json # Active Directory Domain-Admin β ransomware #1-cascade (composite pattern: Lynx, Storm-2603, Storm-0300/Akira)
β βββ # Historical incidents (2008β2024)
β βββ agent-btz-usb-2008.json # USB worm (2008)
β βββ watering-hole-iphonedevsdk-2013.json # Watering hole (2013)
β βββ darkhotel-wifi-2014.json # Hotel Wi-Fi (2014)
β βββ ubiquiti-bec-2015.json # BEC wire fraud (2015)
β βββ ukraine-power-grid-2015.json # ICS power grid (2015)
β βββ uber-breach-2016.json # Credential stuffing (2016)
β βββ mirai-botnet-2016.json # IoT botnet (2016)
β βββ capital-one-2019.json # SSRF cloud (2019)
β βββ credential-stuffing-2020.json # Credential stuffing (2020)
β βββ twitter-hack-2020.json # Social engineering (2020)
β βββ colonial-pipeline-2021.json # Ransomware (2021)
β βββ pegasus-forcedentry-2021.json # Zero-click exploit (2021)
β βββ okta-lapsus-2022.json # Supply chain (2022)
β βββ lockbit-byovd-2023.json # BYOVD ransomware (2023)
β βββ cloudflare-http-ddos-2023.json # HTTP/2 DDoS (2023)
β βββ tesla-insider-2023.json # Insider threat (2023)
β βββ tesla-k8s-cryptojacking-2018.json # K8s cryptojacking (2018)
β βββ lojax-uefi-2018.json # UEFI rootkit (2018)
β βββ change-healthcare-2024.json # Healthcare ransomware (2024)
β βββ # Cloudflare 2026 Threat Report sourced (13 incidents)
β βββ grub1-saas-pivot-2025.json # GRUB1 Salesloft/Drift SaaS pivot
β βββ opencode-exploit-chain-2025.json # OpenCode AI IDE RCE chain
β βββ frumpytoad-toughprogress-2025.json # FrumpyToad ToughProgress phishing
β βββ nastyshrew-ukraine-2025.json # NastyShrew Ukraine espionage
β βββ rottenshrew-signal-2025.json # RottenShrew Signal device linking
β βββ clumsytoad-snakedisk-2025.json # ClumsyToad SnakeDisk USB wiper
β βββ punytoad-f5-bigip-2025.json # PunyToad F5 BIG-IP exploitation
β βββ nk-it-worker-infiltration-2025.json # DPRK IT worker infiltration scheme
β βββ infostealer-ransomware-pipeline-2025.json # Infostealer β IAB β ransomware pipeline
β βββ aisuru-ddos-2025.json # Aisuru botnet DDoS-for-hire
β βββ authorized-insider-extortion-2025.json # Authorized insider extortion
β βββ bot-chain-lifecycle-2025.json # Bot chain lifecycle (IoT β proxy)
β βββ raccoon-phaas-aitm-2025.json # Raccoon PhaaS AiTM credential theft
β βββ # Mandiant M-Trends 2026 sourced (6 incidents)
β βββ mandiant-handoff-ransomware-2025.json # Infostealer β IAB β ransomware hand-off
β βββ mandiant-multi-year-espionage-2025.json # Multi-year espionage campaign
β βββ mandiant-saas-cascade-2025.json # SaaS token cascade
β βββ mandiant-edge-device-exploitation-2025.json # Edge device exploitation
β βββ mandiant-esxi-virtualization-2025.json # ESXi VMDK-mount credential dump
β βββ mandiant-recovery-denial-2025.json # Recovery denial ransomware
β βββ # CrowdStrike 2026 Global Threat Report sourced (8 incidents)
β βββ scattered-spider-unmanaged-vm-2025.json # SCATTERED SPIDER unmanaged VM credential dump
β βββ pressure-chollima-bybit-2025.json # PRESSURE CHOLLIMA Bybit $1.46B supply chain
β βββ fancy-bear-lamehug-2025.json # FANCY BEAR LAMEHUG LLM-enabled malware
β βββ blockade-spider-embargo-2025.json # BLOCKADE SPIDER cross-domain Embargo ransomware
β βββ cozy-bear-oauth-ngo-2025.json # COZY BEAR multi-day OAuth phishing
β βββ chatty-spider-lawfirm-2025.json # CHATTY SPIDER 4-minute law firm intrusion
β βββ punk-spider-smb-encryption-2025.json # PUNK SPIDER remote SMB encryption via IoT
β βββ famous-chollima-beavertail-2025.json # FAMOUS CHOLLIMA fake recruiter npm + BeaverTail
β βββ # npm ecosystem sourced (3 incidents)
β βββ s1ngularity-nx-2025.json # S1ngularity NX npm campaign
β βββ chalk-debug-phishing-2025.json # chalk-debug npm phishing
β βββ shai-hulud-worm-2025.json # ShaiHulud self-propagating npm worm
β βββ # OpenAI β Hugging Face incident, July 2026 (1 incident, 8 paths, TLCTC v2.5)
β βββ openai-hf-artifactory-2026.json # AP-1 covert channel, first egress, Artifactory takeover (@OAI-Research)
β βββ openai-hf-precursor-spaces-2026.json # Precursor branch, HF Spaces proxy (explicitly non-causal)
β βββ openai-hf-sandbox-escape-2026.json # AP-2 re-establishment and eval sandbox escape
β βββ openai-hf-relay-estate-2026.json # AP-3 third-party relay estate (@Modal-Cust, @Org1, screenshot service)
β βββ openai-hf-huggingface-2026.json # AP-4 Hugging Face production compromise (29 steps)
β βββ openai-hf-package-plane-2026.json # AP-5 image cache poisoning + RubyGems deserialisation (#10 twice)
β βββ openai-hf-cloud-escalation-2026.json # AP-6 kernel exploit β cloud control plane (956 secrets)
β βββ openai-hf-observability-2026.json # AP-7 tool-call transcript spoofing (v2.6 [DRE: Im] test case)
βββ LICENSE # CC BY 4.0
- Read the core paper β
documentation/tlctc-v2.5-core.mdis the canonical, citable definition: derivation, clusters, axioms, rules, and notation in one self-contained paper. - Read the axioms β They are the non-negotiable foundation. If you skip them, you'll misclassify.
- Understand the Bow-Tie β Threats are causes, outcomes are consequences. Never confuse them.
- Practice with attack paths β Take any recent incident report and decompose it into TLCTC notation. The Application Paper walks the procedure end-to-end.
- Use the JSON schemas β Validate your attack path instances against Layer 3 schema.
- Explore the ATT&CK mapping β See
mappings/mitre-attack-enterprise/to understand how operational techniques translate to strategic clusters. - Explore the CWE mapping β See
mappings/mitre-cwe/to connect vulnerability findings to threat clusters. - Track active exploitation β See
mappings/cisa-kev/for a TLCTC-cluster view of the CISA Known Exploited Vulnerabilities catalog (1,568 CVEs, weekly-refreshable, deterministically derived). - Audit your detection coverage β See
mappings/sigma/for a per-rule TLCTC cluster derivation of 3,132 SigmaHQ detection rules β cross-walk your SOC ruleset against the strategic cluster model. - Use the glossary β See
glossary/for precise, machine-readable definitions of all TLCTC terms and cyber security vocabulary. - Learn the boundary and epistemic operators β The White Paper covers transit boundaries, intra-system boundaries, unresolved-step operators, and the epistemic state hierarchy.
- Read the extension proposals β TLCTC+ has two paired documents:
tlctc-plus-ncsc-proposal.md(v0.1 policy proposal β the why) andtlctc-plus-specification.md(v0.3 implementation spec β the how: grammar, conformance, BRE/PATTERN/IMPACT/REPORT catalogues, JSON formats). For other framework extensions, seetlctc-cve-extension-proposal.md(CVE enrichment),tlctc-fair-integration-proposal.md(FAIR risk quantification), andtlctc-replication-notation-proposal.md(replication notation β ΓN fan-out / Γ* self-propagation, conceptual). - Deploy an integration β See
integrations/to operationalise TLCTC inside the tools your team already runs. Available packs: Cortex XSOAR 6.2.x and 8.x / XSIAM (incident triage + Layer 3 emission), SonarQube + SonarCloud (SAST findings β cluster tags via a Python sidecar against the canonical CWEβTLCTC mapping), and the generic SARIF classifier (any SARIF 2.1.0 producer β TLCTC clusters; CWE-first with CVEβKEV fallback; stdlib-only). - Feed an LLM agent β Point a RAG pipeline or agent at the
okf/Open Knowledge Format bundle (markdown + YAML frontmatter) rendering the whole taxonomy β clusters, axioms, rules, glossary, attack paths, controls, and mappings β for machine consumption. Regenerate withnpm run validate.
We welcome community contributions, particularly:
- Attack path mappings of real-world incidents using TLCTC notation
- Framework integration examples (MITRE ATT&CK mappings, NIST CSF control matrices)
- Tooling that consumes or produces TLCTC JSON (see
tools/for existing standalone apps) - Integrations that operationalise TLCTC inside vendor platforms (see
integrations/for the Cortex XSOAR and SonarQube packs as reference shapes) - Glossary terms β propose new terms or refine definitions for the universal cyber security glossary
See attack-paths/CONTRIBUTING.md for guidelines.
| Resource | Description |
|---|---|
| Core Paper v2.5 (PDF) | The canonical, citable definition of the framework |
| Application Paper v2.5 (PDF) | Classification in practice, governance, controls, and indicators |
| tlctc.net | Official TLCTC website with documentation, visuals, and tools |
| White Paper | Extended practitioner handbook: boundary logic, epistemic operators, and complete notation specification |
| barnes.ch | Author's site with foundational analysis on cybersecurity's language problem |
Kreinz, B. (2026). A Cause-Oriented Cyber Threat Taxonomy: The Top Level Cyber Threat Clusters Framework (Version 2.5) [Preprint]. Zenodo. https://doi.org/10.5281/zenodo.20633176
@misc{kreinz2026tlctc,
author = {Kreinz, Bernhard},
title = {A Cause-Oriented Cyber Threat Taxonomy: The Top Level
Cyber Threat Clusters Framework},
year = {2026},
version = {2.5},
publisher = {Zenodo},
doi = {10.5281/zenodo.20633176},
url = {https://doi.org/10.5281/zenodo.20633176}
}The DOI above is the concept DOI: it always resolves to the most recent published version of the paper. To cite a specific release instead, use that version's own DOI from the Zenodo record.
All TLCTC framework definitions, notations, axioms, and JSON architectures are licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).
You are free to share and adapt this material for any purpose, including commercial use, provided you give appropriate attribution.
TLCTC was created by Bernhard Kreinz to solve cybersecurity's fundamental language problem β because you cannot manage what you cannot consistently name.